2025Dec.居家集训游记

在家集训也能叫游记吗?

总所周知每一个OIer都爱写这东西(欸我CSP-S游记还没写),所以在家集训也要写。

DAY1 11.8

有点忘了,游记是9号写的。

好像不安了一天,因为我太菜了,也有点想学校里的朋友。

学习了 kruskal 重构树,它满足二叉堆的性质,可以做让最小边权最大(降序排边),让最大边权最小(升序排边)的问题

例题:洛谷P4768 [NOI2018] 归程

重构树+最短路,在重构树上倍增找到海拔最低的不会被淹的虚点,其子树就是能坐车到的所有点,然后输出子树里的最短路。

这题的“其子树就是能坐车到的所有点”利用了二叉堆性质,即根节点和子节点一定成偏序关系,很有价值。

多组询问+多测的图论题最出生了,硬调2.5h。

DAY2 11.9

回学校取了趟书,同学们真好呜呜呜。

今天是数论。

P5253 [JSOI2013] 丢番图

\[\frac{1}{x}+\frac{1}{y}=\frac{1}{n}\\ xy-xn-yn=0\\ xy-xn-yn+n^2=n^2<=>(x-n)(y-n)=n^2(这一步鬼能想到,\%一下GH大佬)\\ \]

所以是求\(n^2\)的因数对个数。

直接算\(O(n)\)超时,对\(n\)进行质因数分解,\(n=\sum_{i=1}^{k}p_i^{e_i}\),那么\(n^2=\sum_{i=1}^{k}p_i^{2e_i}\),每个质因数都有选\(0-2e_i\)\(2e_i+1\)种选择,可以看出来这样是不会重复的,因此因数个数为\(\prod_{i=1}^{k}(2e_i+1)\),结合超过\(\sqrt{n}\)的质因数最多只有一个的性质,时间复杂度\(O(\sqrt{n})\),因数肯定是首位配对,又因为\(n^2\)一定为完全平方数,中间会有个多出来的,因此答案为\(\frac{\prod_{i=1}^{k}(2e_i+1)}{2}+1\)

P1445 [Violet] 樱花

和上面的题一样,问题在于求每个质数在\(n!\)的质因子里出现了多少次。

GH大神使用了下面的公式(勒让德定理),其中\(e_p\)为质数\(p\)\(n!\)质因子里出现的个数。

\[e_p=\sum_{i=1}^{\infin}\lfloor\frac{n}{p^i}\rfloor \]

然而其实对\(1-n\)暴力质因数分解可以直接卡过去

然后我忘了区间筛怎么写了,欧拉函数递推公式看一遍忘一遍。

P4626 一道水题 II

注意到\(lcm(1,2,3,\dots,n)\)等价于\(\prod_{i=1}^{k}p_i^{e_i}\),其中\(e_i=\lfloor\log_{p_i}n\rfloor\)

居然被我切了,那确实水

这个题的模数是\(10^8+7\),是的这也是个质数,被坑了,出题人想干啥

P1306 斐波那契公约数

首先,神人结论,\(F[n]\)为斐波那契数列第\(n\)项,假定\(n<m\)​:

\[gcd(F[n],F[m])=F[gcd(n,m)] \]

GH大神:

???孩子们是结论大赛我们没救了

\(F[n]=a,F[n+1]=b,F[n+2]=a+b,F[n+3]=a+2b,F[n+4]=2a+3b\dots\)

欸,这可以看出来\(a\)\(b\)的系数其实也是个斐波那契数列。(注意力惊人)

\(F[m]=F[m-n-1]a+F[m-n]b\),即\(F[m]=F[m-n-1]·F[n]+F[m-n]·F[n+1]\)

带入原式

\[gcd(F[n],F[m-n-1]·F[n]+F[m-n]·F[n+1])=gcd(F[n],F[m-n]·F[n+1]) \]

引理(???):

\[gcd(F[n],F[n+1])=1 \]

证明:

