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 放一下赛场代码吧 (码风奇怪请勿介意)
// 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 的一句话:
T1 puts("81") 都可以拿 30 分()
是啊,怎么只有 \(20\) 啊 \(\dots\)
标签:10,20,21,int,csp2023,game,MAXN,游记 From: https://www.cnblogs.com/cq-irritater/p/18198841/travels-csp2023