题目大意:
  有a,b两个人分糖,每个人都有一个能量值。
  每个人每一轮可以选择进行两种操作:
    1.取走最左边的糖果,补充相应的能量值并获取相应的美味度。
    2.跳过这一轮,能量值-1.
  问在每个人都采取最优决策的情况下,每个人能获得最多的美味度是多少?

思路:
  动态规划。
  f[i][j]表示吃第i~n的糖,并获得j的美味度,两人能量值之差最小是多少。
  如果轮到的人选择吃,那么f[i][j]=-f[i+1][suf[i]-j+1]-r[i]+1;
  如果不吃,那么f[i][j]=max(f[i+1][j]+r[i]+1,1)。
  不吃的时候要满足能量值之差>=1,因为对方同样可以通过不吃补回来。
  最后的答案k为满足f[0][k]<=a-b的最大值,糖果最后一定能吃完,所以只要减一下就得到了两个答案。

 #include<cstdio>
#include<cctype>
#include<algorithm>
typedef long long int64;
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int64 inf=0x4000000000000000ll;
const int N=;
int r[N],s[N],suf[N];
int64 f[][N];
int main() {
const int n=getint(),a=getint(),b=getint();
for(register int i=;i<n;i++) {
r[i]=getint(),s[i]=getint();
}
for(register int i=n-;~i;i--) {
suf[i]=suf[i+]+s[i];
}
for(register int i=;i<=s[n-];i++) {
f[!(n&)][i]=-inf;
}
for(register int i=s[n-]+;i<=suf[];i++) {
f[!(n&)][i]=inf;
}
for(register int i=n-;~i;i--) {
for(register int j=suf[i];~j;j--) {
if(s[i]>=j) {
f[i&][j]=-inf;
while(j--) f[i&][j]=-inf;
break;
}
f[i&][j]=-f[!(i&)][suf[i]-j+]-r[i]+;
if(j<=suf[i+]) {
f[i&][j]=std::min(f[i&][j],std::max(1ll,f[!(i&)][j]+r[i]+));
}
}
}
for(register int i=suf[];~i;i--) {
if(f[][i]<=a-b) {
printf("%d %d\n",i,suf[]-i);
return ;
}
}
}

最新文章

  1. Oracle Dataguard之switchover
  2. C# 中 SQLite 使用介绍
  3. java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字
  4. SQL语句 递归
  5. struts2与spring集成时action的class属性值意义
  6. HTML5 display:inline、block、inline-block的区别--备用
  7. 跟着Android学设计模式:代理(proxy)
  8. Liunx初学指令
  9. 前端leader找我谈心:我是如何从刚毕业的前端菜鸟一步步成长为前端架构师的?
  10. JavaScript中如何检测一个变量是一个String类型?
  11. 微博第三方登录使用social_django实现显示登陆的用户名
  12. 使用libcurl 发送post请求
  13. 51Nod 1048 1383 整数分解为2的幂
  14. 多线程开发之三 GCD
  15. df
  16. 树形控件(CTreeCtrl和CTreeView)
  17. Problem4-Project Euler
  18. Java与PHPweb开发比较
  19. DataTable转换成实体
  20. TED_Topic6:How to raise a black son in America

热门文章

  1. 记一次Powershell反混淆 (1)
  2. 基于ansj_seg和nlp-lang的简单nlp工具类
  3. Django 1.10中文文档-第一个应用Part4-表单和通用视图
  4. Nginx集群配置与redis的session共享策略
  5. 小知识-为什么Linux不需要磁盘碎片整理
  6. JDK1.8源码泛读之Arrays
  7. 将xml文件转为c#对像
  8. NYOJ 228 士兵杀敌(五)【差分标记裸题】
  9. CodeForces 731D 80-th Level Archeology
  10. 洛谷P2874 [USACO07FEB]新牛棚Building A New Barn [贪心]