Logo Iceturky 的博客

博客

标签
暂无

P11831 [省选联考 2025] 追忆

P11831 [省选联考 2025] 追忆

题目背景

考虑到评测机性能差距,本题较官方赛事增加了 3 秒的额外时限。

我常常追忆过去。

生命瞬间定格在脑海。我将背后的时间裁剪、折叠、蜷曲,揉捻成天上朵朵白云。

云朵之间亦有分别:积云厚重,而卷云飘渺。生命里震撼的场景掠过我的思绪便一生无法忘怀,而更为普通平常的记忆在时间的冲刷下只留下些许残骸。追忆宛如入梦,太过清楚则无法愉悦自己的幻想,过分模糊却又坠入虚无。只有薄雾间的山水,面纱下的女子,那恰到好处的朦胧,才能满足我对美的苛求。

追忆总在不经意间将我裹进泛黄的纸页里。分别又重聚的朋友,推倒又重建的街道,种种线索协助着我从一个具体的时刻出发沿时间的河逆流而上。曾经的日子无法重来,我只不过是一个过客。但我仍然渴望在每一次追忆之旅中留下闲暇时间,在一个场景前驻足,在岁月的朦胧里瞭望过去的自己,感受尽可能多的甜蜜。美好的时光曾流过我的身体,我便心满意足。

过去已经凝固,我带着回忆向前,只是时常疏于保管,回忆也在改变着各自的形态。这给我的追忆旅程带来些许挑战。

我该在哪里停留?我问我自己。

题目描述

给定一个 $n$ 个点 $m$ 条边的有向图 $G$,结点由 $1$ 至 $n$ 编号。第 $i$ ($1 \leq i \leq m$) 条边从 $u_i$ 指向 $v_i$,保证 $u_i < v_i$。节点 $j$ ($1 \leq j \leq n$) 有两个权值 $a_j, b_j$,保证 $[a_1, \ldots, a_n]$ 与 $[b_1, \ldots, b_n]$ 均是 $1 \sim n$ 的排列。

你需要进行 $q$ 次操作。操作有以下三种: - $1\ x\ y$:交换 $a_x$ 和 $a_y$; - $2\ x\ y$:交换 $b_x$ 和 $b_y$; - $3\ x\ l\ r$:你需要输出满足以下两个条件的点 $y$ 中 $b_y$ 的最大值,若不存在满足条件的点则输出 $0$: 1. $l \leq a_y \leq r$。 2. 图 $G$ 中存在一条 $x$ 到 $y$ 的有向路径,即存在整数 $k \geq 1$ 与 $k$ 个结点 $p_1, p_2, \ldots, p_k$,满足 $p_1 = x$,$p_k = y$,且对于所有 $1 \leq i < k$,图 $G$ 中存在从 $p_i$ 指向 $p_{i+1}$ 的有向边。特别地,图 $G$ 中总是存在一条 $x$ 到 $x$ 的有向路径。

输入格式

本题有多组测试数据。输入的第一行两个整数 $c, T$,分别表示测试点编号和测试数据组数,接下来输入每组测试数据。样例满足 $c = 0$。

对于每组测试数据, - 第一行三个整数 $n, m, q$,分别表示图 $G$ 的节点数、图 $G$ 的边数和操作次数, - 接下来 $m$ 行,第 $i$ ($1 \leq i \leq m$) 行两个整数 $u_i, v_i$,描述一条边, - 接下来一行 $n$ 个整数 $a_1, a_2, \ldots, a_n$,描述每个节点的 $a$ 权值, - 接下来一行 $n$ 个整数 $b_1, b_2, \ldots, b_n$,描述每个节点的 $b$ 权值, - 最后 $q$ 行,第 $i$ ($1 \leq i \leq q$) 行三或四个整数 $o_i, x_i, y_i$ 或 $o_i, x_i, l_i, r_i$,描述一次操作,格式同题目描述。

输出格式

对于每个 $3$ 操作输出一行一个整数,表示对应操作的答案。

输入输出样例 #1

输入 #1

0 1
4 4 7
1 2
1 3
2 4
3 4
4 2 3 1
1 3 2 4
3 2 1 3
3 3 2 4
1 1 4
3 1 1 3
2 2 4
3 1 2 3
3 4 1 1

输出 #1

4
2
3
4
0

说明/提示

【样例 1 解释】

该组样例共有 $1$ 组测试数据。该组测试数据共包含 $7$ 个操作。 - 对于第一个操作,所有满足条件的点为 $2, 4$,因此答案为 $\max\{b_2, b_4\} = 4$。 - 对于第二个操作,所有满足条件的点为 $3$,因此答案为 $b_3 = 2$。 - 对于第三个操作,交换 $a_1, a_4$ 后得到的权值序列 $a$ 为 $[1, 2, 3, 4]$。 - 对于第四个操作,所有满足条件的点为 $1, 2, 3$,因此答案为 $\max\{b_1, b_2, b_3\} = 3$。 - 对于第五个操作,交换 $b_2, b_4$ 后得到的权值序列 $b$ 为 $[1, 4, 2, 3]$。 - 对于第六个操作,所有满足条件的点为 $2, 3$,因此答案为 $\max\{b_2, b_3\} = 4$。 - 对于第七个操作,没有满足条件的点,因此答案为 $0$。

