求助!!!玄关
  • 板块灌水区
  • 楼主yjjh
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/7 17:22
  • 上次更新2024/7/8 13:14:19
查看原帖
求助!!!玄关
1036002
yjjh楼主2024/7/7 17:22

我们老师自制的题:小橙子

思路:此题是思维题,用模拟的方法做此题只有 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;
}
2024/7/7 17:22
加载中...