【codeforces 731E】Funny Game
【题目链接】:http://codeforces.com/contest/731/problem/E
【题意】
两个人轮流玩游戏;
取序列中的前k(k>1)个数字,拿出来;
把这k个数字全部加起来合成一个数字;
再把这个新的数字放在序列的开头;
新合成的数字是这个人这轮游戏获得的分数;
一直玩直到只剩下一个数字为止;
把每一个人的分数统计出来;
问最后,第一个人比第二个人的分数高,最多能高出多少.
【题解】
每次玩完一轮游戏之后,
另外一个人取第j个;
实际上还是取原序列的前j个数的和;
设
f[i][0]表示前i个数字都合在一起了,然后当前轮到第一个人玩,第一个人比第二个人高出的分数;
f[i][1]表示前i个数字都合在一起了,然后当前轮到第二个人玩,第一个人比第二个人高出的分数;
(为负数就表示第二个人比第一个人的分数高)
显然,第二个人玩的时候,必然想让f值变小;
而第一个人玩的时候,必然想让f值变大;
则根据这个逆推
f[i][0]=max(f[j][1]+sum[j]),i<j<=n
f[i][1]=min(f[j][0]−sum[j]),i<j<=n
因为第二个人取的时候是让f值变小的,所以是减去sum[j],然后取最小值就是了;
这里可以O(1)维护i+1..n这个范围里面f[i][1]+sum[j]的最大值,f[i][0]-sum[j]的最小值;
所以复杂度能做到O(N);
最后输出f[1][0]就是了;
(即前1个数合在了一起,然后到第一个人取,第一个人比第二个人高出的最大分数);
【Number Of WA】
0
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 2e5+100;
int n,a[N];
LL sum[N],dp[N][2],ma1,mi0;
int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
//init??????
cin >> n;
rep1(i,1,n) cin >> a[i];
rep1(i,1,n)
sum[i] = sum[i-1]+a[i];
dp[N][0] = dp[N][1] = 0;
ma1 = dp[n][1] + sum[n],mi0 = dp[n][0]-sum[n];
rep2(i,n-1,1)
{
dp[i][0] = ma1;
dp[i][1] = mi0;
if (dp[i][0]-sum[i]<mi0)
mi0 = dp[i][0]-sum[i];
if (dp[i][1]+sum[i]>ma1)
ma1 = dp[i][1]+sum[i];
}
cout << dp[1][0] << endl;
return 0;
}
【codeforces 731E】Funny Game的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- 【Codeforces 429D】 Tricky Function
[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...
- 【Codeforces 670C】 Cinema
[题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...
- 【codeforces 515D】Drazil and Tiles
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...
随机推荐
- [SCSS] Convert SCSS Variable Arguments to JavaScript
We will learn how to convert variable arguments by using rest operator in JavaScript. .sass-btn { co ...
- POJ 3126 Prime Path SPFA
http://poj.org/problem? id=3126 题目大意: 给你两个四位的素数s和t,要求每次改变一个数字.使得改变后的数字也为素数,求s变化到t的最少变化次数. 思路: 首先求出全部 ...
- 各种JSON的maven引用
一.jackjson maven <jackjson.version>2.8.8</jackjson.version> <dependency> <group ...
- Cache操作类
封装类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- poj--1274--The Perfect Stall(最大匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21665 Accepted: 973 ...
- Gym-101915A Printing Books 模拟
题面 题意:给你N,X, X表示这本书从X开始编号,每个X是几位数,计数器就加几, 然后问你如果从X,开始编号,计数器为N的时候,翻了几页,不能刚好为N输出-1. (例如,5 99,答案为2,因为 ...
- 树莓派-基于aria2实现离线下载
安装aria2 aria2是linux下的一个下载工具,它支持http.bt种子.磁力链接三种方式下载 sudo apt-get install aria2 配置aria2 aria2支持命令参数,也 ...
- The name ‘InitialzeComponent’ does not exist in the current context
在Visual Studio中创建Windows Store项目,在MainPage.xaml.cs中出现错误: The name 'InitialzeComponent' does not exis ...
- Choerodon 的微服务之路(二):Choerodon 的微服务网关
链接地址:https://my.oschina.net/choerodon/blog/2254030
- vue-router 原理解析
“更新视图但不重新请求页面”是前端路由原理的核心之一,