【样例 2】

见选手目录下的 recall/recall2.in 与 recall/recall2.ans。

该组样例满足测试点 $1 \sim 5$ 的限制。

【样例 3】

见选手目录下的 recall/recall3.in 与 recall/recall3.ans。

该组样例满足测试点 $7$ 的限制。

【样例 4】

见选手目录下的 recall/recall4.in 与 recall/recall4.ans。

该组样例满足测试点 $10 \sim 12$ 的限制。

【样例 5】

见选手目录下的 recall/recall5.in 与 recall/recall5.ans。

该组样例满足测试点 $13, 14$ 的限制。

【样例 6】

见选手目录下的 recall/recall6.in 与 recall/recall6.ans。

该组样例满足测试点 $18$ 的限制。

【样例 7】

见选手目录下的 recall/recall7.in 与 recall/recall7.ans。

该组样例满足测试点 $23 \sim 25$ 的限制。

【子任务】

对于所有测试点, - $1 \leq T \leq 3$, - $1 \leq n, q \leq 10^5$,$1 \leq m \leq 2 \times 10^5$, - $\forall 1 \leq i \leq m$,$1 \leq u_i < v_i \leq n$, - $\forall 1 \leq i \leq n$,$1 \leq a_i \leq n$,且 $[a_1, \ldots, a_n]$ 是 $1 \sim n$ 的一个排列, - $\forall 1 \leq i \leq n$,$1 \leq b_i \leq n$,且 $[b_1, \ldots, b_n]$ 是 $1 \sim n$ 的一个排列, - $\forall 1 \leq i \leq q$,$o_i \in \{1, 2, 3\}$,$1 \leq x_i, y_i \leq n$,$1 \leq l_i \leq r_i \leq n$。

::cute-table{tuack}

测试点编号 $n, q \leq$ $m \leq$ 特殊性质
$1 \sim 5$ $2\,000$ $4\,000$
$6$ $8 \times 10^4$ $1.6 \times 10^5$ AB
$7$ $6 \times 10^4$ $1.2 \times 10^5$ B
$8, 9$ $8 \times 10^4$ $1.6 \times 10^5$ ^
$10 \sim 12$ ^ ^ AC
$13, 14$ $6 \times 10^4$ $1.2 \times 10^5$ A
$15, 16$ $8 \times 10^4$ $1.6 \times 10^5$ ^
$17$ $6 \times 10^4$ $1.2 \times 10^5$ D
$18$ $8 \times 10^4$ $1.6 \times 10^5$ ^
$19, 20$ $6 \times 10^4$ $1.2 \times 10^5$
$21, 22$ $8 \times 10^4$ $1.6 \times 10^5$ ^
$23 \sim 25$ $10^5$ $2 \times 10^5$ ^
  • 特殊性质 A:$\forall 1 \leq i \leq q, o_i \neq 1$。
  • 特殊性质 B:$\forall 1 \leq i \leq q, o_i \neq 2$。
  • 特殊性质 C:$\forall 1 \leq i \leq q, l_i = 1, r_i = n$。
  • 特殊性质 D:保证在每个 $3$ 操作的时刻,$\forall 1 \leq i \leq n, a_i = b_i$。

【提示】

请注意本题特别的时空限制。

阿尔吉侬3-下篇

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-05-23 10:09:21

内容为对《献给阿尔吉侬的花束》的剧透

今天把《献给阿尔吉侬的花束》又读了一遍。读的部分是后三分之一,查理去拜访沃伦之家到查理去沃伦之家这一部分。

这部分是全书的精华,查理从天才重新回到了原来那个脸上挂着空洞笑容的查理,他对自己的理解,对人们的反应与人们对他的看法构筑了整本书最后的交响乐。

拜访沃伦之家是整本书里最压抑的一节。沃伦之家是一所低智能人士与脑力受损患者的收容所,这里的人眼神空洞行为怪异,结合着查理的自述与感受将气氛推往低谷,为书中最后一部分:查理的彻底退化设置了因子。

在这之后,查理发现了能够证明实验必将失败的公式,并在自己还能够正常生活的时期拜访了自己的母亲。

查理一家过得十分窘迫。父亲马特早已与母亲罗丝离婚,开了家自己的理发店,查理在之前已经拜访过,但完全没有取得任何成果。罗丝和妹妹诺尔玛相依为命,罗丝受到生活上的重重打击,已经变得疯疯癫癫,那个小时候刻薄和不讲理的诺尔玛现在也变得温柔和可爱。她们一直住在查理原来的家里,那条街道也变得破破烂烂,毫无活力,与查理的记忆大相径庭。

查理一直都想变聪明,这是罗丝的执念。交给罗丝自己的研究报告,一定是查理最想要做的事。但命运作弄,留给他的时间已经只剩下很少,但正是在这最后的时间里,查理摆脱了愤世嫉俗,骄傲自负的心态,在他的人生与世界的历程中烙下了密密麻麻的闪光点。

