最高的奖励

思路:

  排序;

  时间为第一关键字,按总小到大排;

  价值为第二关键字,按从大到小排;

  然后,不难看出,如果两个时间不同;

  那么,两个时间之间最少能做一件事;

  因为他们的时间下限最少相差1;

  然后我们记录每个时间要做的事;

  如果同一时间要做很多事,则选择其中最大的一个;

  看似正确的题解,其实很不对。。。

  我们需要用一个堆来记录已经做了的事的最小值;

  如果遇到一个因为时间限制不能做的事,则判断当前的事的价值是否大于堆顶;

  如果大于,则ans+=当前事的价值-堆顶,然后堆顶出队,当前事的价值入队;

  如果还是不懂看代码吧。。。

来,上代码:

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define maxn 50005 struct NodeType {
int ti,ci;
};
struct NodeType ai[maxn]; int n; long long ans; priority_queue<int>que; inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} inline bool cmp(NodeType iposa,NodeType iposb)
{
if(iposa.ti==iposb.ti) return iposa.ci>iposb.ci;
else return iposa.ti<iposb.ti;
} int main()
{
in(n);int cnt=;
for(int i=;i<=n;i++) in(ai[i].ti),in(ai[i].ci);
sort(ai+,ai+n+,cmp);
for(int i=;i<=n;i++)
{
if(cnt<ai[i].ti) cnt++,ans+=ai[i].ci,que.push(-ai[i].ci);
else
{
int op=-que.top();
if(ai[i].ci>op)
{
ans-=op,que.pop(),ans+=ai[i].ci;
que.push(-ai[i].ci);
}
}
}
cout<<ans;
return ;
}

最新文章

  1. 修改安卓串口蓝牙app问题记录
  2. mysql搜索引擎 小结
  3. vmware启动虚拟机报“内部错误”的解决方法
  4. 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
  5. Android IOS WebRTC 音视频开发总结(三四)-- windows.20150706
  6. -webkit-filter属性用来干什么
  7. 编写一个函数,接受三个string参数,s,oldVal和newVal。使用迭代器及insert和erase函数将s中所有oldVal替换为newVal。测试你的程序,用他替换通用的简写形式,如,将“tho”,将“”“”
  8. iOS方法封装
  9. Eclipse添加小工具_打开当前文件所在文件夹
  10. Java使用LdAP获取AD域用户
  11. 执行 npm run update-webdriver 提示文件不能获取错误
  12. Linux下文件误删除恢复案例
  13. CentOS_5.6下使用cmake编译MySQL_5.5.11教程
  14. Linux 如何使用echo指令向文件写入内容
  15. ALS交替最小二乘法总结
  16. 安卓入门——————简单记账本的开发(二)-点击listview跳转并实现数据的更新
  17. image management in kubernet
  18. springboot shiro 项目前端页面访问问题总结
  19. Android-启动页“android:windowBackground”变型?
  20. 二进制部署 Kubernetes 集群

热门文章

  1. Dialogue between Jack and Rose【jack 和 Rose的对话】
  2. 洛谷P1162 填涂颜色
  3. logback mybatis 打印sql语句
  4. loj6392 「THUPC2018」密码学第三次小作业 / Rsa
  5. WebApp开发技巧
  6. jeakins+maven+jmeter构建性能测试自动化( 在eclipse里运行如果出现没有找到“*.loadtest.xls”,请将此文件名修改为你对应使用的xsl文件名)
  7. CentOS7 haproxy+keepalived实现高可用集群搭建
  8. hibernate级联查询映射的两种方式
  9. BZOJ4650 [NOI2016]优秀的拆分 【后缀数组】
  10. docke存储