随笔分类 -  动态规划——状压DP

摘要:Contest Page A sol 每次选最小的,然后把它的所有倍数都删掉。 #include<bits/stdc++.h> using namespace std; int read(){ int a = 0; char c = getchar(); bool f = 0; while(!isd 阅读全文
posted @ 2019-09-18 22:56 cjoier_Itst 阅读(438) 评论(1) 推荐(0)
摘要:"传送门" 应该都会判欧拉回路吧(雾 考虑状压DP:设$W_i$表示集合$i$的点的权值和,$route_i$表示点集$i$的导出子图中是否存在欧拉回路,$f_i$表示前若干个城市包含了集合$i$的所有方案满意度的和,转移枚举最后一个放入的城市集合$x$,有$f_i = \frac{\sum\lim 阅读全文
posted @ 2019-05-21 11:06 cjoier_Itst 阅读(276) 评论(0) 推荐(1)
摘要:"程序自动分析" (并查集) NOI出这种题我还有什么好说的呢…… 拆点并查集即可。 "代码" "软件包管理器" (树链剖分、线段树) 一个支持区间赋值和区间和的线段树+树链剖分即可 "代码" "寿司晚宴" (数论、状压DP) 数论题$n \leq 500$肯定是什么暴力算法…… 注意到每一个数$ 阅读全文
posted @ 2019-05-04 15:26 cjoier_Itst 阅读(423) 评论(0) 推荐(0)
摘要:"传送门" 首先对于所有数求gcd并求出这个gcd含有的质因子,那么在所有数中,只有这一些质因子会对答案产生影响,而且对于所有的数,每一个质因子只会在一个数中被删去。 质因子数量不会超过$11$,所以考虑暴力的状压DP:设$f_{i,j,k}$表示前$i$个数中选出$j$个数并删去了集合为$k$的质 阅读全文
posted @ 2019-03-04 19:43 cjoier_Itst 阅读(320) 评论(0) 推荐(0)
摘要:传送门 考虑如果只有$0$组边要怎么做。因为$N \leq 15$,考虑状压$DP$。设$f_i$表示当前的匹配情况为$i$时的概率($i$中$2^0$到$2^{N-1}$表示左半边的匹配情况,$2^N$到$2^{2N-1}$表示右半边的匹配情况),转移就是随便取一条边将其起终边对应的位置去掉然后乘 阅读全文
posted @ 2018-12-02 11:46 cjoier_Itst 阅读(308) 评论(0) 推荐(0)
摘要:传送门 两种$DP$: ①$f_{i,j}$表示前$i$次选择,最大独立集为$j$时达到最大独立集的方案总数,转移:$a.f_{i,j}+=f_{i+1,j+2^k}$(保证$k$加入后符合条件);$b.f_{i,j}+=f_{i+1,j} \times \text{现在可以放的不影响最大独立集的点 阅读全文
posted @ 2018-11-30 22:08 cjoier_Itst 阅读(229) 评论(0) 推荐(0)