传送门 状压dp好题. 怎么今天道道题都有点东西啊 对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%% 设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当前在jjj号点的状态总数. 然后枚举一个不在集合中的点转移. 但是直接这样做会算错. 为什么呢? 因为我们没有考虑状压时其它子树的影响. 因此再记一个数组g[i][j]g[i][j]g[i][j]表示选取集合为iii当前在jjj号点来进行状态转移. f[sta][p]=∑[E(u,v)]f[sta∣…
传送门 状压dp好题. 首先需要回忆O(nlogn)O(nlog n)O(nlogn)求lislislis的方法,我们会维护一个单调递增的ddd数组. 可以设计状态f(s1,s2)f(s1,s2)f(s1,s2)表示选取的数的集合是s1s1s1,然后d数组中元素的出现情况是s2s2s2. 这样转移是很简单的. 但时空都无法承受. 于是我们考虑优化,不难发现s1s1s1是s2s2s2的子集. 因此我们三进制状压dp就行了. 代码…
[描述] 小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放.他希望连续看 L 分钟的电影.因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他不希望重复看一部电影,所以每部电影他最多看一次,也不能在看一部电影的时候,换到另一个正在播放一样电影的放映厅. 请你帮助小石头让他重 0 到 L 连续不断的看电影,如果可以的话,计算出最少看几 部电影. [输入格式] 第一行是 2 个整数 N,L,表示电影的数量,和小石头希望看的连续时间 接下来是…
这么sb的题考场居然写挂了2233. 假设n=∏iaiki" role="presentation" style="position: relative;">n=∏iakiin=∏iaiki 那么集合中合法的数一定满足: t=∏i(1/aiki)" role="presentation" style="position: relative;">t=∏i(1/akii)t=∏i(1/aiki) 发…
传送门 考虑到两条路径相交的条件: 设两条路径为a,ba,ba,b. 则要么aaa路径的lcalcalca在bbb上. 要么bbb路径的lcalcalca在aaa上. 因此我们维护两棵树. 分别支持路径加,单点查值和单调加,路径查值. 这个直接树状数组维护就行了. 代码…
传送门 签到题. 直接把所有数先质因数分解. 同时统计每一个在阶乘中会出现的质数出现的最少次数. 然后对于每一个这样的质数,我们求出满足其出现质数的m的最小值,然后求出所有m的最大值. 求m的时候可以用二分求. 代码…
传送门 考试的时候乱搞过了. 其实题目就是让你求拓扑排序方案数. 直接树形dpdpdp然后组合数转移一下就行了. 乱搞代码…
传送门 考场上自己yy了一个双连通只有40分. 然后换根dp求最长路就行了. 代码…
\(Description\) 给定\(n\)个点\(m\)条边的有向图,求有多少个边集的子集,构成的图没有环. \(n\leq17\). \(Solution\) 问题也等价于,用不同的边集构造DAG,有多少种合法方案.我们考虑怎么构造DAG使得方案不重不漏. 我明知道一个DAG的拓扑序是唯一确定的.所以我们按照拓扑序每次转移一个点集. \(f[s][s']\)表示 构造 已经选择的点集为\(s\),当前最后一层点集为\(s'\)的DAG 的方案数. 转移时枚举不在\(s\)中的子集\(k\)…
传送门 状压dp经典题. 令f[i][j]f[i][j]f[i][j]表示到第i个,第i−k+1i-k+1i−k+1~iii个物品的状态是j时的最大总和. 然后简单维护一下转移就行了. 由于想皮一下果断上了滚动数组优化发现速度rank1了. 代码…