随笔分类 -  动态规划

摘要:前置: "CTS2019D2T3" 先进行一个转化:初始认为树上没有边,每个节点权值为 $1$。枚举一个长度为 $(n 1)$ 的边集排列,按照这个排列依次加入每条边,加入一条边时将这条边所连接的两个连通块所有点的权值 $\times \frac{1}{2}$。 可以发现所有边均加入后每个点的权值就 阅读全文
posted @ 2020-04-07 11:04 cjoier_Itst 阅读(689) 评论(4) 推荐(1)
摘要:有生之年自己做出了一个 AGC F 还踩了标算,但是好像在我之前已经有人踩过标算了,再鞭尸一波也无可厚非 hhh 看到“全部被覆盖” 条件不好做,考虑容斥,即选择若干个位置强制它们不覆盖,那么会有位置不能放车,而其余的位置可以选择放或者不放,方案数可以计算。但暴力枚举不优秀。在后文中为了描述方便定义 阅读全文
posted @ 2020-04-01 13:54 cjoier_Itst 阅读(833) 评论(1) 推荐(8)
摘要:"LOJ" 感觉这个题十分好玩于是诈尸更博。一年之前的做题心得只有这道题还记得清楚…… 设输入为$n,m$时的答案为$f(n,m)$,首先$f(n,m)=f(m,n)$所以接下来默认$n \leq m$。一件重要的事情是~~打表~~得到当$m n+1$时$f(n,m) = f(n,m 1) 3$,证 阅读全文
posted @ 2019-11-13 22:12 cjoier_Itst 阅读(479) 评论(4) 推荐(3)
摘要:"Contest Page" A 唯一会做的题/kk 题目相当于要求相邻三个的异或和为$0$。 当我们放入了三个数$a,b,c$时,接下来的放入顺序显然一定是$a,b,c,a,b,c,...$。所以当数可以分成三份,每份大小$\frac{n}{3}$且其中的数全部相等,从三份中各取一个数的异或和为$ 阅读全文
posted @ 2019-10-21 21:31 cjoier_Itst 阅读(702) 评论(4) 推荐(1)
摘要:"Contest Page" A 对于一个长度为$L$的相同字符段,显然要花费$\frac{L}{2}$次操作才能使得相邻不相同。于是只需要分类讨论一下首尾字符是否相同,算出每种字符、每种长度的连续字符段出现了多少次即可。 B 首先当图不是二分图的时候肯定无解,否则可以发现答案的上界是图上两点的最短 阅读全文
posted @ 2019-10-20 09:21 cjoier_Itst 阅读(636) 评论(2) 推荐(0)
摘要:"Contest Page" 因为一些特殊的原因所以更得不是很及时…… A sol 不难发现当某个人diss其他所有人的时候就一定要被删掉。 维护一下每个人会diss多少个人,当diss的人数等于剩余人数$ 1$的时候放队列里,每一次取队头更新其他人diss的人数。 "code" B sol 一个结 阅读全文
posted @ 2019-10-03 22:58 cjoier_Itst 阅读(588) 评论(0) 推荐(1)
摘要:"Contest Page" 开题开错翻车场.jpg A sol $A \frac{W}{2}$或者$B \frac{H}{2}$的时候无解,否则构造方法长下面这样 c++ include using namespace std; int main(){ static int arr[200003] 阅读全文
posted @ 2019-09-22 17:27 cjoier_Itst 阅读(661) 评论(0) 推荐(0)
摘要:"期末考试" sol 因为时间范围很小,所以可以利用单调性求出对于每一个时间$t$,当最晚的成绩公布时间为$t$时学生产生的不满意度总和$f_t$和让所有课程的公布时间不大于$t$的前提下课程产生的最小不满意度$g_t$.复杂度$O(nlogn)$,瓶颈是排序. 但是上面那个做法太不优雅了.我们可以 阅读全文
posted @ 2019-09-14 11:22 cjoier_Itst 阅读(419) 评论(0) 推荐(0)
摘要:"传送门" 神仙DP 注意到$N \leq 10^{18}$,不能够直接数位DP,于是考虑形成的$N$位数的性质。 因为低位一定不会比高位小,所以所有满足条件的$N$位数一定是不超过$9$个$f(x)(x \in [1,N])$的和,其中$f(x) = \sum\limits_{i=0}^{x 1} 阅读全文
posted @ 2019-08-03 15:54 cjoier_Itst 阅读(319) 评论(11) 推荐(0)
摘要:"传送门" $Q \leq 200000 , C \leq 1000 , m_i \leq 100$…… 先考虑如何维护最后一次操作时所有人的血量期望。不难发现我们需要的复杂度是$O(Qm_i)$的,所以不难想到一个Easy的DP:设$f_{i,j}$表示当前操作结束后第$i$个人血量为$j$的概率 阅读全文
posted @ 2019-07-14 21:53 cjoier_Itst 阅读(299) 评论(0) 推荐(0)
摘要:"传送门" ~~题解搬运工~~ 设原问题为问题A。每一次减少$\min\{p_i , p_{i+1}\}$难以处理,我们考虑将限制变得宽松一些:每一次可以减少$[1,\min\{p_i , p_{i+1}\}]$的任意值,需要满足的终止条件与问题A相同。我们称其为问题B,设区间$[l,r]$在问题B 阅读全文
posted @ 2019-07-09 21:31 cjoier_Itst 阅读(629) 评论(4) 推荐(0)
摘要:"传送门" 为了方便把串反过来,条件变为$t_i$是$t_{i+1}$的真子串,答案显然不变。 一件重要的事情是必定存在一种最优解,字符串序列$\{t\}$满足$|t_i| = i$。 考虑DP:设$f_i$表示字符串序列$\{t\}$的最后一个串的结尾位置为$i$时,$|t|$的最大值。不难发现如 阅读全文
posted @ 2019-07-08 14:54 cjoier_Itst 阅读(290) 评论(0) 推荐(1)
摘要:"传送门" 看到要求“字典序最小”的方案,一个很直观的想法是按位贪心,那么我们需要check的就是当某一个数放在了第一个序列之后是否还存在方案。 假设当前两个序列的最大值和前缀最值数量分别为$Mx_1 , Mx_2 , cnt_1 , cnt_2$,那么我们要求在剩下的数列中选出两个序列$\{a\} 阅读全文
posted @ 2019-07-07 11:30 cjoier_Itst 阅读(405) 评论(2) 推荐(0)
摘要:"COGS索引" 一堆神仙容斥+多项式…… 有标号的DAG计数 I 考虑$O(n^2)$做法:设$f_i$表示总共有$i$个点的DAG数量,转移考虑枚举DAG上所有出度为$0$的点,剩下的点可以选择连向它,剩下的点之间也可以连边。 但是注意到这样子转移可能会存在剩下的点中有点没有出度的情况,考虑容斥 阅读全文
posted @ 2019-06-23 12:44 cjoier_Itst 阅读(1296) 评论(1) 推荐(2)
摘要:"传送门" kthMinMax的唯一模板? 首先你需要知道kth Min Max定理的内容:$kthmax(S) = \sum\limits_{T \subseteq S} ( 1)^{|T| k} \binom{|T| 1}{k 1}min(T)$,证明与二项式反演相关,而且比较有趣的一件事情是这 阅读全文
posted @ 2019-06-19 17:03 cjoier_Itst 阅读(237) 评论(0) 推荐(0)
摘要:发现自己不会T3可以退群了 "排序问题" (组合、模拟) 可以发现Gobo Sort相当于在所有排列中随机选择一个,所以当第$i$个数出现次数为$a_i$时,期望的Sort次数就是$\frac{(n+m)!}{\prod\limits_{i=1}^{10^9} a_i!}$。 我们希望Sort次数尽 阅读全文
posted @ 2019-06-09 09:49 cjoier_Itst 阅读(409) 评论(0) 推荐(1)
摘要:这鬼家伙已经咕了好久了…… SDOIR2的题目挺好玩的~ "快速查询" (???) 不难发现所有的操作都可以通过区间打Tag实现 那么可以维护两个标记$a,b$表示序列中的数为$x$时实际表示的值是$ax+b$。对于一个单点赋值操作把值$x$变为$(x b)a^{ 1}$放进数组里面,对于全局赋值操 阅读全文
posted @ 2019-06-08 21:26 cjoier_Itst 阅读(444) 评论(0) 推荐(1)
摘要:"传送门" CTS的计数题更完辣(撒花 "Orz zx2003" ,下面的内容在上面的博客基础上进行一定的补充。 考虑计算无限循环之后不存在子串比$s$字典序小的串的个数。先对串$s$建立KMP自动机,那么对于点$i$连出的所有边,只有不是回到起点的字符最大的那条边以及字符比它大的走向起点的边可以走 阅读全文
posted @ 2019-05-22 19:29 cjoier_Itst 阅读(424) 评论(0) 推荐(0)
摘要:"整数" (线段树) 不难想到按位处理,位数比较多考虑使用动态开点线段树维护大数,那么复杂度是$O(nlog^2n)$的,不够优秀。 但注意到我们需要支持的是二进制下的加减法,而在二进制下我们可以使用int压位来节约时空,于是使用unsigned int压32位,再用线段树维护。这样每一次加减都只会 阅读全文
posted @ 2019-05-06 10:31 cjoier_Itst 阅读(548) 评论(3) 推荐(2)
摘要:"程序自动分析" (并查集) NOI出这种题我还有什么好说的呢…… 拆点并查集即可。 "代码" "软件包管理器" (树链剖分、线段树) 一个支持区间赋值和区间和的线段树+树链剖分即可 "代码" "寿司晚宴" (数论、状压DP) 数论题$n \leq 500$肯定是什么暴力算法…… 注意到每一个数$ 阅读全文
posted @ 2019-05-04 15:26 cjoier_Itst 阅读(423) 评论(0) 推荐(0)