因为布总能赢石头,所以这个题只有一个原则:能出布就出布
但要注意 $ x_i \le y_i $ 的限制,它说明出石头的数量要大于出布的数量,如果出布的数量等于石头的数量,就必须出石头满足题目要求。
代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
string s;
int main()
{
int ans=0;
int x=0;//石头的数量
int y=0;//布的数量
cin>>s;
int len=s.size();
for(int i=0;i<len;++i)
{
if(x==y)//题目规定,石头的数量大于等于布的数量,这时只能出石头
{
x++;
if(s[i]=='p') ans--; //如果对手出布就减一分
continue;
}
y++;
if(s[i]=='g') ans++;//如果对手出石头就加一分
}
cout<<ans<<endl;
return 0;
}
求过