[ARC177B] Puzzle of Lamps

WuMin4發表於2024-08-21

[ARC177B] Puzzle of Lamps

思路

首先可以發現這題並沒有限制最少操作步驟,於是逆序遍歷序列,若要將位置 $i$ 的數字變成 $1$ (下標從 $0$ 開始),則先執行 $i+1$ 次操作 $A$,再執行 $i$ 次操作 $B$,這樣可以保證只將位置 $i$ 的數字變成 $1$。由於是逆序遍歷,所以不會影響後面的數字。

程式碼

#include <bits/stdc++.h>
using namespace std;
int cnt,n;
string s,res;
signed main() {
	cin>>n>>s;
	for(int i=s.length()-1;i>=0;i--)
		if(s[i]=='1'){
			cnt+=2*i+1;
			for(int j=1;j<=i+1;j++) res=res+"A";
			for(int j=1;j<=i;j++) res=res+"B";
		}
	cout<<cnt<<endl<<res;
	return 0; 
}