日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 4020 Ads Proposal

發布時間:2024/1/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 4020 Ads Proposal 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HDU_4020

思路還是比較好想的,進行排序再統計即可,但是不同的處理方式之間存在著時間的差距。

我后來選擇的方式是,先將所有數據的標號r[i]依點擊次數進行排序,然后初始化一個數組hash[]=0hash[i]表示依次遍歷時customer i出現的次數,用一個數組ans[i]來記錄每個customer點擊率排行第i的廣告的總的長度,即在遍歷的時候令ans[++hash[r[i]]]+=click[r[i]]即可。

最后再用一個數組res[i]來表示每個customer點擊率在第i位及之前的所有廣告的總長度。

#include<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int N,M,Q,U,C,L;
int name[500110],r[500110],q;
double click[500010],len[500110];
double ans[500110],res[500110];
int hash[100110];
int cmp(const void *_p,const void *_q)
{
int *a=(int *)_p;
int *b=(int *)_q;
return click[*a]>click[*b]?-1:1;
}
int main()
{
int i,j,k,n,t,tt,cur;
scanf(
"%d",&t);
for(tt=0;tt<t;tt++)
{
scanf(
"%d%d%d",&N,&M,&Q);
for(i=0;i<M;i++)
{
scanf(
"%d%lf%lf",&name[i],&click[i],&len[i]);
r[i]
=i;
}
qsort(r,M,
sizeof(r[0]),cmp);
for(i=1;i<=N;i++)
hash[i]
=0;
for(i=1;i<=M;i++)
ans[i]
=0.0;
for(i=0;i<M;i++)
{
hash[name[r[i]]]
++;
ans[hash[name[r[i]]]]
+=len[r[i]];
}
res[
0]=0;
for(i=1;i<=M;i++)
{
res[i]
=ans[i]+res[i-1];
}
printf(
"Case #%d:\n",tt+1);
for(i=0;i<Q;i++)
{
scanf(
"%d",&q);
if(q>M)
printf(
"%.0f\n",res[M]);
else
printf(
"%.0f\n",res[q]);
}
}
return 0;
}

  

總結

以上是生活随笔為你收集整理的HDU 4020 Ads Proposal的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。