最后的日子里,查理通过前面时间的沉淀,最终得到了升华。

但是终局终将来临。

查理乘着升降机,开始了速降。他明显的察觉到了自己的退步,但无力改变这一切。唯一能带给他慰藉的,只有艾丽斯的陪伴。查理终于摆脱了另一个查理的枷锁,在身心上都得到了他的挚爱。他体会到了宇宙的终结,无边的黑暗,但也体会到了生命的延续与人和人之间的连系。但他已经无法像之前一样更自由的获取到那些他想要知道,想要体会的东西了。

他回到了面包店,想要再在这里出一份力,那些以查理为乐的同事们(如果可以这么叫的话)在知道他的遭遇后,成为了他最忠实的朋友。但查理明白他自己想要什么。他凭着惯性回到纪尼安(艾丽斯)小姐那里去上课,纪尼安小姐的反应才使他想起了发生在自己身上的事。

最后,查理独自登上了去往沃伦之家的车,为了不让自己身边熟悉的人为自己担心。他最后的话是劝尼姆教授脾气要好些,与希望能为向自己一样为科学献身的,始终陪伴查理的小鼠阿尔吉侬献一些花。

这里是对最后一篇报告结尾部分的部分摘抄。

纪尼安小姐如果你有机会读到这个请不要为我难过。我很感机我就像你说的得到生命中的弟二次机会。因为我学到很多我以前甚至不知到这世界上真的存在的事情。我很高兴能够看到这些即使只是很短的时间。我很高兴我发现了所有关于我的家人和我的事。好像在我想起他们并且看过他们之前我并没有家人似的但现在我知到我有家人而且我和大家一样也是一个人。

我不知到为什么我又便笨或是做错了什么事。也许那是因为我不够用工或是因为有人用邪眼害我。但是如果我努力尝试而且非常用工练习也许我就可以便得聪明一点并且董得所有字的意思。我还记得一点点读那本书面已经被撕破的蓝色书时感受到的快乐。当我闭上眼睛时我会想起撕破那本书的人。他看起来和我很像只是他看起来很不一样说话也不同但我不任为他就是我因为我好像是从窗户看到外面的他。

无论如何那就是我继续想要便聪明的原因这样我才能在次有那种感觉。聪明并且知到很多东西是很棒的事情我旦愿我能够知到世界上的所有事情。我希望我现在就能够在便聪明。如果我能的话我就会坐下来一直读书。

无论如何我感说我是世界上第一个为科学找出一些重要花现的笨蛋。我做了一些事但我不记得是什么。所以我猜我可能是为沃伦之家以及全世界所有和我一样的笨蛋做了一些事。

再见了纪尼安小姐还有斯特劳斯医生以及所有的人……

还有:请告诉尼姆教受当别人朝笑他时皮气不要那么暴躁这样他就会有更多的朋友。如果你让别人朝笑你你就比叫容易有朋友。我要去的地方我将会有很多的朋友。

还有:如果你有机会请放一些花在后院的阿尔吉侬坟上。

查理,从白痴到天才再回到白痴。他又回到了原点,但他也不仅是之前的那个查理了。

后记

这是第三次给《献给阿尔吉侬的花束》这本书写类似读后感的东西,这也是为什么这三篇文章的名字里都包含个「3」的原因。

我很喜欢这本书的行文风格。他以查理的「进步报告」为格式(实际上就是日记体),向我们讲述了查理的经历。每次读这本书都会被其中的情感与故事所触动。这真是本好书啊。

唉。每次想给这本书写些什么的时候都会感觉无从下笔。这次干脆把我感受到了什么东西的段全都摘下来,让看到这篇文章的大家来体会吧。

以及:这篇读后感是在没有网的宿舍完成的,伴随着潮汐逃逸《透明小说》专辑。

因为没有提前准备歌单,通过记忆把专辑用单曲组合起来,竟然没有偏差?我也太牛了。

NOI2025绍兴游记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-07-21 13:04:03

据说有七成的高中生情侣会在一年内分手

若连毕业后的也算上,几乎可以说是全军覆没

但所有人依然投身于恋爱的折腾

时而哭泣,时而欢笑

我并不期望现实和自己的内心会被这种短暂的关系动摇

但我有时会想

如果我有那种青春的话

要是眼前会有那种为我流泪的女主角的话

要是我是轻小说男主角的话

那个时候,我会有什么感受呢?

摘自《败犬女主太多了!》第一集开篇。


用败犬的 ed1 剪了个视频,大概会在游记里写写做这个视频的感受之类的。


感触颇深,也摸清了自己的实力。

应该暂时会接着学OI。

Day -一些

去参加了 mx 赛前集训,终于算是复建回了自己省选时候的水平。

鲁迅中学的饭菜和宿舍。有点不怎么样。

可能是题目整体偏简单所以获得了一些信心。

哎呀这个吮指原味鸡怎么不好吃,是没撒盐吗。

Day -1

成功从宿舍逃离。快乐的三个人住两张床偶耶。

零食店里没有德芙但使用了德芙的袋子,难绷。

疯狂的塔。

Day 0

报到。

