AC日记——最高奖励 51nod 1163
2024-08-22 20:38:33
思路:
排序;
时间为第一关键字,按总小到大排;
价值为第二关键字,按从大到小排;
然后,不难看出,如果两个时间不同;
那么,两个时间之间最少能做一件事;
因为他们的时间下限最少相差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 ;
}
最新文章
- 修改安卓串口蓝牙app问题记录
- mysql搜索引擎 小结
- vmware启动虚拟机报“内部错误”的解决方法
- 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
- Android IOS WebRTC 音视频开发总结(三四)-- windows.20150706
- -webkit-filter属性用来干什么
- 编写一个函数,接受三个string参数,s,oldVal和newVal。使用迭代器及insert和erase函数将s中所有oldVal替换为newVal。测试你的程序,用他替换通用的简写形式,如,将“tho”,将“”“”
- iOS方法封装
- Eclipse添加小工具_打开当前文件所在文件夹
- Java使用LdAP获取AD域用户
- 执行 npm run update-webdriver 提示文件不能获取错误
- Linux下文件误删除恢复案例
- CentOS_5.6下使用cmake编译MySQL_5.5.11教程
- Linux 如何使用echo指令向文件写入内容
- ALS交替最小二乘法总结
- 安卓入门——————简单记账本的开发(二)-点击listview跳转并实现数据的更新
- image management in kubernet
- springboot shiro 项目前端页面访问问题总结
- Android-启动页“android:windowBackground”变型?
- 二进制部署 Kubernetes 集群
热门文章
- Dialogue between Jack and Rose【jack 和 Rose的对话】
- 洛谷P1162 填涂颜色
- logback mybatis 打印sql语句
- loj6392 「THUPC2018」密码学第三次小作业 / Rsa
- WebApp开发技巧
- jeakins+maven+jmeter构建性能测试自动化( 在eclipse里运行如果出现没有找到“*.loadtest.xls”,请将此文件名修改为你对应使用的xsl文件名)
- CentOS7 haproxy+keepalived实现高可用集群搭建
- hibernate级联查询映射的两种方式
- BZOJ4650 [NOI2016]优秀的拆分 【后缀数组】
- docke存储