您的位置:首页 > 其它

JZOJ5407. 【NOIP2017提高A组集训10.21】Deep

2017-10-21 22:38 417 查看

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 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');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: