建议黄或绿

P1203 [USACO1.1] 坏掉的项链 Broken Necklace

@[realskc](/user/35672) @[_bzy](/user/213388)
by CEFqwq @ 2024-03-14 19:39:57


另附上我五年级的时候过这道题的代码(格式化了一下),就这道题目而言已经很简洁了。 ```cpp #include<bits/stdc++.h> using namespace std; int n, q; char a[10005], b[10005]; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin >> n >> a; for (int i = 0; i < n; i++) if (a[i] == 'w') q++; if (q == n){ cout << n; exit(0); } strcpy(b, a); strcat(a, b); int mx = 0; for (int i = 0; i < (n << 1); i++){ int L = 0, R = 0, xz = 0; for (int j = i; j >= i - n && j >= 0; j--){ if (a[j] == 'r'){ if (L == 2 || !j || j == i - n){ xz += i + 1 - j; if (L == 2) xz--; break; } L = 1; }else if (a[j] == 'b' || j == 0 || j == i - n){ if (L == 1){ xz += i + 1 - j; if (L == 1) xz--; break; } L = 2; } } for (int j = i + 1; j < i + n + 1 - xz && j < (n << 1); j++){ if (a[j] == 'r'){ if (R == 2 || j == (n << 1) - 1 || j == (i + n + 1 - xz - 1)){ xz += j - i - 1; if (R != 2) xz++; break; } R = 1; }else if (a[j] == 'b'){ if (R == 1 || j == (n << 1) - 1 || j == (i + n + 1 - xz - 1)){ xz += j - i - 1; if (R != 1) xz++; break; } R = 2; } } if (xz > mx) mx = xz; } if (mx < n) cout << mx; else cout << n; } ```
by CEFqwq @ 2024-03-14 19:46:16


@[爱肝大模拟的tlxjy](/user/482610) 纯粹模拟,感觉橙挺合适的。
by _bzy @ 2024-03-15 14:53:13


|