交换徽章。(徽章照片在视频里有就不单独放了)

去 9107 圣地巡礼,顺便在 9102 放了几个徽章。

经典画猜团建。

经典面基活动。

拍摄了一部分素材。

奶龙山没有蚊子有点超模。

聊天。

Day 0.5

dzd。

冒烟。

合照。

试机。

笔试。

哎呀这个软件系统怎么这么坏啊。100pts。

严肃复习字符串。

聊天。经典情感话题。

Day 1

哎呀这个 T1 怎么这么难,写个特殊性质先。欸怎么这个做法是正解,赢。

这个 T2 怎么做啊?先打点部分分。20pts。

先跳了,开 T3,手玩一万年没有得出任何性质和结论以及部分分做法。8pts 跑路。

最后补了个 T2 的 $\mathrm{O(n^4)}$ 第一问。

$100+28+8=136$。

发生的一些问题是

T1 做得太慢且没能很快的提取出题目信息,前面写代码一直在模拟题意导致在写最后一个特殊性质的时候才想到正解。

T2 思考时间应该更多,并且应该意识到题目的类型,即推性质的优化 dp。这个其实不能算马后炮,这种特点在题目身上有一定程度的体现。没推出来啥有用的性质也有点唐/lh

给 T2 部分分留的时间也有些少,有更多的分数可以拿到,但没有时间拿了。

T3 没能把握好时间,在特殊性质上付出的时间过多而没有得到任何分数。

哎呀有点菜

比赛策略没有出太大问题,核心的问题还是做题速度慢以及做不出题/hsh

晚上去打羽毛球。打得很爽。

和 KSCD_ 一组,惜败于绝帆和黑塔。

严肃欣赏了《我喜欢的男孩不是男同》《lemon(中文版)》《黄色发给我 feat.诗岸》

wfyz 宿舍正式分崩离析,四个人住三个宿舍。

Day 1.5

社会实践。

第一次也是最后一次打舞萌就取得了 1 分钟内拍到 44 个的当日记录。

刷视频。

拍素材。

去找 sca 和黑塔聊天。

Day 2

手玩 T1 20min 秒了。

维护的特别唐调了 2.5h。

看 T2,感觉有不少分能拿,先去把 T3 暴力写了。

欸我好像会了 T3 线性 check,写。调。35​pts。

只剩 1h 了。

T2 容斥只枚举相等的按位与的值不太能直接做。没想到分别枚举两个集合的按位与。

写了背包跑路。

$100+16+35=151$。

发生的一些问题是

T1做得太慢了。我草我怎么去维护了开头和结尾的连续三个位置,两个就够了啊?

以及三个位置也没那么难写,但还是写了一万年。唐完了。

导致给 T2 的时间变少,没能拿到更多部分分。

T3 5pts不太好拿。

打得比 Day1 好。

彻底开摆。

拍摄素材。

篝火晚会好玩。

沙东少年团刚组建成功就惨遭自称 xst 的神秘团体背刺。(唉我草沙东跟时代相同首字母)

以及发现我竟然不会唱猪猪侠后半段,严肃学习了。

开心聊天 part3。

Day 3

我与NOI。

有幸欣赏到了许多优秀的节目。不一一说了。

很喜欢绝帆的结尾。看哭了。

闭幕式。

cyyz。

D Cu。

晚上参加了民间演唱会。

听牛蛙激情演唱了 deadman。

Day4

回家。

补了一些交通工具上的素材。

关于这次NOI

受益良多。

非常感谢各位学长与同学的帮助和关心。

恭喜 cxm 拿下 Au,成为 wfyz 第二位信竞集训队爷。

关于视频

在高考之后经常刷到用这首歌剪的毕业视频,非常感动。

借这次机会实现了我的心愿。

因为有想法所以到了奶龙山就开始拍素材了,但最后还是有些不够用。

感谢绝帆的素材提供。

感谢在视频里出镜的各位。

《败犬女主太多了!》是我很喜欢的一部轻小说。作者雨森焚火将大部分笔墨放在了那些在青春中暂时失利的人身上,让她们绽放出了比胜者更为灿烂的光彩。

退役的各位 whk 顺利。

P12738 [POI 2016 R2] 口吃 Stutter

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-09-18 11:14:19

Link

给定两个序列,求满足 $\forall i,p_{2i-1}=p_{2_i}$ 的 LCS。

首先有基础的 $\mathrm{O(n^2)}$ dp。

$f_{i,j}=\max(f_{i-1,j},f_{i,j-1},f_{frm_i-1,frm_j-1}+1)$ 。

其中 $frm$ 数组是对应序列内上一个相同颜色的元素下标。

可以发现这个数组的差分($f_{i,j}-f_{i,j-1}$)只有 $0$ 或 $1$。

用 bitset 存储,前两个转移可以直接滚,第三个在用到的时候用差分数组加载即可。

(校内互测搬了这题,空间限制开了 20M,可以通过删除只出现了一次的元素以及只对不同颜色存储差分数组对空间使用除 $2$)

是有点暴力邪道的做法。

code

const int N=1.5e4+5;

bitset<N>f[N];
int g[N],h[N];

