CodeForces 725 F.Family Photos(贪心)
来源:互联网 发布:淘宝助理怎么选类目 编辑:程序博客网 时间:2024/06/05 14:25
Description
有n组照片,每组两张,a1,b1,a2,b2分别表示A和B拿第一张和第二张照片得到的喜悦值,两人轮流拿照片,每次可以拿也可以不拿,A先,当两人都不拿或者拿完所有照片时结束,一组照片只有第一张被拿走才可以拿第二张,每次拿照片的人都想最大化自己的喜悦值与对方喜悦值之差,问两人都采取最佳策略的情况下最终A的喜悦值与B的喜悦值之差
Input
第一行一整数n表示照片组数,之后n行每行四个整数a1,b1,a2,b2分别表示A和B拿第一张和第二张照片得到的喜悦值(1<=n<=1e5,1<=a1,b1,a2,b2<=1e9)
Output
输出A的喜悦值与B的喜悦值之差
Sample Input
2
12 3 4 7
1 15 9 1
Sample Output
1
Solution
一. a1+b1 < a2+b2,双方都希望对方先取第一张(对A: a1-b2 < a2-b1;对B: b1-a2 < b2-a1)
1. a1 > b2,两人一直不取,由于a1-b2 > 0,所以A取这张照片对自己还是有利,所以A取第一张B取第二张,对答案的贡献是a1-b2
2. b1 > a2,两人一直不取,由于b1-a2 > 0,所以B取这张照片对自己还是有利,所以B取第一张A取第二张,对答案的贡献是a2-b1
3. a1<=b2且b1<=a2,两人先取对自己都没好处,所以没人取这组照片
二. a1+b1>=a2+b2,双方都希望自己先取,假设A全取,那么每组照片对答案的贡献就是a1+a2,记录a1+b1和a2+b2的值,因为如果B取了第一张照片则对答案的贡献是-(a1+b1),B取了第二张照片则对答案的贡献是-(a2+b2),记录的这些值表示B取要损失的值,把这些值排个序,由于是AB轮流取,A每次会选最大值因为A不想让答案损失太大,B每次会选最大值因为B想要答案损失最大,所以排完序后把奇数位置(假设从0开始)的给A,偶数位置的给B即可,由于把照片给A的情况对答案的贡献已经累加,所以只需要把给B的照片对答案的损失减去即可
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 222222int n,a1,b1,a2,b2,a[maxn],res; int main(){ while(~scanf("%d",&n)) { ll ans=0; res=0; for(int i=0;i<n;i++) { scanf("%d%d%d%d",&a1,&b1,&a2,&b2); if(a1+b1<a2+b2) { if(a1>b2)ans+=a1-b2; else if(b1>a2)ans+=a2-b1; } else ans+=a1+a2,a[res++]=a1+b1,a[res++]=a2+b2; } sort(a,a+res); for(int i=0;i<res;i+=2)ans-=a[i]; printf("%I64d\n",ans); } return 0;}
- CodeForces 725 F.Family Photos(贪心)
- codeforces 725F. Family Photos
- [codeforces 725F]Family Photos
- codeforces 725F. Family Photos&&CQBZOJ 3268: 取相片
- Canada Cup 2016 F. Family Photos(贪心,想法,好题)
- 【Codeforces725F】Family Photos {贪心}
- Codeforces Canada Cup 2016 F. Family Photos 博弈 策略分析 好题
- Codeforces 137A-Postcards and photos(模拟+贪心)
- CodeForces 761F. Dasha and Photos
- Codeforces Round 761F - Dasha and Photos
- CF_725F Family Photos
- CodeForces 589F -- F. Gourmet and Banquet (二分 + 贪心)
- F. Madness Codeforces 822F 贪心 构造
- 【Codeforces Gym 100187F 】+ 贪心
- codeforces-gym-100187-F【贪心】
- Codeforces 529B Group Photos 2 (one mirror version) [贪心]
- CodeForces 589F Gourmet and Banquet(贪心+二分)
- Codeforces 589F Gourmet and Banquet(二分+贪心)
- SpringBoot框架集成开发
- 电子邮件加密技术初探(2017/07/18-2017/07/20探索日志)
- 数据结构与算法1-大话数据结构
- JavaScript实现几种常见的图形
- c语言字符串的详解
- CodeForces 725 F.Family Photos(贪心)
- HDU-1072-Nightmare
- 关于length的几个点
- Java常见设计模式
- 【刷题剑指offer】两个链表的第一个公共节点
- ActiveMQ发送消息出现连接失效问题
- 用递归函数实现十进制转换为十六进制输出
- JS DOM 节点
- 关于display:inline-block问题总结