CF1203F2 Complete the Projects (hard version)(结论+背包+贪心)
题目
做法
对于加分的直接贪心
而掉分的用排序后的背包动规
假设有两个物品\((a_1,b_1)(a_2,b_2)\)
选第一个物品后无法选择第二个物品,假设开始值为\(r\):\(r>a_1,r+b_1<a_2\Longrightarrow r<a_2-b_1\)
如果先选择第二个物品后可以选择第一个物品:\(r>a_2,r+b_2\ge a_1\Longrightarrow r\ge a_1-b_2\)
则当\(a_1-b_2\le a_2-b_1\)时,先选择\(2\)更优:\(a_1+b_1\le a_2+b_2\)
我们按照\(a+b\)排序后直接动规即可
细节:在处理背包时要根据\(a\)的限制转移
Code
#include<bits/stdc++.h>
typedef int LL;
inline LL Read(){
LL x(0),f(1); char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0' && c<='9'){
x=(x<<3)+(x<<1)+c-'0'; c=getchar();
}return x*f;
}
const LL maxn=1e2+9,inf=0x3f3f3f3f;
struct node{
LL x,y;
}a[maxn],b[maxn];
LL n,r,ans,tot1,tot2;
LL f[60009];
inline bool cmp1(node xx,node yy){
return xx.x<yy.x;
}
inline bool cmp2(node xx,node yy){
if(xx.x+xx.y==yy.x+yy.y) return xx.x<yy.x;
else return xx.x+xx.y>yy.x+yy.y;
}
int main(){
n=Read(); r=Read();
for(LL i=1;i<=n;++i){
LL x(Read()),y(Read());
if(y>=0) a[++tot1]=(node){x,y};
else b[++tot2]=(node){x,y};
}
std::sort(a+1,a+1+tot1,cmp1);
for(LL i=1;i<=tot1;++i){
if(r>=a[i].x) r+=a[i].y,++ans;
else break;
}
std::sort(b+1,b+1+tot2,cmp2);
memset(f,-inf,sizeof(f));
f[r]=ans;
for(LL i=1;i<=tot2;++i)
for(LL j=b[i].x;j<=60000;++j){
if(j+b[i].y<0) continue;
f[j+b[i].y]=std::max(f[j+b[i].y],f[j]+1);
}
for(LL i=0;i<=60000;++i) ans=std::max(ans,f[i]);
printf("%d\n",ans);
return 0;
}
CF1203F2 Complete the Projects (hard version)(结论+背包+贪心)的更多相关文章
- Codeforces1203F2. Complete the Projects (hard version) (贪心+贪心+01背包)
题目链接:传送门 思路: 对于对rating有提升的项目,肯定做越多越好,所以把$b_{i} >= 0$的项目按rating要求从小到大贪心地都做掉,得到最高的rating记为r. 对于剩余的$ ...
- Codeforces 1203F1 Complete the Projects (easy version)
cf题面 Time limit 2000 ms Memory limit 262144 kB 解题思路 看见这题觉得贪心可做,那就贪吧.(昨天真是贪心的一天,凌晨才被这两道贪心题虐,下午多校又来,感觉 ...
- Codeforces 1203F2. Complete the Projects (hard version)
传送门 首先对于 $b>0$ 的工作显然有个贪心,把 $b>0$ 的按 $a$ 从小到大排序 把能做的都做了,然后得到一个最大等级 剩下就是考虑 $b<0$ 的工作了,看到数据显然可 ...
- Complete the Projects
F1. Complete the Projects (easy version) F2. Complete the Projects (hard version) 参考:Complete the Pr ...
- 集训第四周(高效算法设计)L题 (背包贪心)
Description John Doe is a famous DJ and, therefore, has the problem of optimizing the placement of ...
- How to manage IntelliJ IDEA projects under Version Control Systems
如何在版本控制系统中管理 IntelliJ IDEA 项目文件 IntelliJ IDEA 设置详细,功能强大.在实际工作中,我们有时会遇到跟同事共享项目文件的情况. 那么,有哪些项目文件应该加入到版 ...
- Codeforces Round #579 (Div. 3) Complete the Projects(贪心、DP)
http://codeforces.com/contest/1203/problem/F1 Examples input 1 - - output 1 YES input 2 - - output 2 ...
- HDU -2546饭卡(01背包+贪心)
这道题有个小小的坎,就是低于5块不能选,大于5块,可以任意选,所以就在初始条件判断一下剩余钱数,然后如果大于5的话,这时候就要用到贪心的思想,只要大于等于5,先找最大的那个,然后剩下的再去用背包去选择 ...
- HDU--3466(0-1背包+贪心/后效性)
题意是: 给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品有 价格 P 价值 V 还有一个很特别的属性 Q, Q 指 你如过想买这件物品 你的手中至少有这钱Q . 虽 ...
随机推荐
- 【转载】C#中使用Average方法对List集合中相应元素求平均值
在C#的List集合操作中,有时候需要对List集合元素进行汇总求平均值,如数值类型的List集合元素,有时候对象类型的List集合也需要对集合中的元素的某个对象进行汇总求平均值,此时都可以使用到Av ...
- vue中v-if和v-for指令最好不要同时使用
建议不要在与v-for相同的元素上使用v-if.因为v-for指令的优先级高于v-if当它们处于同一节点.v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for ...
- Go strconv模块:字符串和基本数据类型之间转换
本文转自Golove博客:http://www.cnblogs.com/golove/p/3262925.html ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRU ...
- MySQL Backup--Xtrabackup远程备份和限速备份
使用xbstream 备份到远程服务器 ##xbstream 备份到远程服务器 innobackupex \ --defaults-file="/export/servers/mysql/e ...
- MySQL Transaction--网络丢包导致长时间未提交事务
TCP三次握手(Three-Way Handshake) 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立. TCP三次握手:第一次握手:Client将标志位SYN置为1,随机产 ...
- 加密类型、数据加密解密过程以及CA创建
对称加密算法 对称加密:加密和解密使用同一个密钥 DES:Data Encryption Standard,56bits 3DES: AES:Advanced (, , 256bits) Blowfi ...
- oracle更改数据库字符集
shutdown immediate; startup mount; alter system enable restricted session; alter system set job_queu ...
- mysql Starting MySQL..The server quit without updating PID file
可能的原因和解决办法 1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限解决方法 :给予权限,执行 chown -R mysql:mysql /var/data ...
- MySQL线程状态详解
前言: 我们常用 show processlist 或 show full processlist 查看数据库连接状态,其中比较关注的是 State 列,此列表示该连接此刻所在的状态.那么你真的了解不 ...
- 华为云PaaS首席科学家:Cloud Native +AI,企业数字化转型的最佳拍档
近日,在2019华为全球分析师大会期间,华为云PaaS首席科学家熊英博士在+智能,见未来(华为云&大数据)的分论坛上,从云计算行业发展谈起,深入云原生发展趋势,对华为云智能应用平台做了深度解读 ...