[CSP-S 2023] 密码锁
耗时 1h ?
思路
考试时先前没有看懂题。因为给出的 \(n\) 个状态都是转了的,所以可以枚举所有转回来的状态,如果有一种状态出现了 \(n\) 此就是可以的。呜呜呜小图灵你为什么给我标 \(70\) 分!
code
#include <bits/stdc++.h>
using namespace std;
int a[10][6], n, ans;
map<int, set<int>> st;
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 18; j++) {
for (int k = 1; k <= 5; k++) {
int sum = 0, cnt = 0;
for (int o = 1; o <= 5; o++) {
if (o == k) {
sum = sum * 10 + (a[i][o] + j) % 10;
} else {
sum = sum * 10 + a[i][o];
}
cnt = cnt * 10 + a[i][o];
}
if (sum != cnt)
st[sum].insert(cnt);
}
for (int k = 1; k < 5; k++) {
int sum = 0, cnt = 0;
for (int o = 1; o <= 5; o++) {
if (o == k || o == k + 1) {
sum = sum * 10 + (a[i][o] + j) % 10;
} else {
sum = sum * 10 + a[i][o];
}
cnt = cnt * 10 + a[i][o];
}
if (sum != cnt)
st[sum].insert(cnt);
}
}
}
for (auto i : st) {
ans += (int((i.second).size()) == n);
}
cout << ans << endl;
return 0;
}
预估 100 分
[CSP-S 2023] 消消乐
1.5 h
思路
没有思路,硬是没想到 \(n^2\) 最后考虑 \(f_{ij}\) 为区间 \([i, j]\) 可不可以噶掉,那么如果 \(s_i = s_j\) 那么可以看做是一个中间的被消了然后 \(ij\) 合到一起然后消了,还有一种可能时这是一堆已经删掉的区间合到一起的,所以枚举断点,然后看两边。
code
#include <bits/stdc++.h>
using namespace std;
const int MaxN = 8010;
int f[MaxN][MaxN], n, ans;
string s;
int main() {
cin >> n >> s, n = s.size(), s = " " + s;
for (int i = 1; i < n; i++) {
f[i][i + 1] = s[i] == s[i + 1];
}
for (int len = 2; len <= n; len++) {
for (int i = 1, j = i + len - 1; j <= n; j++, i++) {
f[i][j] |= f[i + 1][j - 1] && s[i] == s[j];
for (int k = i; k < j; k++) {
f[i][j] |= f[i][k] && f[k + 1][j];
}
ans += f[i][j];
}
}
cout << ans << endl;
return 0;
}
预估:35 分
[CSP-S 2023] 结构体
30min?
思路
没思路,想骗性质A,结果刚写完后就结束了……
[CSP-S 2023] 种树
1.5h?
思路
没思路,想骗 \(c_i=0\) 结果 \(MLE\),不会写。
标签:int,cin,MaxN,2023,思路,CSP From: https://www.cnblogs.com/ybtarr/p/17781170.html