[游记] CSP 2023 游记
cirrationaler · · 生活·游记
2023.10.20(Day 0)
S1 拿了
S2 就在自己的学校 (而且甚至是我上信息技术课的教室) ,所以试机了和没试机没有任何区别 qwq。
在 luogu 上面打了一下 a+b,回顾了一下编译就走了。
2023.10.21(Day 1)
正序开题,发现 T1 好像是 for 循环,写了。
T2 放一下赛场代码吧 (码风奇怪请勿介意)
// 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 不会,摆了。
剩下的时间在玩蜘蛛纸牌。
估分
2023.11.12
出分数,
原来是因为没写 freopen 导致 T1 爆炸。
2023.11.15
出奖项和分数线,三等无缘。
结语
引用 @__erinww 的一句话:
T1 puts("81") 都可以拿 30 分()
是啊,怎么只有
明年还有机会吗。