HDU_4020

思路还是比较好想的,进行排序再统计即可,但是不同的处理方式之间存在着时间的差距。

我后来选择的方式是,先将所有数据的标号r[i]依点击次数进行排序,然后初始化一个数组hash[]=0,hash[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相关推荐

  1. HDU 5515 Game of Flying Circus 二分

    Game of Flying Circus Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  2. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

  3. TwinCAT3之Ads通讯——1、控制器和控制器间通讯

    目录 1 简介 2 硬件连接 3.工程和配置 3.1 Ads Mast主工程 3.2 创建从机工程 4 Ads主机中读写操作测试 4.1 Mast读操作 4.2 Mast写操作 1 简介 ADS通讯是 ...

  4. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  5. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  6. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  7. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

  8. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  9. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

最新文章

  1. (转)详解css3弹性盒模型(Flexbox)
  2. C# 中的委托和事件(1)
  3. Laravel 5.4: 特殊字段太长报错 420000 字段太长
  4. Windows多线程应用程序的编译和链接
  5. 从哪些角度进行手机软件测试
  6. Servlet→对象监听器、事件监听器、Session钝化活化、@WebListener标注、过滤器概念原理生命周期、过滤器链、@WebFilter标注、定时器Timer、cancel()、purge
  7. 基于docker的php调用基于docker的mysql数据库的方法
  8. linux iptables 防火墙
  9. mongodb 分组聚合_MongoDB学习笔记整理,赶紧收藏起来吧
  10. 苹果Mac专业级照片编辑器:RAW Power
  11. 【渝粤题库】陕西师范大学209019 鲁迅研究 作业(专升本)
  12. 【Grafana】通过阿里云日志服务监控Nginx访问日志显示统计信息
  13. python做正态分布的例子_python实现正态分布
  14. DRILLNET 2.0------第二十二章 井眼地热模拟模型
  15. JAVA基础之设计模式和枚举
  16. java 6面骰子_java 垒骰子
  17. NLP情感分析基础知识
  18. Lync / Skype for Business登录界面UI切换
  19. python win32处理Excel(方法篇)
  20. Android 手势小试牛刀

热门文章

  1. web站点放入html页面,HTML
  2. 计算机usb共享网络泄密,杜绝USB泄密 MyUSBOnly
  3. linux crontab日志,crontab的用法---linux定时任务
  4. mysql code name作为字段_MySQL索引管理及执行计划
  5. java广度优先遍历
  6. 一个sql题目, 统计每年每月的信息
  7. 华为AR engine 应用开发学习教程
  8. 第三方快递接口API调用
  9. 一文带你马上清楚bootstrap的栅格系统
  10. python垃圾回收 (GC) 机制