CF_725F Family Photos
来源:互联网 发布:中国高铁 知乎 编辑:程序博客网 时间:2024/06/07 05:46
CF_725F Family Photos
http://codeforces.com/problemset/problem/725/F
题意:
有n对照片,两个人A和B轮流取。 每对照片有四个值a1,b1,a2,b2,表示第一张和第二张对A和B来说的喜悦值。 轮到一个人时,她可以选择不取,如果连续两轮中A和B都选择不取那么游戏结束。 双方都希望(自己的喜悦值 - 对方的喜悦值)尽量大。 假设两个人都采用最佳策略,求最后A的喜悦值和B的喜悦值的差值。
数据:
1 ≤ n ≤ 100 000, 0 ≤ a1,b1,a2,b2 ≤ 10^9
思路:
1. 贪心。对双方而言,A的目标是(a-b)尽量大,B目标则是使(a-b)尽量小[为负数]。 2. 按照每一对来看,有三种情况: 1) A取第一张; 2) B取第一张; 3) 双方都不取。 3. 我们分类讨论: 1)当 a1 - b2 >= a2 - b1 时,双方都想取第一张。最后的方案取决于这种情况个数的奇偶。 2)当 a1 - b2 < a2 - b1 时,双反都想取第二张,则再讨论: i)a1 > b2 时,虽然对于A来说不是最优的策略。 但是等到B选择不取的时候,A选择拿第一张的收益 [此时A的收益 > 0] 比 结束比赛 的收益大。 那么A还是会选择取这对的第一张,然后B一定会选择取第二张。 ii)b1 > a1 时,B面临着同样的情况,即B最后等到A选择不取时[相当于A放弃了先手],选择拿第一张,然后A拿第二张。 iii) 当 a1 <= b2 且 b1 <= a2 时,双方都选择忽视这对照片。 4. 最后总结起来相对于A的收益: 1 = 排序后分奇偶:(a1 - b2 ) 或者(a2 - b1) 2.1 = (a1 - b2 ) 2.2 = (a2 - b1 ) 2.3 = 0
代码
// CF 725_F Canada Cup 2016#include <map>#include <set>#include <stack>#include <queue>#include <bitset>#include <math.h>#include <vector>#include <string>#include <stdio.h>#include <cstring>#include <iostream>#include <algorithm>#include <iomanip>//#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long LL;const double eps=1e-6;const int N=100005;const int MOD=1000;const int M=1e9+7;const int INF=0x3f3f3f3f;const int mod=1000000007;const double pi=acos(-1.0);int n,m;int a1,a2,b1,b2;int s[N*2];int main(){ while (~scanf("%d",&n)) { memset(s,0,sizeof(s)); int pos=0; LL ans=0; for (int i=0;i<n;i++) { scanf("%d%d%d%d",&a1,&b1,&a2,&b2); if (a1+b1>=a2+b2) { s[pos++]=a1+b1; s[pos++]=a2+b2; ans+=a1+a2; } else if (a1>b2) ans+=a1-b2; else if (b1>a2) ans+=a2-b1; } sort(s,s+pos); for (int i=0;i<pos;i+=2) ans-=s[i]; printf("%I64d\n",ans); } return 0;}/*212 3 4 71 15 9 125 4 8 84 12 14 010 10 0 10*///Ans : 1 4 -10
0 0
- CF_725F Family Photos
- 【Codeforces725F】Family Photos {贪心}
- codeforces 725F. Family Photos
- [codeforces 725F]Family Photos
- [Photo] Share photos of my cute family
- CodeForces 725 F.Family Photos(贪心)
- codeforces 725F. Family Photos&&CQBZOJ 3268: 取相片
- Canada Cup 2016 F. Family Photos(贪心,想法,好题)
- photos
- Codeforces Canada Cup 2016 F. Family Photos 博弈 策略分析 好题
- FAMILY
- family
- Family
- Mariage Photos
- Photos(简介)
- Photos(PHObject)
- Photos(PHPhotoLibrary)
- Photos(PHAsset)
- 屏幕截屏 iOS
- zookeeper在Linux下设置开机自启动
- C++学习笔记Day 5
- Linux的du命令
- [估算] 1011: [HNOI2008]遥远的行星
- CF_725F Family Photos
- Linux内核设计学习_main函数之前过程(一)
- swift 语法、循环
- RESTful风格接口
- 解决codeforces访问慢的问题
- abp及实战框架概述
- 个人网站
- Go语言学习笔记 -- 控制结构
- ScrollView嵌套RecycleView时,RecycleView滑动不流畅(无惯性)