JZOJ5407. 【NOIP2017提高A组集训10.21】Deep
来源:互联网 发布:js 错误的数量词 编辑:程序博客网 时间:2024/06/07 05:45
Description
失败的燃烧军团想要逃回深渊,Khadgar 想要追击它们。
然而进入深渊的传送门只有一座,燃烧军团和Khadgar 各有一些法力水晶,由Khadgar 先手,双方每次可以作出如下选择:
• 使用一个法力水晶,使得传送门的法力等级增加一。
• 不用法力水晶,让对方增加等于传送门法力等级的深度,然后将传送门的法力值清零。特别地,若法力水晶数不为零且传送门法力等级为零则不能进行这样的操作。
双方都会采取最优策略使自己的最终深度与对手深度的差最大(初始时深度均为零)。
现在多次给定双方起始的法力水晶数量A, B,求Khadgar 与燃烧军团的的最终深度差。
Input
T
A1 B1
A2 B2
…
AT BT
Output
输出T 行T 个整数,表示Khadgar 与燃烧军团的的深度差。
Sample Input
2
0 1
4 1
Sample Output
-1
1
Data Constraint
对于30% 的数据,有T= 1; 0 <= A, B <= 10
对于另外20% 的数据,有T <= 10^5; 0 <= A, B <= 10^2
对于100% 的数据,有T <= 10^5; 0 <= A, B <= 10^5
题解
对于每一个自己拥有的法力水晶,最多可以给自己增加一点深度。
当对方的法力水晶为0的时候,自己手上的所有法力水晶都可以给自己增加深度。
所有,对于每一个a>b的情况,都可以转变为a=b,
然后多出来的都变为自己的深度。
无论什么时候,先手都是不利的,后手总会选择不用法力水晶,可以知道当a=b的时候,深度差值为2。
code
#include<queue>#include<cstdio>#include<iostream>#include<algorithm>#include <cstring>#include <string.h>#include <cmath>#include <math.h>#define ll long long#define N 5003#define db double#define P putchar#define G getchar#define mo 998244353using namespace std;char ch;void read(int &n){ n=0; ch=G(); while((ch<'0' || ch>'9') && ch!='-')ch=G(); ll w=1; if(ch=='-')w=-1,ch=G(); while('0'<=ch && ch<='9')n=(n<<3)+(n<<1)+ch-'0',ch=G(); n*=w;}int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}ll abs(ll x){return x<0?-x:x;}ll sqr(ll x){return x*x;}void write(ll x){if(x>9) write(x/10);P(x%10+'0');}int ans,a,b,T;int dg(int a,int b,int door,int s,bool bz){ if(a==0 && b==0 && door==0)return s; if(bz)//max -->A { int mx=-2147483647; if(door!=0 || a==0)mx=max(mx,dg(a,b,0,s-door,0)); if(a>0)mx=max(mx,dg(a-1,b,door+1,s,0)); return mx; } else //min -->B { int mi=2147483647; if(door!=0 || b==0)mi=min(mi,dg(a,b,0,s+door,1)); if(b>0)mi=min(mi,dg(a,b-1,door+1,s,1)); return mi; }}int main(){ freopen("deep.in","r",stdin); freopen("deep.out","w",stdout); read(T); while(T--) { read(a);read(b); ans=a==0 || b==0?a-b:a-b-2; if(ans<0)P('-'),write(-ans);else write(ans); P('\n'); }}
阅读全文
0 0
- JZOJ5407. 【NOIP2017提高A组集训10.21】Deep
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- 【NOIP2017提高A组集训10.21】Dark
- 【NOIP2017提高A组集训10.21】Fantasy
- 【NOIP2017提高A组集训10.21】 总结
- 【NOIP2017提高A组集训10.21】 总结
- 【NOIP2017提高A组集训10.21】Fantasy
- 【NOIP2017提高A组集训10.21】Dark
- [JZOJ5439]【NOIP2017提高A组集训10.21】Fantasy
- JZOJ 5408. 【NOIP2017提高A组集训10.21】Dark
- 【JZOJ 5409】【NOIP2017提高A组集训10.21】Fantasy
- JZOJ5409. 【NOIP2017提高A组集训10.21】Fantasy
- JZOJ5408. 【NOIP2017提高A组集训10.21】Dark DP
- 【JZOJ5408】【NOIP2017提高A组集训10.21】Dark
- JZOJ 5408 【NOIP2017提高A组集训10.21】Dark
- JZOJ 5409 【NOIP2017提高A组集训10.21】Fantasy
- 【NOIP2017提高A组集训10.24】合影
- 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
- pygame游戏之旅8:计算躲过的障碍数量
- 问题记录:同一台电脑上,两台Tomcat运行同样的webapp项目,只能一个启动成功
- Tiles使用心得,使用总结
- SpringBoot学习笔记(三):EnableAutoConfiguration作用和机制
- JZOJ5407. 【NOIP2017提高A组集训10.21】Deep
- PHP数组函数: array_walk()与 array_map() 的区别
- Kotlin 学习资源
- 周志华机器学习读后总结 第三章
- JDBC的开发步骤以及连接的简单封装
- 数据结构——关于栈的一些认识
- 异步编程
- 【机器学习】贝叶斯分类器总结
- pat甲级1002.A+B for Polynomials