做题记录

遇到有意思和有坑到我的题会记下来(当然没怎么有意思的也可能会记)。

也可能会写一些做题的心路历程。

5.12 P3041 [USACO12JAN]Video Game G 建ac自动机,然后dp,注意有的tr[j][k] 不存在,导致这些状态之间不可以转移,所以dp数组初始化成 -inf。

5.13 P1005 [NOIP2007 提高组] 矩阵取数游戏 直接区间dp,注意 \(1ll<<80\) 会出锅

5.13P5022 [NOIP2018 提高组] 旅行树的部分随便做,考虑基环树的部分。刚开始的思路是维护全局没走的编号最小值,感觉不太对,看了下题解,果然不对

然后发现总有一条边不走,并且它一定在环上(在树上就不联通了啊喂),所以找到环后枚举这条边即可。

5.27 P1040 [NOIP2003 提高组] 加分二叉树 给出的是中序遍历,那么就可以枚举区间中的一个点作为这个区间的根节点,然后按题意来就行了,初始化时要特别注意左右子树为空的情况。

5.27 P2278 [HNOI2003]操作系统一道小型模拟,注意按题意每个进程的开始时间不一定是入队时间,所以需要记录一下当前进行到了什么时间,重载运算符时也需要注意优先级相同的先执行早来的,最后还要清空进程队列。

5.27 P3843 [TJOI2007]迷路 认真读题!认真读题!认真读题!两人速度是 \(1\) 不是 \(d\)

5.28 P2015 二叉苹果树 很经典的树形dp,但刚开始我竟然坚信我的剪最小叶子的贪心是对的,这里给一个反例:

当留三条边时,贪心会留下 \(6\ \ 1\ \ 6\),但显然留 \(6 \ \ 4 \ \ 5\) 更优,所以可以dp,阶段是考虑到了 \(u\) 的 第 \(i\) 颗子树。

6.4 P3338 [ZJOI2014]力 我的第一道多项式(除了模板),这题就是设几个函数,然后把要求的化成卷积的形式,直接FFT就行了。

6.5 P3723 [AH2017/HNOI2017]礼物 思路依然是把题目要求的式子拆开,然后发现其他几项的最值都好算,只有这么一项稍难算:\(\sum_{i=1}^n a_ib_i\) ,由于题目中装饰物的相对顺序不可改变,所以不能简单sort,那就可以考虑断环为链(也就是把 \(a\) 复制一遍),然后把 \(b\) 翻转,然后把 \(a\)\(b\) 做卷积,发现卷出来后 \(n+1\ \ - 2*n\) 里面的最大值就是所求。

6.9 P3919 【模板】可持久化线段树 1(可持久化数组)今天又重修了主席树,发现细节还是容易错,change函数里不能直接返回cnt,因为cnt值改变了,切记!!!。

6.9 P3834 【模板】可持久化线段树 2 上一题是对序列建主席树,这题对值域建,每个下标建一棵类似于前缀和的主席树,查询用差分的思想就行了。

6.9 第三届传智杯 T160511 F - 游戏 直接把符合第一种的放一个并查集里,然后分类讨论即可。

6.10 P2617 Dynamic Rankings 树状数组套主席树,每次维护 log 颗主席树,注意不要把下标和值域搞混,主席树维护的是值域(或者说是到值域的映射),传参的时候传下标。

6.10 P4735 最大异或和 这题让我学到了(可持久化)01Tire这一科技,发现这玩意真好写(而且常数小),这玩意感觉就是被简化了的(可持久化)值域线段树,这题还告诉了我一个套路:遇见区间异或的操作,可以通过前缀异或转化为两个单点的操作。

6.11 P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 先树上差分,链修改变为点修改,然后每个节点建一棵线段树,维护存储每种粮食的个数,从原树底下向上线段树和并。现在是8:26,我看我啥时候写完。现在是10:20,我写完了(注意change时要更新左右儿子)。一点思考:为什么 主席树可以没有这句话,而线段树合并必须有?if(!k) kk=++cnt; ,因为主席树是靠 build 来先建一棵完整的线段树,而线段树合并的时候并不能 build(要不然线段树合并就没啥意义了)。

6.11 CF600E Lomsat gelral 可以dsu on tree,本来是一道板子题,我却调了俩小时,原因:son[k]需要拿一个变量记录,因为在calc的时候,k不是原来的k了。一点思考:对于树上的有关子树的问题,dsu on tree和线段树合并是两种思考方向:前者减少重复计算,后者利用线段树将子节点信息合并给父节点。