int a[N],b[N];
int lsa[N],lsb[N];
unordered_map<int,int>id;

signed main(){
	int n=read(),m=read();

	for(int i=1;i<=n;i++)
		a[i]=read();
	for(int i=1;i<=m;i++)
		b[i]=read();
	
	for(int i=1;i<=n;i++){
		lsa[i]=id[a[i]];
		id[a[i]]=i;
	}id.clear();
	for(int i=1;i<=m;i++){
		lsb[i]=id[b[i]];
		id[b[i]]=i;
	}

	for(int i=1;i<=n;i++){
		if(lsa[i]){
			for(int j=1;j<=m;j++)
				h[j]=h[j-1]+f[lsa[i]-1][j];
		}
		for(int j=1;j<=m;j++){
			g[j]=max(g[j-1],g[j]);
			if(a[i]==b[j]&&lsa[i]&&lsb[j])
				g[j]=max(g[j],h[lsb[j]-1]+1);
			f[i][j]=g[j]-g[j-1];
		}
	}print(g[m]*2),pc('\n');
	return 0;
}

CSP-S2025游记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-11-03 09:49:06

悲しみがとまらない

需要从初赛开始写吗?因为分不清探查和拉链所以错了一题。

CSP 前的模拟赛排名很不稳定,总是被神秘简单题做自闭,很多没那么难的题也总是只能想到没有优化完全的麻烦做法。但整体来说信心还是有的。

Day 0

到达日照。酒店住了一个带滑梯的家庭房。滑梯光滑且陡,很刺激。

试机进行了一个积的面,留下了被关灯卡 timing 的神秘鬼图合照。

晚上和同学玩到很晚,【】最后一把极限过关,顶级智斗堪比中立假四。

Day 1

复习了点双,学习了马拉车。做出了下午必不可能考串串的预言。

和同学一起滑滑梯。

进考场。开题。

第一题怎么比去年第一题难这么多?但应该很好做。第二题怎么有点极限,思考一会发现可以归并若干行,极限能过。第三题怎么是串串/jk,思考一会发现这个相当于串对的 AC 自动机,可以通过穿插两个串,只在偶数位置计算贡献来解决,需要写一个倍增状物。

这个时候已经过去了大约 25min,因为好久没有写 AC 自动机所以有点慌,T4 简单想了 15min 就溜了,这个延迟贡献的状物还是等 T3 写完调完再想吧。

花了 40min 写 T3。又浪费了 20min 写了一个暴力程序来拍(然而后续发现这个拍数据太难造了于是作罢)。但暴力也没白写,让我发现了两个 $t$ 串竟然可以不等长。真神了出题人。唉我 T3 怎么空间刚刚好 2G,这不就是正解吗!!111

山外神秘机子运行不了 2G 的程序,于是缩小范围测了一些小数据。

又花了 10min 对空间卡常,卡到了 2038MB。这个时候已经完全把开始的倍增树剖都能行但倍增应该更好写的思路抛掉了。如果去改个树剖应该也花不了多少时间,也不用提心吊胆的卡空间了。但这是出场后才意识到的了。

这时大约是 16:20,哎呀我怎么在第三题上花了这么长时间,T2 感觉还不是特别好写。于是花费了30 分钟把预设 1h 的 T1T2 写完了。

T2 出了点小插曲,原来撑振和乡镇不是同一个东西,哎呀那我额外建 $k$ 个点不就行了。

上个厕所,做了一下检查。我现在还有 1.5h来做 T4,这个 T4 看起来也不是很难,感觉赢麻了啊111

但花了 0.5h 都在正解或特殊性质上毫无头绪,叠加上黛玉体质发力,于是就开始猛猛写部分分。抱着只要能进 WC 就行的心态,花 0.5h 写了 36 分。吃橘子,检查文件,卡空间。最后 10min 发现如果 T3 在预处理 AC 自动机的时候用 queue 占用双倍空间会导致极限空间刚好超 10MB,于是紧急改成了静态数组。

出考场,发现很多人 AK 了。有点无敌。也有很多朋友遇到了一些不顺利的情况导致没有发挥出自己的实力。山外逆天机子+没有linux虚拟机+只有 dev 还是太容易出错了。

发现 T2 的复杂度有点劣,但相信 CCF 神机。最害怕的还是 T3 产生一些莫名其妙的空间占用导致整个爆掉。得分在 $[216,336]$ 间浮动。

第二天看云斗的榜发现 T3 过了,很安心。但 T2 爆了。一开始以为是被卡常了,但看看周围没有跟我同一个分数的,最后才发现数据范围开小了。只开了 $1e4+5$ 的点数。这下伏笔了。

这下得分应该没啥浮动空间了。$300$ 分让我递补进 WC 吧。

2025CCPC济南站打星游记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-11-17 00:11:48

【数据删除】,中位银遗憾离场,但玩的很开心。

队名是 O(甜甜圈)!,队友是 Pigsyy 和 KSCD_。

11/15

上午坐大巴前往济南,本来打算推一下千咲都线,但因为前一天没睡好加上大巴有点挤所以光速收起电脑。

