NOIP2024游寄
Day-20?
T1
二分有想法了很久,但是一直没想到二分什么东西,就一直在手搓样例证伪自己。
然后就莫名其妙的想出来了?
因为上下界没搞定白白浪费了许多时间T4的暴力时间,最后换了一个比较新颖的二分写法过了。
T2
不难发现子串的传递性,二分的性质一下子就出来了,但写的时候 check 处理的晕头转向,很多地方也不知道%一个 lena 是在干什么,反正又调了半天。
似乎有一个样例没过却拿了23pts?
补的时候好像没有改动太多地方就过了,才发现考试的时候写的一些想当然的东西是对的,反而一些我注意到了的“问题”给对的改错了。
T3
\(n^3\) 的区间dp是显然的,不过一看期望就敬而远之了,其实\(n \le 100\) 的40pts甚至$ n \le 5000$的80pts是有戏的虽然以我的dp不敢保证。
代码不是很长但期望似乎有点难理解。
T4
部分分、性质巨多,试图想了一会正解,但我发现按dfs序想居然要我 \(O(n)\) 枚举LCA?
加上T1,T2两个二分耽误了不少时间,果断弃疗,只是草草的打了性质A的不带修情况拿了10pts。
听了听讲评,其实还可以理解,感觉有30~40pts的暴力是比较可做的。至于正解,转成欧拉序可以有一些比较优美的性质方便数据结构维护,但线段树要维护l,m,r等等好几个东西,分讨也不少,先放放吧。
/bx smy补出来了T4
Day-14
T1
好想又好写,只要在筛一下质数,再判断一下若干次方即可。
但我先是没判次方,后面手动统计每个数是否有质数因子,发现这很显然是有的。
T2
打了个表,发现似乎有什么性质,二进制都打出来了,还是试图找 \(O(n)\) 的写法,看看 \(a_i\) 之间是不是有什么联系,异或了一下,什么也没发现,只能打40pts跑路,然后发现不做数据点分治,判断B是否大于就能水过55pts。
显然对于每个B,如果包括则其小于A且B的二进制1为必然被A的所包含,只要一直把A删一即可判断出A所能包含的B即可。
T3
30pts也挂了,阴间,我先写着。
写了一大坨丑陋的东西只拿了30pts,甚至没过第二个样例。
自动机是显然的,*号只用当成下一个即可,反正全都能匹配。
高精好烦,不一定补的出来了
T4
我们假定牛牛不会因为前一扇门关上而当前的位置门也要关上而被压成牛排,那只要一直向前尽可能走即可,简单明了,可得30pts。
hack当然也简单明了,\(i\) 位置的门关闭时间为1到正无穷,而 \(i-1\) 的门会在牛牛走到后落下。
对于题面的 \(a_i,b_i,c_i\) ,\(b_i\) 可以等于 \(b_i\) 与 \(c_i\) 等问题,相等的唯一意义就是该时刻 \(a_i\) 这地方不能待了。
飞哥讲的好像有问题,他的代码可以像smy说的那样“挤过去”,似乎也可反复横跳,但他没有考虑到!彼此都没注意这个问题,一票人争论,所以smy和我hack,但hack不掉。
对于\(a_i,b_i,c_i\) ,\(b_i\),处理成一个个时间段离散化,这个dp的枚举方式是类似最短路的,找一个时间最短的看看前后两个门能不能转移,但问题就在这个开启的判定上,飞哥讲的是对于 \(t\) 时刻当前位置与下一位置是否打开,实际上他写的是下一位置的 \(t+1\) !
但smy说我想的不对?我好像没有理解他“穿墙说”的精髓,不管了,似乎可以补出来,应该不是假题,但数据太水了。
飞扬的闸门赛高!
Day-13
T1
先手推了一会,硬推1到10,发现 \(O(n)\) 性质,理论80pts到手。
之后尝试冲击 \(O(log n)\) 的做法,但不会,想出来一个十分唐的分块打表,考虑只有三个数即可推出其后所有数以 \(10^6\) 为一段,最多 \(10^3\) 段,但是挂了10pts。
正解的式子听懂了,但是对于各种推导方式没有全明白,可能是讲的问题?
感谢伟大的CTC及时指出了我的错误,我回头施工红黑名。
T2
\(O(n^2)\) 的暴力好想,打表后不难发现对于 lx 和 ly 如果等于0,那显然是一棵连起来的树,答案为1,40pts到手。
其实说来挺唐,我把清空vis数组的操作居然放在了每一次操作最前面,本来在最后最前都可以,但是对于lx==0 和 ly==0 的特殊性质会TLE。
正解数位dp其实对于我来说挺难想的,第一遍飞哥讲的式子都没太明白支持smy正义薄纱,后面自己画图看式子勉强明白了,改了个记忆化搜索就过了,但为什么我定义了y1还没有事?
T3
只是知道了前20pts的 \(O(n^2)\) 做法,没太明白后面的做法。
T4
我们充分发扬人类智慧。
对于前20pts,逐个最短路的复杂度可以接受但我没写。
本来针对树的情况,结果因为数据过水,多骗了35pts。
考虑到相比于 \(10^5\),多出来的边真的可以忽略不计,大概率连在了子树内部,也有可能连上去了也不会造成更大的贡献。
挂了40pts。
Day-12
饭卡羽球好耶。
T1
小清新数学题,主要是他够小,我能推出来性质。
我们不妨设 \(mod=A+B+C\)
对于第一种,我们不难发现,\(C=2C\),所以
\(C-A-B=C-(A+B)=2C-mod\), 则\(C=2C%mod\)。
对于第二种,\(2C<S\),所以\(C=2C%mod\)依然成立。
显然答案就是\(C \times 2^k\),然后模上一个mod。
但我输出没换行啊!还我60pts!
T2
最短路也可以用于处理两点间最小的最大值。
离散化一下求前缀和优化,然后每次询问时二分一下。
不知道为什么会在某几个点上疯狂输出1。
最小生成树的做法很强,直接枚举 \(c_i\) 好想又好做,由于 $ c_i \le 600$ ,不会超时。
T3
紧急恶补树剖!
前30pts比较好拿,直接暴力即可,对于菊花图,由于扩散时间 \(T \le 3\) 直接分讨即可但我写挂了。
试试用分块的做法补一补。
T4
飞哥讲的很好,贪心性质显然,暴力我也想不出来。
数据水所以人打不死?
补完T3再说。
我终于知道为什么本地没有成绩了,我没建子文件夹!!!
Day-11
晚间比赛骇人!
T1
我们不难观察到两个性质
对于若干个数
\(a_i,a_{i+1},a_{i+2}....\) ,\(a_i\) 先于后面的数先进行幂运算显然比后面的数进行幂运算后再回头与 \(a_i\) 进行幂运算优。
$a_i{{a_{i+1}}{a_{i+2}}} $ 显然比 \(a_i ^ {a_{i+1} \times a_{i+2}}\) 大。
对于1,最优就是将后面的数都做为1的幂次方,最后还是一。
T2
一开始想假了。
参考Kruskal的过程,每加入一条边,就是将两个不连通的块连到一起,从小到大每枚举时,我们发现,对于任意 \(w \le edge_i.w\) 其中 \(w\) 不是给定边,那么加入 \(w\) 两个端点必在已经连成的子图中。
我们设一个 \(sum\) 表示理论能连几条边,\(cnt\) 表示连上了几条边,显然 \(sum-cnt \le w-i时\) 无解。
之后启发式合并,将小的并到大的上面即可。
T3
只会 $ O(n) $ 的15pts。
T4
【数据删除】【数据删除】【数据删除】
Day-10
要学树剖力。
我去年会树剖?
我TMD今年暑假学了一晚上没学会?
文化课恐怖如斯。
石膏棒球队,杯子ball强强强。
/bx气绝办寿的RP++。
洛谷冬日板绘居然有石膏一席之地,SGRed Star over luogu!!
感受一下小小的养正融新震撼!!
Day-9
T1
不难发现 \(a_i \le 700\),又每个数可以拆成若干个质数之积,所以可以暴力统计每个数的因子。
接下来我们如下统计:顺序逆序遍历,如果一个数的质因子集合与之前的集合有交集,则标记为可拓展,并将新质因子的加入,如果没有,则清空,重新开始,。
如果前后两遍一个数均无法拓展,则不可行。
其次注意如果 \(2 \le n\),则有1必不行。
T2
首先是我没有观察出来相互独立,其次是我暴力没打出来,最后是我发现他说的是各个方案的喜悦值之和。
读假题了。
但我现在会了,csr讲的十分明白,式子其实是好理解的,对于每个,我们直接考虑 \(f_{i,j}\) 表示前 \(i\) 个还有 \(j\) 条R狗没有匹配的方案数。
\(g_{i,j}\) 表示权值和,开乘 \(a_{i,j}\) 就完了。
T3
听懂了20pts的做法。
T4
【数据删除】【数据删除】【数据删除】
DAY-8
smy寄了,默哀。
T1
简单题,但我一开始想不出来。
先想了一个分层图做法,应该挺对的,但我弄出来了个全输出 No solution. 的东西。
于是用了一个flyd变形,转移的时候发现我开的第三维时间维竟然是用 dp[t%k+1][i][j] 来表示 t%k+1,属于是我表示我自己了。
算一算复杂度,糊个BFS就行,记得特判一下 \(k=0\) 的情况,还要记得加个控时,时间太久就输出 No solution.,挂了10pts。
T2
先观察题面,由于可以随意移动,显然每个点至多被动一次。
想了一个用2去隔离1,0的做法,和正解有点接近,大致就是钦定若干1,0不动,尽可能的动零散的,2形成的隔离区间可以直接塞进去,冲突的用2挡一下或者动少的那个。
但最后也没有转化成正解,想不出来dp。
最后写了一个很显然的贪心,有不一样的就加一,针对随机数据很好使。
居然还有40pts。
T3
T1的试错耽误太久时间了,看完T2后就剩大概半个小时了。
题意简单明了,对于前40pts,直接求出所有字符串之间的匹配度后直接贪心的去选。
我们再看回文串,不妨想一想,回文最伟大的性质就是前后缀等价,我们只考虑前缀,然后向字典树上插,对于重复,我们考虑 \(p^2-(p-1)^2=2 \times p -1\),只截取下没有重复贡献的地方即可。
对于不回文、前后缀不等价的情况,csr讲了一个trick:扩充字符集,强行使其等价。但我不是很会。
T4
一堆人先开T4,到最后也没有调出来。
15pts的 \(O(nq)\) 做法不难想,5s冲过\(O(1e8)\) 不是很难,但lwb线下冲过了85pts。
对于没有3,4操作,由于因数至多 \(\sqrt{n}\) 个,所以直接修改即可,但修改时单点,差分一下,而查询时我们使其变为区间,再根号分治一下即可。
考虑链的情况同理,3,4操作等价,用线段树维护一下即可。
又由于1,2,与3,4独立,分开考虑贡献即可,3,4我听懂了但太难办了。
思维难度还好,但码量有点吓人,总而言之 \(O(n\sqrt{n})\) 冲过去了。
晚上有暴力场,说来比较幽默,周五难得的 ABC 不打,结果搬了一场 ABC 来打,糖丸了。
Day-7
我突然发现晚间比赛的总结都是在下一天的位置,应该很对。
T1
唐题。
T2
唐题+1,很快就A了
T3
接着T3唐完了,黄题我 TMD 没有场切。
回溯的时候忘记或一下儿子了。
T4
T4一看到博弈就感觉是 DP ,考虑到我荡气回肠的 DP 水平,还是算了吧。
是一道很显然的Nim博弈?但我不会吔!
先学了半天博弈论,被P4279 [SHOI2008] 小约翰的游戏硬控一个小时csr也被硬控。
T5
T5赛时有差分约束的意识,但虚点建错了,而且边权有正有负,dij一跑就挂,导致压根没有实现出来。
csr讲的贪心其实挺好理解的,好写多了。
T6
T6知道了一个小trick,对于 \(b_i\) 不是1才对答案有贡献,但哪怕就只是一直乘以2,60次左右到头了,因为数据保证不会爆long long。
所以暴力维护即可,\(10^5\) 用set维护一下带只log包能过的。
T7
T7刚开题分析一下,发现问题可以转化为每次选一条未选的最长链,然后以为要用长剖,但听着周围T7写树剖哀嚎一片长剖咋写?,果断放弃。
其实长剖很短。
看了题解后会了一个新做法。
不难发现每次加入的必定是叶子结点,因为如果从一个叶子到另一个叶子,肯定不会走他们 LCA 以上的部分,上面的边只会在第一次走的之后和离开这个子树的时候走。
所以我们每次去找一个 \(dep_{max}\) 叶子,把它加入答案即可。如果一条边在算贡献时算了两次,那么这条边就不会对答案产生贡献,所以把它跟到它的边贡献全删完,然后每条边只会被删除一次,且每次都删的一个前缀,所以直接暴力从找到的叶子向上删,遇到被删过的点就退出。
至于深度就用线段树维护,每次删边就把子树内的所有点深度减去边权,维护区间最大值和区间减即可。
P1505 [国家集训队] 旅游 终于调出来了!
一直8pts,only AC on#11。
观察了一下讨论区,和我一样分的挂的不是同一个地方。
但我必须要写点什么纪念一下被蒸发的一个下午与AC的艰难历程。
首先是首先的首先,伟大的csr敏锐的发现我的代码没法剔除 LCA 的min,max。只要将最后在一条链上时把深度较浅的点(就是lca!)的dfn序+1即可。
然后是然后的然后,伟大的csr发现我tag居然在直接赋值而不是异或,两次取反等于没有取反,异或天生适合处理。
其次是其次的其次,我发现取反时max,min不能简单的交换,还要记得换完后取反!
最后是最后的最后,我发现边权转点权的时候深度判断反了,由于父亲对儿子是一对多的关系,所以转的点权奇奇怪怪。
完了吗?
尽管都没有词了,但我还是要说最后一句:
查询的时候要不要pushup单点修改要不要pushdown。
太蒟了。

浙公网安备 33010602011771号