题意:

      给你一些人,这些人有很多广告,每个广告有自己的点击率和长度,每次有m组询问,问每个人点击率前K名的广告的总长度是多少.

思路:

      数据很大,很容易超时,总的想法还是先sort按照人,其次是点击率,这样就可以o(m)的时间吧每个广告的点击率排名搞定,然后在按照排名sort一变,就能用O(m)的时间吧sum[1--k]的答案打表出来,然后用O(1)的时间输出q组询问的答案就行了,刚开始因为多写了一个memset(50w的);各种超时,结果去掉之后3000多ac的..


#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace
std; typedef struct
{
int
id ,pm ,cli;
__int64
l;
}
NODE; NODE node[500000+100];
__int64
ans[500000+100]; bool camp1(NODE a ,NODE b)
{
return
a.id < b.id || a.id == b.id && a.cli > b.cli;
} bool
camp2(NODE a ,NODE b)
{
return
a.pm < b.pm;
} int main ()
{
int
n ,m ,q ,i ,j ,t ,cas = 1;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d %d %d" ,&n ,&m ,&q);
for(
i = 1 ;i <= m ;i ++)
scanf("%d %d %I64d" ,&node[i].id ,&node[i].cli ,&node[i].l);
sort(node + 1 ,node + m + 1 ,camp1);
int
k = 1 ,maxn = 0;
for(
i = 1 ;i <= m ;)
{
int
aa = 1;
while(
node[i].id == k)
{

node[i].pm = aa++;
i++;
if(
i > m)break;
}

k ++;
if(
maxn < aa - 1) maxn = aa - 1;
}
sort(node + 1 ,node + m + 1 ,camp2);
ans[0] = 0;
node[1].pm = 1;
for(
i = 1 ;i <= m ;i ++)
{
if(
node[i].pm != node[i - 1].pm)
{

ans[node[i].pm] = node[i].l + ans[node[i].pm -1];
}
else

ans[node[i].pm] += node[i].l;
}
printf("Case #%d:\n" ,cas ++);
for(
i = 1 ;i <= q ;i ++)
{
int
a;
scanf("%d" ,&a);
if(
a > maxn) a = maxn;
printf("%I64d\n" ,ans[a]);
}
}
return
0;
}

最新文章

  1. HTTP请求 GET与POST是怎么实现?
  2. React 学习资源汇总(最全的 React 学习资料)
  3. web前端工程师在移动互联网时代里的地位问题
  4. css知多少(9)——float下篇
  5. 解决阿里云数据库RDS报错The table &#39;/home/mysql/data3015/tmp/#sql_13975_23&#39; is full
  6. XMLHttpRequest基础知识
  7. Struts学习之模型驱动
  8. jquery中怎么删除&lt;ul&gt;中的整个&lt;li&gt;包括节点
  9. echarts 系列一
  10. Bug 笔记
  11. hive 创建表和导入数据实例
  12. VS2015 将*.xaml.cs文件包裹在*.xaml文件下
  13. python私有属性和私有方法
  14. ChinaCock界面控件介绍-TCCBarcodeCreator
  15. 表单元素的required,autocomplete,list用法
  16. C# 关键字const与readonly的区别
  17. __NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0xb000000000000003
  18. ubantu 上hadoop 搭建
  19. 04_web基础(七)之jsp
  20. Java内存管理(一):深入Java内存区域

热门文章

  1. C# ref and out
  2. PAT-1146(Topological Order)拓扑排序+判断一个序列是否满足拓扑序列
  3. POJ-3468(线段树+区间更新+区间查询)
  4. CentOS安装libxml2报undefined reference to `gzopen64&#39;
  5. Java 中为什么要设计包装类
  6. C语言中储存类别和内存管理
  7. 前端学习 node 快速入门 系列 —— npm
  8. 02-Spring配置文件加载
  9. javascript中的Strict模式
  10. reverse ey-or