酒店装潢和在 pyyz 参加二轮省集的时候住的酒店一样,勾起了不好的回忆。

报道,送的衣服质量挺不错的,卡皮巴拉可爱捏。

【图片】

开幕式的舞蹈水平好高,红色的扇子带着红变白的带字像是毛笔在空中挥舞。

和连队和 zyd 学长面基。懒得 P 头像所以就不放了。连队好帅啊[崇拜]。index 可爱捏。

然后是期待的面基活动。烧烤。牛肉砂锅不赖,烤大蒜一坨。有个大蒜基本是生的就端上来了,一口吃下去整个下巴都没知觉了/tuu

唱了歌,爽唱 god knows 和一些曲目。尝试唱了丸之内但投屏的版本是不熟悉的 live 版且收音奇烂。怄火。

本地人林哥还是太权威了。

回酒店有点晚了。希望不要影响第二天的状态。

没有打印纸质资料,不管了。

11/16

syy 被蚊子闹了一宿没睡好,但可能刚洗完澡加上皮糙肉厚所以自己没受什么影响。

【因为一些原因先删除做题过程】

但反正是打星,玩的很开心。

和队友跟哥哥合了影,开心。

滚榜很有意思,看到主持人从容不迫地念出「noip200分被别走散抓摆不会梦见noi笔试差一分退学去组一辈子乐队」还是很难绷得住的。

最后拿着沙袋发的 60 元餐券去食堂狠狠地扫货,买了一些饮料和一大把烤肠。这个大月饼皮也太湿了,馅也不好吃。不太行。

P11781 [COTS 2012] 机器统计 \/ MULTI

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-11-23 10:53:46

Link

平面上有若干一类点,每次询问在平面上加入一个一类点(询问间嘟立),求新增 $k$ 个二类点,满足所有二类点横纵坐标不同且对每个二类点,存在一类点在其右上方(严格)的方案数。所有点坐标均为正整数,$k\\le 30$。


为了方便将所有一类点坐标减一,将判定条件转为严格。

显然一类点的坐标为二类点框出了一个合法区域,这个区域是一个折线。如果没有新增点的操作,我们只需要在这个折线区域里放进 $k$ 个横纵坐标不同的点。因为限制条件上紧下松,所以从上往下 dp 是容易的。

我们有单次 $\\mathcal{O(Vk)}$ 的 dp 做法。设 $lim_i$ 为第 $i$ 行的折线右边界,设 $f_{i,j}$ 为从上到下第 $i$ 行,已经填入了 $j$ 个点的方案数。转移式是 $f_{i,j}\\leftarrow (lim_i-j+1)f_{i+1,j-1}+f_{i+1,j}$ 。答案即是 $f_{1,k}$。

考虑新加入的一类点,如果其在折线内部则不影响答案,如果在折线外部则会对折线上连续一段的右边界拓展。

关于拓展有一些性质:折线的前缀和后缀的转移是没有变化的,折线被修改的这一段的转移是完全相同的。那么我们就已经有一个用矩阵维护转移的 $\\mathcal{O(qk^3\\log V)}$ 做法了,但这个跑不过去。考虑折线中间被修改的一段,如果我们知道在此之前选择了几个点,在这一段内又选择了几个点,那么贡献就是一个组合数。这过程是 $\\mathcal{O(k^2)}$ 的。既然能够快速计算被修改的段的贡献,那么我们只需要将前缀和后缀的答案合并上这个组合数即可。

设右边界被修改的区间长度是 $len$,区间内新的右边界是 $L$,在此之前选择了 $i$ 个点,在段内选择了 $j$ 个点,方案数就是 ${len-i\\choose j}{L\\choose j}j!$。

前缀的贡献就是上面的 $f$ 数组,后缀的贡献应该怎么求?我们考虑 dp 的过程,因为 dp 是逐行的,我们只需要求出当前行每个元素贡献到答案位置 $(1,k)$ 的系数即可。这个可以倒着 dp 求出,转移式与上面的 $f$ 基本一致。至此,我们就解出这道题了,复杂度是 $\\mathcal{O(Vk+qk^2)}$。

一个小问题是模数小于 $V$,如果使用预处理阶乘来求组合数,就会出现除 $0$ 的搞笑局面。因为组合数下面的数很小,所以可以直接 $\\mathcal{O(Vk)}$ 求。

code

const int N=1e5+5,lm=1e5,mod=10009;

int f[N][33],g[N][33];
int C[N][33];
int J[N];

pir a[N];
int lim[N];
int rlim[N];

void add(int &x,int y){
    x=x+y>=mod?x+y-mod:x+y;
}

void init(int n,int k){
    C[0][0]=1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=min(i,k);j++)
            add(C[i][j],(j>0?C[i-1][j-1]:0)+C[i-1][j]);
    J[0]=1;
    for(int i=1;i<=n;i++)
        J[i]=1ll*J[i-1]*i%mod;
}

