JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
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
Solution
結論題。。。打表找規律即可。。。
考慮題目性質,后手總是存在一種策略每次消耗先手的一枚水晶直到先手只剩一枚
水晶然后開始使用水晶等于上述答案。否則一旦后手選擇使用水晶,則相當于先后手互換,先手一定存在相似的策略,容
易推出最后的答案一定不會更優。所以:對于 A, B 均為正整數的時候答案就是 A ? B ? 2,
否則當 B=0 就是 A ,當 A=0 時就是?B 。
Code
#include<cstdio> using namespace std; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } inline void write(int x) {if(x<0) x=-x,putchar('-');if(x>9) write(x/10);putchar(x%10+'0'); } int main() {int T=read();while(T--){int n=read(),m=read();if(!n) write(-m); elseif(!m) write(n); else write(n-m-2);putchar('\n');}return 0; }總結
以上是生活随笔為你收集整理的JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ 5414. 【NOIP2017
- 下一篇: JZOJ 5415. 【NOIP2017