JZOJ5407. 【NOIP2017提高A组集训10.21】Deep
2017-10-21 22:38
417 查看
Description
失败的燃烧军团想要逃回深渊,Khadgar 想要追击它们。然而进入深渊的传送门只有一座,燃烧军团和Khadgar 各有一些法力水晶,由Khadgar 先手,双方每次可以作出如下选择:
• 使用一个法力水晶,使得传送门的法力等级增加一。
• 不用法力水晶,让对方增加等于传送门法力等级的深度,然后将传送门的法力值清零。特别地,若法力水晶数不为零且传送门法力等级为零则不能进行这样的操作。
双方都会采取最优策略使自己的最终深度与对手深度的差最大(初始时深度均为零)。
现在多次给定双方起始的法力水晶数量A, B,求Khadgar 与燃烧军团的的最终深度差。
Input
TA1 B1
A2 B2
…
AT BT
Output
输出T 行T 个整数,表示Khadgar 与燃烧军团的的深度差。Sample Input
20 1
4 1
Sample Output
-11
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 998244353 using 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'); } }
相关文章推荐
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- JZOJ 5408. 【NOIP2017提高A组集训10.21】Dark
- 【JZOJ5408】【NOIP2017提高A组集训10.21】Dark
- 【JZOJ 5409】【NOIP2017提高A组集训10.21】Fantasy
- [JZOJ5439]【NOIP2017提高A组集训10.21】Fantasy
- JZOJ5409. 【NOIP2017提高A组集训10.21】Fantasy
- JZOJ 5409 【NOIP2017提高A组集训10.21】Fantasy
- JZOJ 5408 【NOIP2017提高A组集训10.21】Dark
- 【JZOJ 5417】【NOIP2017提高A组集训10.24】方阵
- 【JZOJ 5413】【NOIP2017提高A组集训10.22】清兰
- 【JZOJ5424】【NOIP2017提高A组集训10.25】凤凰院凶真
- JZOJ 5425. 【NOIP2017提高A组集训10.25】数论
- 【JZOJ 5431】【NOIP2017提高A组集训10.28】序列操作
- [置顶] 【JZOJ5429】【NOIP2017提高A组集训10.27】排列
- jzoj5436 【NOIP2017提高A组集训10.30】Group
- JZOJ 5437. 【NOIP2017提高A组集训10.31】Sequence
- 【JZOJ 5410】【NOIP2017提高A组集训10.22】小型耀斑
- 【JZOJ5410】【NOIP2017提高A组集训10.22】小型耀斑
- [JZOJ5422]【NOIP2017提高A组集训10.25】天才绅士少女助手克里斯蒂娜