signed main(){
    int n=read(),k=read();
    for(int i=1;i<=n;i++)
        a[i]={read()-1,read()-1};
    init(lm,k);
    sort(a+1,a+1+n);reverse(a+1,a+1+n);
    f[lm+1][0]=1;
    for(int i=lm,j=1;i>=1;i--){
        lim[i]=lim[i+1];
        while(a[j].fi==i){
            lim[i]=max(lim[i],a[j].se);
            j++;
        }
        f[i][0]=1;
        for(int l=1;l<=k;l++)
            f[i][l]=(1ll*f[i+1][l-1]*max(0,lim[i]-l+1)+f[i+1][l])%mod;
    }
    lim[0]=1e9;
    reverse(lim,lim+1+lm);memcpy(rlim,lim,sizeof(lim));reverse(lim,lim+1+lm);\/\/二分找到修改的区间长度,存一个倒序的右边界,在这上面二分
    g[1][k]=1;
    for(int i=2;i<=lm;i++){
        for(int j=0;j<=k;j++)
            g[i][j]=(g[i-1][j]+1ll*g[i-1][j+1]*max(0,lim[i-1]-j))%mod;
    }int q=read();
    while(q--){
        int x=read()-1,y=read()-1;
        if(lim[x]>=y)
            print(f[1][k]),pc('\n');
        else{
            int r=lm-(upper_bound(rlim+1,rlim+lm,y)-rlim-1);
            int len=x-r+1;
            int ans=0;
            for(int i=0;i<=k;i++){
                for(int j=0;j<=min(i,y);j++)
                    add(ans,1ll*f[x+1][j]*C[y-j][i-j]%mod*C[len][i-j]%mod*g[r][i]%mod*J[i-j]%mod);
            }print(ans),pc('\n');
        }
    }
    return 0;
}

CSP-S2024邮寄

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-10-27 19:34:15

CSP-S2024游记

『バッハの旋律を夜に聴いたせいです。』

Gusty Girl

Day 0

到酒店。在酒店试了半天电视都无法投屏。

晚饭在周围的一个小夜市解决的。教练怕吃坏肚子所以不让吃占据了夜市 4/5 的海鲜或烧烤,于是吃的烤冷面和凉面。

试机的时候见到了 syta,绝帆,fairytale 和 TomGreen。

试完机和同学在一个屋里颓,被教练抓包遣返回各屋了。后来在躲进其他同学屋里的时候遇到了其他同样躲在这里的人。

发生了不少有意思的事但我不知道要怎么写。

Day 1

早饭好简陋。

上午面到了 快乐的大童 ,一起看了奶龙。

午饭感觉不如 wfyz 食堂自选。

下午有点困。带巧克力带少了。

在开考前去面到了 LiJoQiao,还留了照片。很开心。

「这里应该有一张图片但还没收到」

开场看完 T1 就会了,没写。

T2 花了好长时间想扫描线。实际上只需要贪心即可。

40min 写+调完后发现自己算速度的式子错了,改完之后过了大样例。这个时候大约 1h。

回头 3min 写完了 T1。

想到了去年的情况所以把 T3 和 T4 都读了一遍,T4看起来好鬼畜,T3应该是一个 dp 优化。

于是先开了T3,一开始写了一个 $f_{i,j,0/1}$ 的状态,但转移写错了,导致完全没有发现任何性质,后来换着设了好几种状态都不行。

上个厕所回来发现转移式写错了,重写了一遍发现这个玩意是一个全局加和单点修改,需要维护若干集合,支持往某个集合内加数与求某个集合的最大值。

在大约 5:10 的时候通过了 T3 。代码非常短,导致以为自己假了,于是又花了 20min 写了个拍子。

然后在 T2 拍子与 T4 部分分中选择了后者,在第一遍读题时发现了其值域只有 $\log$ 但在想部分分的时候降智没想到。

于是只打了 16 分的 A 性质。因为一些奇奇怪怪的地方调了好久。调完大约 6:00 了。

于是检查了好几遍文件,摆了。

预计得分 100+100+100+16=316。

T4 应该再拿些部分分的。但场上被 T2 ,T3 错误转移和 T4 A性质耽误了太久没时间想了。

出考场发现了很多人都有一大车 T4 部分分。

回程在车上看了粥的 PV。

我去,君君上岛了

以及最后的手书好帅。少狼歌剧。

车上漏风,戴耳机会被它自带的降噪搞得音量时高时低。怄火。

P4186 [USACO18JAN] Cow at Large G题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-11-08 19:01:57

Link

贪心神仙题。

注意「割」字眼在文中的实际意义并非割点/割边,而是割集

考虑把在放满人情况下,人只往上走,Bessie 只往下走情况下,人抓到 Bessie 的点/边称为相遇点/边,选择其中所有 没有祖宗是相遇点/边 的相遇点/边,作为根到叶子的割集。(这里不需要纠结边和点在割中的区别,可以看作在每条边中间都放了一个中间点来将边转化为点,以下直接简称为相遇点)

那么我们会发现答案就是割的大小。

考虑证明。

首先其一定存在,这个显然。

割集内的每一个点都可以不唯一但不重复的对应到一个叶子,这里不唯一是没有关系的,不重复是较重要的。这意味着我们可以用割来对应题目的解——选择的叶子集合。以下对于答案的讨论都是对于割集的。选择割集所对应的叶子集合是一定合法的。

