CSP 2023 游记

cq_irritater

2023-10-20 22:42:52

Life

## 2023.10.20(Day 0) S1 拿了 $68.5$ 分,顺利晋级。但是 J1 只拿了 $60.5$,没了。 S2 就在自己的学校 ~~(而且甚至是我上信息技术课的教室)~~ ,所以试机了和没试机没有任何区别 qwq。 在 luogu 上面打了一下 a+b,回顾了一下编译就走了。 ## 2023.10.21(Day 1) 正序开题,发现 T1 好像是 $5$ 个 `for` 循环,然后觉得时间复杂度超了就没写,哪知这居然是正解之一。 T2 放一下赛场代码吧 ~~(码风奇怪请勿介意)~~ ```cpp // game // code by:cq_irritater // time:2023/10/21 #include <bits/stdc++.h> using namespace std; const int MAXN = 8010, maxn = 2e6 + 10; int n, ans; int f[MAXN][MAXN], v[MAXN][MAXN]; char a[maxn]; int main() { freopen("game.in", "r", stdin); freopen("game.out", "w", stdout); scanf("%d", &n); scanf("%s", a + 1); for (int k = 2; k <= n; k += 2) { for (int i = 1; i <= n - k + 1; i++) { if (k == 2) { if (a[i] == a[i + 1]) { f[i][i + 1] = 1; v[i][++v[i][0]] = i + 1; ans++; } continue; } int l = i, r = i + k - 1; if (a[1] == a[r] && f[l + 1][r - 1]) { f[l][r] = 1; v[i][++v[i][0]] = r; ans++; } else if (a[r - 1] == a[r] && f[l][r - 2]) { f[l][r] = 1; v[i][++v[i][0]] = r; ans++; } else if (a[l] == a[l + 1] && f[l + 2][r]) { f[l][r] = 1; v[i][++v[i][0]] = r; ans++; } else { int nn = v[1][0]; for (int i = 1; i <= nn; i++) { if (f[v[l][i] + 1][r]) { f[l][r] = 1; v[l][++v[l][0]] = r; ans++; break; } } } } } printf("%d", ans); return 0; } ``` T3、T4 不会,摆了。 剩下的时间在玩蜘蛛纸牌。 估分 $0 + 10 + 0 + 0 = 10$ ,彻底 AFO. 。 ## 2023.11.12 出分数,$0 + 20 + 0 + 0 = 20$。 ## 2023.11.15 出奖项和分数线,三等无缘。 ## 结语 引用 @[__erinww](https://www.luogu.com.cn/user/850498) 的一句话: > T1 puts("81") 都可以拿 30 分() 是啊,怎么只有 $20$ 啊 $\dots$