南京签到二题,博弈/思维。
https://vjudge.net/contest/412295#problem/H
1.a、b、c是王子一开始知道的。2.只有能够准确确定出才行。
把题目解读成出题人想让你理解的那样就会发现这题很简单。
特判1 0 0直接输出0即可
如果a<=b, b总可以指定一个假公主来与a对峙
如果a>b+c,那么2*(b+c)+1就肯定会有一个出现次数b+c+1的答案就是正确的公主位置。
如果a<=b+c,王子不能确定,输出“NO”。
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int a, b, c; while(cin >> a >> b >>c){ if(a==1 && b==0 && c==0){ puts("YES"); printf("0\n"); continue; } if(a <= b){ cout << "NO" << endl; continue; } if(a>b +c){ cout << "YES" << endl <<2*(b+c)+1 << endl; continue; } else{ cout << "NO" << endl; continue; } } }