分析:Pwin代表Polycarp走的步数,而Win代表Vasiliy走的步数,则有Pwin=p.x+p.y,Vwin=max(v.x,v.y);显然若Pwin<=Win,肯定是Vasiliy胜,下面我们在考虑一种情况,若p.x<=v.x&&p.y<=v.y&&p.x>0,p.y>0,显然在这种情况下Polycarp一定可以对Vasiliy进行阻挡,是Vasiliy位于其后面,所以也是Polycarp胜。其他情况下无法进行阻挡,则一定是Vasiliy胜。这是一道很好的博弈题
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cmath> 6 #include<vector> 7 #include<algorithm> 8 #include<cctype> 9 #include<queue> 10 #include<stack> 11 #include<map> 12 #include<set> 13 #include<bitset> 14 using namespace std; 15 typedef struct Point 16 { 17 int x,y; 18 }Point; 19 int main() 20 { 21 Point p,v; 22 while(cin>>p.x>>p.y>>v.x>>v.y) 23 { 24 int Pwin=p.x+p.y; 25 int Vwin=max(v.x,v.y); 26 if(Pwin<=Vwin){ 27 cout<<"Polycarp"<<endl; 28 } 29 else{ 30 if(p.x<=v.x&&p.y<=v.y){ 31 cout<<"Polycarp"<<endl; 32 } 33 else 34 cout<<"Vasiliy"<<endl; 35 } 36 37 } 38 return 0; 39 }