6.12 CF246E Blood Cousins Return dsu on tree,直接开数组统计名字是否出现空间要炸,拿个map存(虽然时间多一个log但毕竟能过),注意:输入的是森林!

(待调)6.12 CF208E Blood Cousins 结论:节点 \(v\) 最多有 \(1\)\(p\) 级表亲 \(v'\),并且当且仅当 \(v'\) 至少有两个 \(p\) 级儿子。所以问题就转化成了求一个点是不是有两个及以上的 \(p\) 级儿子。

6.13 P5946 [POI2002]B-Smooth 数 link

6.13 CF1095D Circular Dance 把每个点向后面两个可能的点各连一条边,然后发现其直接后继必须要能直接达到另一个后继,所以依次就可以还原原排列了,注意判一下环。

6.13 P2507 [SCOI2008]配对 如果允许相等的配对,那么直接sort即可,加上这个条件的话就可以考虑如何消除相等的数,可以发现,只需相邻若干个交换就行了,并且不难看出只需相邻三个即可满足要求。

(待调)6.14 P4810 [COCI 2014/2015 #3]STOGOVI link

6.14 牛客 2021NOIP提高组模拟赛四 A(权限题) 本来是想着vp一手去年氪金的比赛,结果两个多小时就刚出来T1(还TM看了眼题解),果然我还是太菜了。写一下思路:link

7.7 P3377 【模板】左偏树(可并堆) 新科技————左偏树实现的可并堆。

7.10 P1083 [NOIP2012 提高组] 借教室 这题应当好好反思一下为什么没想到二分。

7.11 P2882 [USACO07MAR]Face The Right Way G 当一个指针从前往后扫时,恰巧又要区间修改,可以考虑差分,扫的时候统计前缀和,另外输出答案不要输反

7.11 P3376 【模板】网络最大流 像这样写会挂:for(node v:s[k]),应该这么写:for(node &v:s[k])

7.17 P1714 切蛋糕 入坑oi一年了竟然刚开始学数据结构优化dp,不难想到这玩意的一个经典dp方程:\(dp_i=\max(dp_{i-1},0)+a_i\),但是这样体现不出题面要求的字段长度不超过 \(m\) 的限制,于是考虑换一种表达方式:用前缀和来表达,\(dp_i=sum_i-\min\{sum_j\}(j\in [m-i+1,i-1])\),由于前缀和数组是不变的,于是就可以用单调队列来维护了。

7.20 P2569 [SCOI2010]股票交易 link 注意!不能先更新前两种情况再更新后两种情况,这样看似是对的,其实由于阶段是天数,前几天的没更新好,不能更新后面的!

7.23 P1631 序列合并 link这题提供了一种分步骤维护的思想。

7.25 主席树change访问的每个节点都要建新版本,而不是只有叶子结点。

8.1 P4216 [SCOI2015]情报传递 树状数组'change':'for(int i=x;i<=n;i+=(i&-i)) c[i]+=w;' 不要写成 for(int i=x;i<n;i+=(i&-i)) c[i]+=w;

8.2 P6835 [Cnoi2020]线形生物 期望dp,后缀转前缀的套路 link

8.10 P1955 [NOI2015] 程序自动分析 开始以为是大分讨+并查集,其实加边顺序对答案没影响,先处理 1 的操作就行了。

8.16 CF222E Decoding Genome 第一次接触矩乘优化dp:link

8.19 P2656 采蘑菇 这题第一次让蒟蒻知道了dij不能在非负权图中跑最长路。

8.23 P4549 【模板】裴蜀定理 尽管是一道模板题,但是思想很具启发性,题目要求最小的 \(S\),可以考虑枚举 \(S\),判断是否有解,我们把裴蜀定理稍微一扩展就得到其实是所有数字的gcd。

8.30 P6620 [省选联考 2020 A 卷] 组合数问题 遇到多项式\(\times\)组合数,考虑拆开整成下降幂。

10.1 CF1721E Prefix Function Queries KMPAM的板子题,KMPAM的主要作用是通过把KMP的net数组变成一条fail边从而将kmp的均摊 \(O(1)\) 变成严格 \(O(1)\)

10.3 CF1712D Empty Graph 当所求比较困难时,可以考虑其补集。

posted @ 2022-06-04 17:04  wapmhac  阅读(86)  评论(0编辑  收藏  举报