[BZOJ5046]分糖果游戏
2024-08-27 16:11:14
题目大意:
有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 ;
}
}
}
最新文章
- Oracle Dataguard之switchover
- C# 中 SQLite 使用介绍
- java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字
- SQL语句 递归
- struts2与spring集成时action的class属性值意义
- HTML5 display:inline、block、inline-block的区别--备用
- 跟着Android学设计模式:代理(proxy)
- Liunx初学指令
- 前端leader找我谈心:我是如何从刚毕业的前端菜鸟一步步成长为前端架构师的?
- JavaScript中如何检测一个变量是一个String类型?
- 微博第三方登录使用social_django实现显示登陆的用户名
- 使用libcurl 发送post请求
- 51Nod 1048 1383 整数分解为2的幂
- 多线程开发之三 GCD
- df
- 树形控件(CTreeCtrl和CTreeView)
- Problem4-Project Euler
- Java与PHPweb开发比较
- DataTable转换成实体
- TED_Topic6:How to raise a black son in America
热门文章
- 记一次Powershell反混淆 (1)
- 基于ansj_seg和nlp-lang的简单nlp工具类
- Django 1.10中文文档-第一个应用Part4-表单和通用视图
- Nginx集群配置与redis的session共享策略
- 小知识-为什么Linux不需要磁盘碎片整理
- JDK1.8源码泛读之Arrays
- 将xml文件转为c#对像
- NYOJ 228 士兵杀敌(五)【差分标记裸题】
- CodeForces 731D 80-th Level Archeology
- 洛谷P2874 [USACO07FEB]新牛棚Building A New Barn [贪心]