接下来考虑是否最优。

将一个人的路径是所在叶子到根的唯一路径,因为反过来追是一定追不上的。

非相遇点是无用的,因为这些点要么是人在不错过 Bessie 时到达不了的点(割上面的点),要么是可以被割中点所替代的(割下面的点)。

在割下面(更靠近叶子)的相遇点是无用的,可以被割中点替代。

根据选取规则,割上面没有相遇点。

所以由割集得出的答案叶子集合是一个存在,合法且最优的答案集合。

(感觉证得好混乱,但感性理解是非常容易的)

代码实现则非常简单,只需要预处理一下每一棵子树的最浅叶子到自身距离,求解则直接 dfs 找割即可。

code

const int N=2e5+5;

struct edge{
	int v,nxt;
}e[N<<1];
int head[N],tott;
int in[N];
void add(int u,int v){e[++tott]={v,head[u]},head[u]=tott;in[u]++;}

int len[N];
void dfs(int u,int faa){
	len[u]=in[u]==1?0:inf;
	for(int i=head[u];i;i=e[i].nxt){
		int v=e[i].v;
		if(v==faa)
			continue;
		dfs(v,u);
		len[u]=min(len[u],len[v]+1);
	}
}

int cnt;
void calc(int u,int faa,int dep){
	for(int i=head[u];i;i=e[i].nxt){
		int v=e[i].v;
		if(v==faa)
			continue;
		if(len[v]<=dep+1)\/\/儿子是割点\/到儿子的边是割边
			cnt++;
		else
			calc(v,u,dep+1);
	}
}

signed main(){
	int n=read(),k=read();
	for(int i=1;i<n;i++){
		int u=read(),v=read();
		add(u,v),add(v,u);
	}
	dfs(k,0);
	calc(k,0,0);
	print(cnt),pc('\n');
	return 0;
}

2024-2025 ICPC, NERC 线上赛参赛笔记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-11-19 00:09:01

队员是我,wcz 和 gwf。

队伍名是 維多利亞皇家近衛學院附屬高中陌域坍縮部。gwf 起的名。

我跟他们俩不在一块,所以用的QQ群。

一开场各自做了签到,然后开始分工。

我切完签到正在想 B。感觉很困难。别人也把简单题做完之后讨论了一下L,我的式子假了,wcz 写了一个枚举过了。

然后我们交流了一下题目,我开始做 G,gwf 在 B,wcz 在 K。

我对着 G 乱想了一通发现可以通过查前面有 0 的 1 段数和全部的 1 的段数来判断第一个位置是不是 0。

想到就赶紧写,写完发现过不去。吃了无数发罚时后发现是最后还有一个输入没输。

这个时候过了 6 题了,比赛开始了一小时左右。

我跟 gwf 在讨论 B,wcz 在 K。

gwf 一开始想的是一个差分状物,但把两个位置的变化变成了三个位置。感觉这样处理就更麻烦了。

我手玩了几组样例发现可以倒推,从只由某一个值组成的序列倒推出原先的序列。这时的我猜测倒推的开始位置是最小值的位置。

后来发现这个可以二分,于是就开始写。写完一直 WA3,实际上是之前猜的从最小值开始是错的,应该从最可能让每一个位置都合法的位置开始。这个位置不好找,那么可以不找。因为这个贡献是直接作用在下一个负数上的,中间经过的可以不用处理。写完之后又 WA 了一发才过,无敌了。

在我写 B 的时候 wcz 已经把 K 切了,他前面贴边走,最后在一个 $50\times 50$ 的格子 dp,过了这道题。很牛。

因为 wcz 是乱搞大师,所以他接下来一直在冲 M。

我写完 B 的时候 gwf 也会做 D 了,但他还要回宿舍,只剩下了半个小时的时间。

这个时候大约九点十分。

wcz 发了个 M 的代码让我跑,但很快发现这个假了。

我一开始在看 F ,但感觉很困难。

然后看 I ,初步有了一个 $\mathrm{O(\frac{min(n,m)nm}{w})}$ 的想法,但其中的 $\mathrm{O(\frac{n^2m}{w})}$ 我还没想好怎么做。

回头发现已经快十点了。gwf 回宿舍了,把遗产——他的代码和思路发了过来。他的代码基本写好了,但还没调出来。

因为我之前没看过 D,也不知道具体的转移方程和转移式,再加上暂时联系不上其他俩人,所以花了好长时间读代码。

读出来的问题也基本是小错误,比如初始化和加负数的时候用大于等于模数来取模会寄,最后十分钟终于调出来了。很爽。

总共过了⑨题,吃了一堆罚时加上压线交题导致排在同题数的倒数。

再给一些时间或许能把 I 做出来,但我不好说(因为现在还没想出来怎么做)。

感觉很打得很爽。像 K 题这样的是我不擅长的题,却是 wcz 比较擅长的,gwf 也很擅长分析题目性质,最后 30min 写完了一个一点不好写的代码,B 题也想出来了正解。

最后排在了 104。

唯一就是,G 到底应该怎么想到这东西啊。这也太抽象了。

共 52 篇博客