博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CodeForces】913 D. Too Easy Problems
阅读量:7176 次
发布时间:2019-06-29

本文共 1484 字,大约阅读时间需要 4 分钟。

【题目】

【题意】给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数。n<=2*10^5,T<=10^9。

【算法】贪心(排序+堆)

【题解】因为T太大,不能考虑背包。

容易发现k越小越能使更多问题有效,所以一定有最优方案的所有问题均有效。

当k唯一确定时,其实就是在所有ai>=k的问题中选取时间最少的几个解决。

当k减小时,选择的范围扩大,就可以选择一些时间更少的替换掉已选问题中时间最长的,这显然可以用堆维护。

所以得到做法——按k从大到小排序,然后依次扫描,维护一个时间大顶堆,每次:

1.若当前k>size(堆大小),弹出堆顶至size=k。

2.若堆中可以直接加入当前问题(k<size和满足时限),则直接加入。

3.否则考虑是否可以替换堆顶,可以则替换。

每次统计答案,找到最大值。

观察三个操作,容易发现当出现k>size的情况后,答案不可能再变大,也就是答案是一个凸函数,顶点出现在k>size时。

所以只需要再k>size输出当前堆中元素即是答案。

复杂度O(n log n)。

#include
#include
#include
#include
using namespace std;int read(){ char c;int s=0,t=1; while(!isdigit(c=getchar()))if(c=='-')t=-1; do{s=s*10+c-'0';}while(isdigit(c=getchar())); return s*t;}const int inf=0x3f3f3f3f,maxn=200010;int n;struct cyc{ int k,t,id;}a[maxn];struct node{ int id,t; bool operator < (const node &a)const{ return t
Q;bool cmp(cyc a,cyc b){
return a.k>b.k;}int T;int main(){ n=read();T=read(); for(int i=1;i<=n;i++)a[i].k=read(),a[i].t=read(),a[i].id=i; sort(a+1,a+n+1,cmp); int size=0,time=0; for(int i=1;i<=n;i++){ if(size>a[i].k){printf("%d\n%d\n",size,size);while(!Q.empty())printf("%d ",Q.top().id),Q.pop();return 0;} if(size
<=T)Q.push((node){a[i].id,a[i].t}),size++,time+=a[i].t; else if(!Q.empty()&&a[i].t
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/8250650.html

你可能感兴趣的文章
开源计划--格瓦拉梦想(GUEVARA‘S DREAM)
查看>>
show full columns 和 checking privileges的说明
查看>>
电信网络拓扑图自动布局之总线
查看>>
数据库启动时报ORA-00845错误解决方法
查看>>
查询阿里云存储文件并导出excle 保存到本地
查看>>
WebService-—调用第三方提供的webService服务
查看>>
LVM报错:resize2fs: Bad magic number in super-block
查看>>
从开发到部署会用到的 Docker 命令
查看>>
access数据库转mysql数据库
查看>>
CISCO服务器配置RAID步骤
查看>>
利用makefile文件编译c++源文件
查看>>
VS 0xC0000005 运行错误分析
查看>>
ASP.NET中TextBox控件设置ReadOnly="true"后台取不到值
查看>>
找出Java进程ID pid的N种方法
查看>>
SSH和SFTP简介
查看>>
借助JRebel使Tomcat支持热部署
查看>>
基于Mozilla Thunderbird的扩展开发(八)---进程间通信之Socket篇(续)
查看>>
让eclipse像idea一样炫起来
查看>>
函数上下文 this 判断技巧。
查看>>
Flutter如何实现网易云音乐tabbar嵌套呢
查看>>