我们老师自制的题:小橙子
思路:此题是思维题,用模拟的方法做此题只有 50 分。观察发现,如 果把 X 看做二进制中的 0,Y 看做二进制中的 1 的话,答案就是这个 二进制的值。这个可以用归纳法证明。所以开一个 long long/int64, 然后计算二进制的值即可。
我50,TLE了5个点awa
哪个大佬可以帮帮我优化一下......
#include <iostream>
using namespace std;
int a[52];
int main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;
std::cin >>n;
string str;
std::cin >>str;
for(int i=0;i<n;i++){
if(str[i]=='X')a[i]=1;
else a[i]=0;
}
for(int ans=0;;ans++){
a[0]++;
for(int i=0;i<n;i++){
if(a[i]>=2){
if(i+1==n){
std::cout <<ans;
return 0;
}
a[i]-=2;
a[i+1]++;
}
}
}
return 0;
}