\[\gcd(F[n],F[n+1])=\gcd(F[n],F[n]+F[n-1])=\gcd(F[n],F[n-1])\\ 设t=n-1,\gcd(F[t],F[t+1])=\gcd(F[t],F[t-1])\\ \dots\\ 所以最后就变成\gcd(F[1],F[2])=\gcd(1,1)=1了 \]

那么原式就又可以简化为\(\gcd(F[n],F[m])=\gcd(F[n],F[m-n])\)了。

再令\(m'=m-n\),就可以继续递归,得到\(\gcd(F[n],F[m])=\gcd(F[n],F[m\mod n])\)

由于\(m\mod n<n\),可以再令\(n'=m\mod n,m'=n\),得到

\[\gcd(F[n],F[m])=\gcd(F[n],F[m\mod n])=\gcd(F[n'],F[m'])=\gcd(F[n'],F[m'\mod n'])\dots$​ \]

再次注意到\(n,m\)的交替实际上是在求\(n'=\gcd(n,m)\),最后剩下的就是\(\gcd(F[n'],0)=F[\gcd(n,m)]\),证毕。

天哪每一步都是惊人的注意力吗

浅色调dalao也太强了。

欸不是模数\(10^8\)我怎么又被坑了。

值得一提的是,同机房LZC大佬也遇到了个模数为\(998442353\)的题。

已完成今日模数不只有\(998244353\)\(10^9+7\)大学习

DAY3 11.10

上午继续做数学。

P5175 数列

矩阵递推挺好玩的,可以发现平方和可以从平方递推,\(a_i^2=a_{i-1}^2+2xya_{i-1}a_{i-2}+a_{i-2}^2\),拆\(2xya_{i-1}a_{i-2}=a_{i-2}(xa_{i-2}+ya_{i-3})=xa_{i-2}^2+ya_{i-2}a_{i-3}\),这些都是上一个矩阵有的,满足递推关系。

本来以为是硬拆找规律,想起了24年暑假集训模拟赛场上耗费2h暴力拆式子推出来的T4。

P5656 【模板】二元一次不定方程 (exgcd)

取最小正整数,所以通解取模的时候如果为0返回的应该是模数。

我以为我公式错了耗了半天,服了。

P2613 【模板】有理数取余

\[\frac{a}{b}\equiv\frac{a\mod p}{b\mod p}\pmod{p} \]

易证

P1593 因子和

一步转化,后面的就很简单了

\[ans=\prod_{i=1}^{k}\sum_{j=0}^{e_i}p_i^j \]

欸不是我怎么想不到这个的啊

下午模拟赛

70+50+0+40=160

T2输出0拿了四十???出题人数据用脚做的吗??

T3倍增的部分分没写完

T4开long long可以再拿10pts

GH大蛇330pts%%%

T1

显然选这个硬币的次数要小于\(\frac{a_{i+1}}{a_i}\),把原题看成进制,相当于至少多少次询问才能使所有位至少在两次询问中不同,

若进制不一样,取最大的ans。

显然对于n位k进制数,它最多能构造\(n^k-1\)个有效数字(0没意义),那么答案即为

\[\max_{i=1}^{n-1}\{\log_{b_i}(i+1)\} \]

其中\(b_i\)\(\frac{a_i+1}{a_i}\),时间复杂度\(O(n\log n)\),瓶颈在对\(b_i\)排序或\(\log\)函数。

T2

通用套路:把坐标系转\(45°\),新坐标\((u,v)=(x+y,x-y)\),原坐标移动变为\((u\pm 1,v\mp 1)\),这样无论向哪个方向走两坐标都会有变化,移动范围\((u\pm m,v\mp m)\)\(u,v\)独立,降维,下面就可以只考虑一维的方案数再乘起来。

首先所有狼的任意一维坐标差必须是偶数,即奇偶性相同,要不然不可能汇于一点。

\(u\)为例,设终点\(u\)坐标为\(k\),范围\(u-m\leq k\leq u+m\),可以直接枚举,考虑路径组合公式。

对于狼\(i\),位移\(\Delta x=k-u_i\),多出来的\(m-(k-u_i)\)是正负方向抵消的,所以正方向移动了\(k-u_i+\frac{m-(k-u_i)}{2}=\frac{m+k-u_i}{2}\)步,负方向移动了\(\frac{m-k+u_i}{2}\)步,把正方向看做黑球,负方向看做白球,方案数为\(\binom{m}{\frac{m-k+u_i}{2}}\)。预处理阶乘和阶乘逆元可以\(O(1)\)计算,所以答案为:

\[ans=\big(\sum_{k}\prod_i^n\binom{m}{\frac{m-k+u_i}{2}}\big)·\big(\sum_{k}\prod_i^n\binom{m}{\frac{m-k+v_i}{2}}\big) \]

其中\(u_{min}-m\leq k\leq u_{max}+m\),k的枚举步长为2(小数取组合数没意义),时间复杂度\(O(n(V+m))\)\(V=u_{max}-u_{min}\),可以通过本题。

不过GH大佬对此进行了优化(因为他以为这个复杂度过不掉

没听懂怎么优化的,反正\(O(n(V+m))->O(nm)\),然而区别不大(

T3

https://www.luogu.com.cn/problem/P11340

到底是谁在会这种东西??????

把每个人的最高和最低排名当成线段堆在数轴上,如果某个位置不被任何线段跨过,将数轴划分段,每一段都是个SCC(神秘结论),所以想去第一的充要条件是在第一个块内。

线段树维护每个线段(左闭右开),进行线段树二分,维护区间最小值以找到第一个0即可(如果不左闭右开无法区分线段,找不到0)。

T4

不补了,什么玩意,超长数论推式子。

Day4 11.11

其实上午还在补昨天的题

图论

P1407 [国家集训队] 稳定婚姻

我以为是边双,原来要分别建单向边吗

匈牙利板子是不是可以过

P5058 [ZJOI2004] 嗅探器

我写了个假做法,被LZC一眼hack掉了,结果居然AC了???

https://www.luogu.com.cn/discuss/1195935

正解是tarjan小技巧,感觉挺有价值

P2865 [USACO06NOV] Roadblocks G

已完成今日次短路模板大学习

今天怎么啥也没干,明天学学dinic板子

Day5 11.12

模拟赛 100+70+4+30=204

T1

说的什么玩意,其实是并查集板子,读题+写耗时4min。

100pts。

T2

首先不难想到\(n\leq2000\)\(O(n^2)\)dp,这样就有30pts。

定义只删一个为操作1,结合技为操作2。

设现在\(a\)的下标为\(i\)\(b\)的下标为\(j\),容易发现,\(a_i≠b_j\)时可以直接操作2,且一定不劣。

那么关键问题就在于,遇到\(a_i=b_j\)时,如何决策对哪个使用操作1?

直觉上,我们认为应该优先删剩下长度长的,以保证后面出现更多可以操作2的对。

特殊性质1:所有\(a_i=b_i\),那么只要一次操作1就可以破坏掉后面所有相等的对,这样肯定是对的,20pts。

然而大样例会告诉你这是错的,原因就是这玩意不劣但也不一定最优啊。

注意到,特殊性质2,所有\(a_i+b_i=n+1\),意思是最多只有一个相等的对。

那这玩意是可以随机化乱搞的,就是在每个决策点使用mt19937随机删一个,然后用clock()卡时多次贪心,可以加个先用上面的贪心确定答案上界的小优化之类的,反正这20pts水过去了(似乎可以卡掉?但出题人好像没卡随机化乱搞)

70pts。

T3

我不会check3-染色,乱写了个样例都没过的拓扑。

4pts。

T4

首先暴力bfs的20pts是易得的。

然后特殊性质1的10pts其实是找规律,用bfs跑暴力然后对着式子修修改改就过了。

30pts。

T2 T3根本没听懂题解。。。原题也没搜到,deepseek完全不会,倒闭了,不补了。

T4是个*3500。。。。。

deepseek v3.1 vp喜提100+40+0+20=160pts,让我们恭喜人类蒟蒻战胜了AI

学会了dinic

欸这个曼哈顿最小生成树怎么这么难的。

Day6 11.13

今天是容斥

CF317A Perfect Pair

容易注意到与证明把大的加到小的上去肯定比把小的加到大的上面去更优,而且若最大数小于等于0且小于m一定无解,然后按题意模拟。

会发现TLE,因为当最小数为负数时增长速度可能极慢,所以把最小数加到正数这一段直接一个除法算出来,就做完了。

?这东西跟容斥有任何关系吗

CF483B Friends and Presents

像是whk都能考到的水容斥,居然是*1800吗?

第一位朋友能拿不被\(x\)整除但可以被\(y\)整除的+不被\(x\)\(y\)整除的。

第二位朋友能拿不被\(y\)整除但可以被\(x\)整除的+不被\(x\)\(y\)​整除的。

不被\(x\)\(y\)整除的容斥一下显然是\(v-\lfloor\frac{v}{x}\rfloor-\lfloor\frac{v}{y}\rfloor+\lfloor\frac{v}{xy}\rfloor\)

不被\(x\)整除但可以被\(y\)整除的显然是\(\lfloor\frac{v}{y}\rfloor-\lfloor\frac{v}{xy}\rfloor\)

不被\(y\)整除但可以被\(x\)整除的显然是\(\lfloor\frac{v}{x}\rfloor-\lfloor\frac{v}{xy}\rfloor\)

转换题意为代数就是在求满足下列方程的\(v\)最小值。

\[\max(cnt_1-\lfloor\frac{v}{y}\rfloor+\lfloor\frac{v}{xy}\rfloor,0)+\max(cnt_2-\lfloor\frac{v}{x}\rfloor+\lfloor\frac{v}{xy}\rfloor,0)\leq v-\lfloor\frac{v}{x}\rfloor-\lfloor\frac{v}{y}\rfloor+\lfloor\frac{v}{xy}\rfloor \]

然后显然这东西有单调性,直接二分。

CF1750D Count GCD

可以注意到当且仅当\(a_i|a_{i-1}\)时有方案,要不然会多出来前面没有的因子,无法取到最大公约数。

\(\gcd(a_{i-1},b_i)=a_i\),可套路变形为\(\gcd(\frac{a_{i-1}}{a_i},\frac{b_i}{a_i})=1\),求\(b_i\)的个数。

转化为在\([1,\lfloor\frac{m}{a_i}\rfloor]\)中与\(\frac{a_{i-1}}{a_i}\)互质的数的个数,也就是求不被\(\frac{a_{i-1}}{a_i}\)任何一个质因子整除的数的个数,可枚举状态直接容斥。我一开始以为这个东西时间复杂度太大了没敢写,其实质因子个数最多是\(O(\log m)\)的。。。总时间复杂度不会算。

P3801 红色的幻想乡

我真求你了能不能标一下坐标到底是坐标系坐标还是行列坐标。。。

挺好玩的一个题。

释放红雾是整行和整列操作的(释放位置没有红雾正好等价于两雾叠加消失),所以可以降维,用两棵线段树分别维护n个整行和m个整列,查询的时候容斥一下。

插播重要结论

\[a+b=(a\bigoplus b)+2(a\&b) \]

把异或当做不进位,与当做要进位。

由此可得:

1.\(2|[a+b-(a\bigoplus b)]\)

2.\(2|(\sum a_i-\bigoplus a_i)\)​。

3.\(a+b\geq a\bigoplus b\)

4.\(\sum a_i\ge \bigoplus a_i\)

有啥用?

CF1325D Ehab the Xorcist

神题!

根据上面的性质,可以知道当\(u>v\)或者\(v-u\)为奇数就是无解的。

然后如果有解的话,分类讨论构造即可(懒得写了)。

P6651 「SWTR-5」Chain

显然容斥关系是拓扑序的,但如果把禁掉的点两两拿出来容斥是没法做的。

因为图不联通以及源点汇点有多个,设\(0\)\(n+1\)为超级源点汇点便于处理。

\(g_{u,v}\)\((u,v)\)的路径数,设\(f_i\)\((0,n+1)\)经过第\(i\)个禁掉的点但不经过其他被禁掉点的路径数,若我们把\(n+1\)也看做禁点,那么\(f_{k+1}\)就是答案。

\(f_i\)显然可以根据拓扑序容斥,公式为\(f_i=g_{0,u}-\sum_{dfn_v<dfn_u}f_jg_{v,u}\)

其中\(u,v\)分别是第\(i,j\)个禁点,\(f_jg_{v,u}\)为只经过\(v\)到达\(u\)的路径。

还蛮好玩。

P11831 [省选联考 2025] 追忆

我常常追忆过去……

追忆失败,TLE20pts。

“说好了\(O(nq)\)​​​能满分呢?”

我问我自己。

Day7 11.14

不是,我写的游记呢,重启电脑后没了,好像没保存。

懒得补了。

csp-s划线出来了,SD怎么成全国第四强省了

混了个1=和6级√

写了csp又寄

lzc大神表示写这种东西纯费时间

打了Educational Codeforces Round 184 (Rated for Div. 2)

A:没看懂,题面看了三遍,7min才切。显然只有两种选择,比Alice小或者比Alice大,因为一开始选定之后谁拿啥球也是固定的,所以这个题就变成了数组里大于等于a个小于等于a的数哪个多,反正排个序然后二分就做完了。

B:沙比题,这有啥意义,分类讨论+细节处理,害我WA1发。显然陷入死循环的情况只有:1.被左右水流推着死循环2.两个星号连一起他自己死循环3.一个星号一个指向星号的箭头也可以来回刷

也就是说不会死循环的只有<<<*>>>这种情况,问题就在于以星号或者没有星号为界左右两边哪个长,这个细节很讨厌,沙比题。

C:太套路了吧,见过n次。一眼拆式子然后前缀max。固定右端点r,那么答案为∑ai(i<l)+∑ai(i>r)+(r-l+1)(l+r),拆一下,∑ai(i<l)+∑ai(i>r)+(r-l+1)(l+r)=∑ai(i<l)+∑ai(i>r)+r^2 - l^2+l+r={∑ai(i<l)- l^2+l}+ {∑ai(i>r)+r^2},左半部分只跟l有关,记录前缀max即可

D1:挺好玩的这个,首先可以发现对于一个数t,操作一次后这个数的排名会变成t-floor(t/y),那么对所有的数进行这样的边形显然是单调不降的,这启发我们使用二分答案。

但有些数是被删掉的,怎么办?我们又可以发现如果我们不删这些删掉的数,进行完整x次操作后也是单调不降的,它不影响这个数列的单调性,而且我们要找的实际上是一段相同的第一个数,于是就O(xlog1e12)做完了。

到目前为止是1h4min,实时rk1100

D2可能是D1的优化?我不会啊

E博弈论F计数直接睡觉

手速场喜提rk1565,球球了别hack掉我

什么你问我为什么不敲latex?因为我懒了。

Day8 11.15

心情非常不好,洛谷NOIP模拟赛T1感觉会了但细节太麻烦直接give up

补补容斥和dp题单吧

P3702 [SDOI2017] 序列计数

不会,没往矩阵快速幂优化dp想

首先对于20分,暴力dp是很显然的,设\(f_{i,j}\)为前\(i\)个数的和对\(p\)取模后为\(j\)的方案数,设\(g_{i,j}\)为前\(i\)个合数的和对\(p\)取模后为\(j\)的方案数,有转移:

\[f_{i,j}=\sum_{k}(f_{i-1,k}cnt_{j-k\mod p})\\ g_{i,j}=\sum_{k}(g_{i-1,k}cntp_{j-k\mod p}) \]

\(cnt_i\)\([1,m]\)内的数对\(p\)取模为\(i\)的个数,\(cntp_i\)\([1,m]\)内的合数对\(p\)取模为\(i\)的个数,这些都是可以\(O(m)\)算的。

然后直接优化dp(我以为是神秘大力容斥),注意到\(p\)不大,所以构造矩阵。。。

\[\begin{bmatrix} f_{i,0}\\ f_{i,1}\\ \dots\\ f_{i,p-1} \end{bmatrix} = \begin{bmatrix} cnt_0\ cnt_{p-1}\ \dots\ cnt_1\\ cnt_1\ cnt_0\ \dots\ cnt_2\\ \vdots\\ cnt_{p-1}\ cnt_{p-2}\ \dots\ cnt_0\\ \end{bmatrix} · \begin{bmatrix} f_{i-1,0}\\ f_{i-1,1}\\ \dots\\ f_{i-1,p-1} \end{bmatrix} \]

\(g_{i,j}\)转移类似。

P2567 [SCOI2010] 幸运数字

傻逼题,我以为直接暴力容斥不可做,没想到是剪枝。

P4026 [SHOI2008] 循环的债务

没想法

首先可以把钱全放一起,然后各取所需,这样在钱上是与相互换钱等价的,但本来直接给是一步,现在变成放到桌子上再取回来是两步,所以答案要除以2。

那么这就是个背包,\(dp_{i,j,k}\)表示前\(i\)种货币Alice拿\(j\)元,Bob拿\(k\)​元剩下的全是Cynthia的最小拿取次数。

\[dp_{i,j,k}=\min_{p+q\leq cnt_i}dp_{i-1,j-pv_i,k-qv_i}+|p-a_i|+|q-b_i|+|p+q-a_i-b_i| \]

其中\(cnt_i\)是第\(i\)种钞票的张数,\(a_i,b_i\)分别为Alice,Bob原本有的第\(i\)种钞票的张数,\(v_i\)为第\(i\)种钞票的面额。

如果\(p>a_i\)\(|p-a_i|\)就代表把多的扔到桌子上,反之则代表从桌子上拿。至于第三项,这是Cynthia的贡献,\(|cnt_i-p-q-(cnt_i-a_i-b_i)|=|p+q-a_i-b_i|\)

(期中复习)Day9 11.16

是的两天后期中考试,所以复健一下whk。

whk没意思啊,没动力写那个破卷子。

打了cf,ABC水完了吧,21min速切,D怎么是个计数啊,完全没想法,E有想法但写了半天假了,居然前1000????

A从后往前操作那肯定只能转换为最后一个字符,所以答案是长度-最后一个字符的出现次数。

B经常闲的没事玩浏览器标签页的人都知道,当标签过多页面放不下的时候你一直点最右边的叉号就能一直关,直到标签页回复原来的大小,再去最左边一直点就能关掉所有了。

平常闲的没事关标签页玩,一眼出答案(

注意如果标签页原长和窗口宽度一样的话显然最左边和最右边是一样的所有答案是1不是2。

C一眼贪心吧这个东西。肯定要让合并后的数字尽量小,让下次合并代价尽量小,所以贪心策略就是合并当前代价最小的对。

感觉很多人没速切是因为这东西的实现没那么简单(?其实还是很简单的),碰到动态最大最小那肯定要用set了呀(其实是multiset),因为要动态,set里存编号,比较函数根据存的编号比较数组元素,然后取出一个对计算贡献后就把原数组这两个位置的值修改为最大。这样肯定是对的因为对的编号是连续的,只改合并集合外围的元素就可以内部肯定访问不到,然后就做完了。

E的想法懒得说,反正假了。

(期中复习)Day10 11.17

无事发生,发现自己“仓皇北顾”的皇都不知道是哪个皇,气笑了。

whk随便水水得了反正考不好。

Day13 11.20

今天cf是百合场!题目很好玩,赞美出题人!百合赛高!

Wow! Coder *** competed in Codeforces Round 1065 (Div. 3) and gained +55 rating points taking place 800

我终于超过历史最高了。

A.《与你编缀的泡沫》

B.《终将成为你》

C1/C2.《恋人不行》

D/F.《我推是反派大小姐》

G.《安达与岛村》

H.《一周一次买下同班同学》

出题人成分够全啊,怎么不带恋死玩()欸我怎么全看过啊()必须点赞

A.我怕写式子会被hack所以枚举,反正n=100

B.读错题了,显然这个化简就是\(|a_n-a_1|\),如果可以就保证\(a_n=a_1\),然后其他项全填0保证字典序

C1.我支持紫阳花!所以答案就是全输出紫阳花!

怎么还有支持玲奈子水仙的(?

首先对于换了也没用的先异或过去,然后发现对于每一位,如果不交换不优直接交换肯定不劣,因为这个操作对后面没影响,反正只有01两个值,所以就大胆换(其实注意到不模拟直接统计也能做,但这对时间复杂度没有任何帮助)

C2.位运算求最大那肯定逃不掉从高到低贪心的吧,这个C1给的提示太好了,C2加个从高到低位贪心即可,因为更高位显然对答案贡献更多,如果在某一位某个人赢了,那她就全局赢了,因为后面的位再怎么力挽狂澜也无力回天。

记住不要对0取对数。。。要不是习惯交高版本c++我就被这个勾hack了

D.转换题意可知是序列上小数对大树连无向边然后问整个图能不能联通,这很容易能想到并查集,对每个并查集维护集合内最小值,用set记录每个并查集的root,然后大数往前找所有的最小值小于这个数的并查集并连边。但这样tle了,于是注意到D只要判断是否存在,所以只要找到一个前后割裂的断点,即左边最小值比右边最大值大的点就是不存在。

F.根据我D那个tle的做法,时间主要浪费在对每个并查集都找一下连边,这个东西的优势是正好符合树的构造。那么考虑优化,我们set是可以重载比较运算符的,我们不要存最小值,存最小值的编号,然后set内的排序按这些集合的最小值从小到大,这样就单调了,对每个数从小到大合并,碰到无法合并的就直接break,时间复杂度不会算大概O(nlogn)吧反正过了。

G没磨出来。

Day14 11.21

vpNOIP模拟赛3,100+100+20+0=220pts

什么GH大神会T3不会T1??

T1 首先我们注意到,如果某个玩家当前在操作,如果他想跑路那后手是追不上的。所以这种情况下对于后手,为了赢,肯定也撤退去合并兵力,然后两军决一死战。

但对于第一步的先手,如果$$a[m+1]<a[m]$$,他完全可以去吃掉这个$$a[m+1]$$,但如果$$a[m+2]\geq a[m+1]+a[m]$$,他把$$a[m+1]$$吃了就会被$$a[m+2]$$吃,所以这样就不能吃。

然后这一步后,如果左军吃了右军,那么右军肯定跑路,因为既然吃了,那么肯定满足$$a[m+2]< a[m+1]+a[m]$$,他不跑也完蛋了,所以变成第一种情况撤退all in。线性扫一下就行。

T2 把每条边的不等式区间限制减去点权(点权是从当前节点到根的计算结果),得到到达这里的x区间范围,然后问题转换为x能满足多少条不等式,这就是个差分,用map维护一下因为要离散化,然后就没了。一开始以为是欧拉序+线段树结果发现没必要。

T3 暴力都不会打,启用mt19937大法搞满了暴力分,赛后补题完全看不懂题解,毁了。

回初中看了初三班主任,非常好的一位老师!愉快聊天1h

后面的停更,因为主播懒(好像也没啥内容?以后有时间会补补总结什么的,在学校回家时间太短懒得写),总之就是NOIP毁了

posted @ 2025-11-10 00:07  司马只因锥  阅读(42)  评论(0)    收藏  举报