NOIP2024 游记
原文发布时间:2024-11-29 15:08。
Day -114514
听说自己S200好像能进NOIP了。
Day -1
去福州。
10:50在火车站集合,还以为是9:50。
找我妈要来了她不要的旧手机,这样就能开热点了。
去集合的路上看到空中飘来“雪花”,往上一看原来是有人刷墙,吃了一嘴墙灰。
发现没一个熟人。
集合后没多久就上火车了。
发现座位底下竟然没有充电口啊啊啊。
上洛谷。
灌水,晕晕晕晕晕。
靠背,颈椎痛痛痛。
进隧道,耳朵炸炸炸。
有点冷,鼻塞塞塞塞。
然后发现电脑没什么电了,只能关机。
三明治好好吃!!!
下国际象棋,一赢一平。
手机也没什么电了。。。
终于到站了,结果想起来还要做大巴额额额。
大巴闷死,晕晕晕,差点吐了。
大巴停酒店门口,结果老师走错了。。。
又走错了。。。
终于找到了,绕了半天。
进房间,写游记,听到有“滴滴”声,还以为有什么奇怪的东西,后面发现原来是自己鼠标在响。。。

洛谷打卡真神。
下午复习了一下。
晚上出去吃饭,结果跟老师一桌。。。
慌慌慌慌慌。
慌慌慌慌慌。
慌慌慌慌慌。
慌慌慌慌慌。
慌慌慌慌慌。
有惊有险的吃完了,回去还迷路了一下。
玩小猿口算,好玩!!!
结果听说今天学校运动会我们班发奶茶。。。
******
小!猿!口!算!输!了!一!把!
ccccccccccc。
得知明天6:40就得起床啊啊啊。
回房间打模板。
晚上睡不着。。。
Day 1
按照昨天老师讲的安排,6:40起床,去吃早饭,是酒店自助餐,好吃好吃好吃好吃好吃。

配张图,后面还吃了点别的,吃的挺撑。
7:30发准考证,FJ-0544。
走路去考场,不到十分钟就到了。
DT初中队合照。
(此处应有配图)
某考场校内老师超大声喊:“*****,安静!!!安静!!!高三在考试!!!”
乐。
交电子设备,拿吃的,进考场。
一进考场就感觉不对,看了下电脑,原来是高贵的32位win7,CCF太有实力了。
显示器特别矮,还没法调角度,只能弯着腰看。。。
不是考前不能碰电脑吗???
9:10发大样例解压密码。
签名,发现旁边坐的是yrc巨佬。
9:25左右yrc巨佬冲进考场,签完名后又冲出去上厕所。
9:30发题面解压密码。
这次倒是没有写黑板上,而是直接发txt文件,省时间了。
开题。
T1不会,慌慌慌。
T2不会,慌慌慌。
先写暴力,写了T1的 \(n\leq10\) 和 A,B性质。
C性质不会写,慌慌慌。
看T2,感觉是组合数学推公式,肯定不会啊啊啊。
一看时间,都11点多了,吃巧克力。
回T1,想C性质,突然发现用每个0分段再贪心的凑好像是 \(O(n)\) 的。
写写写,抽象的5.4KB,过了大样例。
开T3。
一看时间12点整,手撕面包启启启启启启动。
好吃好吃。
吃了一半吃不下了,可能是因为早上吃的比较多吧。
T3不会,回T2打25分。
暴力写挂了。。。
发现好像判断的不大对,赶紧改改改。
过了那部分的大样例。
剩10分钟,看T3,发现特殊性质A不大对劲,看大样例验证推测发现全是1,输出1骗4分。
剩五分钟,开扫雷,结果发现被删了。。。
玩小恐龙,结果玩到700多分考试就结束了。
估分100+25+4+0=129。
寄了。
真成福州两日游了。
看收取结果,没问题就回酒店了。
吃薯条。
吃汉堡。
吃麦乐鸡块。
吃一半发现忘拿酱了。。。
upd:因为今天吃薯条只拿了一包番茄酱,所以麦乐鸡块的酱被我拿来蘸薯条了。——2024.12.13
喝橙汁。
好冰。
喝撑死。
然后坐大巴,玩小猿口算,结果玩晕了。
晕晕晕。
想吐想吐想吐。
闷闷闷。
啊啊啊。
疯狂喝水,感谢@guozhetao提供宝贵的缓解晕车的建议。
终于下车了,但还是晕晕晕。
缓了半天终于缓过来了。
上火车,不晕了。
玩了一路小猿口算,成菜狗了,胜率掉到了85%左右。
终于到家了哈哈哈。
上洛谷,发现T1好像真了,但是感觉要寄。
Day 8
看到代码公示压缩包密码发出来了,赶紧解压。
怎么没法输密码???
哦哦原来是系统自带的没有密码功能啊。
随便下了个360压缩,在安装的时候仔细检查了三遍有没有附带软件。
交代码,一分没挂!!!
最终 \(100+25+4+0=129\)。
好吧也没什么可高兴的,不过场切的T1是蓝有点蒙。
二等了吧。
其实平时也没怎么投入时间去学OI,这个成绩其实也是超乎意料了。
很可惜比我强的cyq等人因CSP发挥失常导致没有进入NOIP,我因为在CSP超常发挥拿到了名额,却白白浪费了。
Day 19
出分数线力。
福建二等奖分数线100。
二等奖。
代码:
不用管为什么会有人写出这么抽象的代码。
edit
#include <bits/stdc++.h>
using namespace std;
int T, n;
string a, b, c, d;
int ans = 0;
int ha[20], hb[20];
struct node {
int ls, ys, l, r;
}za[100005], zb[100005];
int ta = 0, tb = 0;
bool okk[100005];
int check() {
int cnta = 0, cntb = 0;
for (int i = 1; i <= (n + 1); i++) {
if ((c[i] == '0') || (i == (n + 1))) {
if (cnta != cntb) return -1;
if ((ha[i] != (a[i] - '0')) && (i != (n + 1))) return -1;
cnta = 0;
cntb = 0;
}
else {
if (a[i] == '1') cnta++;
if (ha[i] == 1) cntb++;
}
}
cnta = 0, cntb = 0;
for (int i = 1; i <= (n + 1); i++) {
if ((d[i] == '0') || (i == (n + 1))) {
if (cnta != cntb) return -1;
if ((hb[i] != (b[i] - '0')) && (i != (n + 1))) return -1;
cnta = 0;
cntb = 0;
}
else {
if (b[i] == '1') cnta++;
if (hb[i] == 1) cntb++;
}
}
int res = 0;
for (int i = 1; i <= n; i++) {
if (ha[i] == hb[i]) res++;
}
return res;
}
void dfs(int x) {
if (x == (2 * n + 1)) {
int res = check();
if (res != -1) ans = max(ans, res);
return ;
}
if (x <= n) ha[x] = 0;
else hb[x - n] = 0;
dfs(x + 1);
if (x <= n) ha[x] = 1;
else hb[x - n] = 1;
dfs(x + 1);
return ;
}
int ABS(int a) {
if (a >= 0) return a;
return (-1 * a);
}
int main() {
freopen("edit.in", "r", stdin);
freopen("edit.out", "w", stdout);
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> T;
while (T--) {
cin >> n;
cin >> a >> b >> c >> d;
a = " " + a;
b = " " + b;
c = " " + c;
d = " " + d;
ans = 0;
if (n <= 10) {
for (int i = 0; i < 20; i++) {
ha[i] = 0;
hb[i] = 0;
}
dfs(1);
cout << ans << endl;
continue;
}
bool qwq = 1;
for (int i = 2; i <= n; i++) {
if (a[i] != a[i - 1]) {
qwq = 0;
break;
}
}
if (qwq) {
ans = 0;
for (int i = 1; i <= n; i++) if (b[i] == a[1]) ans++;
cout << ans << endl;
continue;
}
bool awa = 1;
for (int i = 1; i <= n; i++) {
if (c[i] != d[i]) {
awa = 0;
break;
}
}
if (awa) {
int cnta = 0, cntb = 0, lt = 0;
for (int i = 1; i <= (n + 1); i++) {
if (c[i] == '1' && (i != (n + 1))) {
if (a[i] == '1') cnta++;
if (b[i] == '1') cntb++;
}
else {
ans += (i - 1 - lt - ABS(cnta - cntb));
if ((a[i] == b[i]) && (i != (n + 1))) ans++;
cnta = 0;
cntb = 0;
lt = i;
}
}
cout << ans << endl;
continue;
}
// int QwQ = 0, OvO = 0;
// for (int i = 1; i <= n; i++) {
// if (c[i] == '0') QwQ++;
// if (d[i] == '0') OvO++;
// if (QwQ > 1 || OvO > 1) break;
// }
// if (QwQ <= 1 && OvO <= 1) {
//
// }
for (int i = 1; i <= ta; i++) {
za[i].ls = 0;
za[i].ys = 0;
za[i].l = 0;
za[i].r = 0;
}
for (int i = 1; i <= tb; i++) {
zb[i].ls = 0;
zb[i].ys = 0;
zb[i].l = 0;
zb[i].r = 0;
}
ta = 0; tb = 0;
//////////
for (int i = 1; i <= n; i++) {
if (c[i] == '0') {
za[++ta].ls = (a[i] == '0');
za[ta].ys = (a[i] == '1');
za[ta].l = i;
}
if (c[i] == '1') {
if ((ta == 0) || (c[i - 1] == '0')) za[++ta].l = i;
za[ta].ls += (a[i] == '0');
za[ta].ys += (a[i] == '1');
}
}
for (int i = 1; i <= ta; i++) za[i].r = za[i].l + (za[i].ls + za[i].ys) - 1;
//////////
for (int i = 1; i <= n; i++) {
if (d[i] == '0') {
zb[++tb].ls = (b[i] == '0');
zb[tb].ys = (b[i] == '1');
zb[tb].l = i;
}
if (d[i] == '1') {
if ((tb == 0) || (d[i - 1] == '0')) zb[++tb].l = i;
zb[tb].ls += (b[i] == '0');
zb[tb].ys += (b[i] == '1');
}
}
for (int i = 1; i <= tb; i++) zb[i].r = zb[i].l + (zb[i].ls + zb[i].ys) - 1;
// debug();
/////////
for (int i = 1; i <= n; i++) okk[i] = 0;
int ans = 0, zza = 1, zzb = 1;
for (int i = 1; i <= n; i++) {
while (za[zza].r < i) zza++;
while (zb[zzb].r < i) zzb++;
if (c[i] == '0') {
if (d[i] == '0') {
if (za[zza].ls == zb[zzb].ls) {
za[zza].ls = 0;
zb[zzb].ls = 0;
za[zza].ys = 0;
zb[zzb].ys = 0;
ans++;
}
else {
za[zza].ls = 0;
zb[zzb].ls = 0;
za[zza].ys = 0;
zb[zzb].ys = 0;
}
}
else {
if (za[zza].ls == 1 && zb[zzb].ls >= 1) {
zb[zzb].ls--;
ans++;
}
if (za[zza].ys == 1 && zb[zzb].ys >= 1) {
zb[zzb].ys--;
ans++;
}
za[zza].ls = 0;
za[zza].ys = 0;
}
okk[i] = 1;
}
//////
if (d[i] == '0' && c[i] != '0') {
if (zb[zzb].ls == 1 && za[zza].ls >= 1) {
za[zza].ls--;
ans++;
}
if (zb[zzb].ys == 1 && za[zza].ys >= 1) {
za[zza].ys--;
ans++;
}
zb[zzb].ls = 0;
zb[zzb].ys = 0;
okk[i] = 1;
}
}
zza = 1; zzb = 1;
for (int i = 1; i <= n; i++) {
if (okk[i]) continue;
while (za[zza].r < i) zza++;
while (zb[zzb].r < i) zzb++;
if (za[zza].ls >= 1 && zb[zzb].ls >= 1) {
za[zza].ls--;
zb[zzb].ls--;
ans++;
}
else if (za[zza].ys >= 1 && zb[zzb].ys >= 1) {
za[zza].ys--;
zb[zzb].ys--;
ans++;
}
else if (za[zza].ls >= 1 && zb[zzb].ys >= 1) {
za[zza].ls--;
zb[zzb].ys--;
}
else {
za[zza].ys--;
zb[zzb].ls--;
}
}
cout << ans << endl;
}
return 0;
}
assign
#include <bits/stdc++.h>
using namespace std;
int T;
int n, m, v;
int s[20];
int ans = 0;
int a[20], b[20];
int xx[20];
void dfs(int x) {
if (x == (2 * n - 1)) {
bool crz = 1;
for (int i = 1; i <= n; i++) xx[i] = s[i];
for (int i = 1; i < n; i++) {
if (xx[i] == a[i] && xx[i + 1] != b[i] && xx[i + 1] != -1) {
crz = 0;
break;
}
if (xx[i] == a[i] && xx[i + 1] == -1) xx[i + 1] = b[i];
}
ans += crz;
return ;
}
int wwqwq = (x - 1) / 2 + 1;
if (x % 2 == 1) {
for (int i = 1; i <= v; i++) {
a[wwqwq] = i;
dfs(x + 1);
}
}
else {
for (int i = 1; i <= v; i++) {
b[wwqwq] = i;
if (!(s[wwqwq] == a[wwqwq] && s[wwqwq + 1] != b[wwqwq] && s[wwqwq + 1] != -1)) dfs(x + 1);
}
}
return ;
}
int main() {
freopen("assign.in", "r", stdin);
freopen("assign.out", "w", stdout);
cin >> T;
while (T--) {
ans = 0;
for (int i = 0; i < 20; i++) {
s[i] = -1;
a[i] = 0;
b[i] = 0;
}
cin >> n >> m >> v;
if (n > 20 || m > 20 || v > 20) {
cout << 0 << endl;
continue;
}
bool cyq = 0;
for (int i = 1; i <= m; i++) {
int a, b;
cin >> a >> b;
if (s[a] != -1 && s[a] != b) cyq = 1;
s[a] = b;
}
if (cyq) cout << 0 << endl;
else {
dfs(1);
cout << ans << endl;
}
}
return 0;
}
traverse
#include <bits/stdc++.h>
using namespace std;
int n, k;
int main() {
freopen("traverse.in", "r", stdin);
freopen("traverse.out", "w", stdout);
int c, T;
cin >> c >> T;
while (T--) {
cout << 1 << endl;
}
return 0;
}

浙公网安备 33010602011771号