随笔分类 -  dp

摘要:我们不难发现,假设抽了x张攻击牌,y张强化牌,那么肯定是打出尽可能多张的强化牌后,再开始出攻击牌(当然最少要一张攻击牌) 我们设G(i,j)表示:所有(抽到的攻击牌牌数为i,打出的攻击牌牌数为j)的方案,所产生的攻击值的总和 形式化地说:​$G(i,j)=\sum\limits_{S∈攻击牌\and 阅读全文
posted @ 2021-04-09 22:16 AlphaInf 阅读(133) 评论(0) 推荐(3)
摘要:我们考虑用状压dp来解决这一道题 设$f[i][S]$表示当前排列的前i位所构成的最大独立集恰好为S的方案数 我们考虑用$f[i][S]$推出$f[i+1][S']$的值 那么我们有两种扩展的方法,一种是在第$i+1$位,加入一个数$j$,满足$S∩j=∅$,且$S∪j$为最大独立集。 这种情况,相 阅读全文
posted @ 2021-03-05 15:28 AlphaInf 阅读(156) 评论(0) 推荐(8)
摘要:题目大意:有$n$座城堡,$s$轮游戏。 对于第$x$轮,第i座城堡的士兵数量为$a[x][i]$。 如果你需要攻下第i座城堡,你在第i座城堡部署的士兵必须严格大于$2a[x][i]$,如果攻下了你会获得$i$的收益。 对于这$s$轮游戏,你只能采用一种部署方式。 下面问你应该如何部署,使得你在这$ 阅读全文
posted @ 2019-04-27 09:01 AlphaInf 阅读(290) 评论(0) 推荐(1)
摘要:题目大意:你需要构造一个长度为$n$的排列$A$,使得里面包含有子序列$B$(子序列$B$为一个给定的$1$到$m$的排列),且对于每个$i$,有$A[A[i]]=i$,问有多少种方案方案。 数据范围:$n≤10^7$,$m≤500$,答案对$10^9+7$取模 我们首先不考虑有m的存在,考虑如何构 阅读全文
posted @ 2019-04-27 08:21 AlphaInf 阅读(224) 评论(0) 推荐(2)
摘要:题目大意:给你一个$[0,1]$之间等概率随机序列,你需要把这个序列插入到一棵$treap$中,问这棵$treap$的期望深度,请对于$[1,n]$中的每个深度分别输出它的概率(实数,保留五位小数)。 $treap$的优先级之也是在$[0,1]$中等概率随机出来的。 ps:这个$[0,1]$的随机非 阅读全文
posted @ 2019-04-12 09:28 AlphaInf 阅读(254) 评论(0) 推荐(2)
摘要:此题niubi! 题目大意:给你一颗n个点的点带权无根树,现在请您进行以下两步操作: 1,选择一个$[0,T]$之间的整数$C$,并令所有的点权$wi$变为$(wi+C)%MOD$ 2,选择若干条点不相交的路径;设选择的条数为$k$,覆盖的点的点权和为$S$,则收益为$\frac{S}{k+1}$ 阅读全文
posted @ 2019-04-09 15:31 AlphaInf 阅读(270) 评论(0) 推荐(1)
摘要:题目大意:给你$D$个格子,有$n$个喷水器,每个喷水器有一个喷水距离$r_i$。 现在你需要在这$D$个格子中选择$n$个位置按照任意顺序安装这$n$个喷水器,需要满足$n$个喷水器互相喷不到对方。 问方案数,对$10^9+7$取模 数据范围:$n$,$r_i≤40$,$D≤10^5$ 我们不妨考 阅读全文
posted @ 2019-04-09 15:08 AlphaInf 阅读(261) 评论(0) 推荐(1)
摘要:题目大意:有$n$个人,区间大小为$m$,每个人必须覆盖一段区间$[l_i,r_i]$,问你存在多少种不同的覆盖方案,使得区间上每个位置被覆盖的次数不超过$t$。 两种方案被定义为不同当且仅当存在第i个人覆盖的区间不同。 求方案数,对一个质数取模。 数据范围:$n,m,t≤40$ 我们考虑dp。 设 阅读全文
posted @ 2019-03-30 12:39 AlphaInf 阅读(175) 评论(0) 推荐(1)
摘要:题目写得不清不楚的。。。 题目大意:给你一棵$n$个节点的树,你会随机选择其中一个点作为根,随后随机每个点深度遍历其孩子的顺序。 下面给你一个点集$S$,问你遍历完$S$中所有点的期望时间,点集S中的点可能会重复。 数据范围:$n≤10^5$ 我们考虑钦定根,然后暴力$dp$。 设$s[u]$表示遍 阅读全文
posted @ 2019-03-23 16:01 AlphaInf 阅读(254) 评论(0) 推荐(3)
摘要:题目大意:给你一个长度为$n$的序列$a$,请你求: $\sum\limits_{l=1}^{n}\sum\limits_{r=l}^{n}\dfrac{mex(a_l,a_{l+1},...,a_r)}{r-l+1}$ 对998244353取模 数据范围:$n≤5\times 10^5$ 我们考虑 阅读全文
posted @ 2019-03-23 09:42 AlphaInf 阅读(318) 评论(0) 推荐(1)
摘要:题目大意:给你一个长度为$n$的序列$a$,我们定义$f_i$表示序列$a$前i项一次进行按位与运算后的值。 我们认为一个序列的价值为$\sum_{i=1}^{n}f_i$,现在你要重新排列序列$a$,使得序列的价值最大。 数据范围,$1≤a_i,n≤10^6$ 我们考虑$dp$。 不难发现,若序列 阅读全文
posted @ 2019-03-23 09:14 AlphaInf 阅读(128) 评论(0) 推荐(0)
摘要:题目大意:给你一棵 $n$个点 以 $1$为根 的树,每个点有$ 0,1,2 $三种颜色之一,初始时整棵树的颜色均为 $0$。 $m$ 次操作, 每次操作形如: 1 x y c : 将 $x$到$y$的路径上的点全部改为颜色$C$ 2 x : 询问 $x$ 所在的同色连通块大小 数据范围:$n,m≤ 阅读全文
posted @ 2019-03-15 14:02 AlphaInf 阅读(308) 评论(0) 推荐(4)
摘要:题目大意:给你$n$个串$p_i$,最后再给一个串$s$(字符集均为A,C,G,T四个字符中的一个)。问你串$s$最少要更改多少个字符(更改后的字符也只能是ACGT),才能满足s中不包含$p_i$$(1≤i≤n)$ 数据范围:$n≤50$,$|p|≤20$,$|s|≤100$。不超过100组数据。 阅读全文
posted @ 2019-03-14 20:51 AlphaInf 阅读(172) 评论(0) 推荐(1)
摘要:不难发现此题是一道动态$dp$题 考虑此题没有修改怎么做,令$f[i]$表示让以$i$为根的子树被覆盖的最小花费,不难推出$f[i]=min(\sum_{j∈son[i]} f[j],val[i])$。 依然采用树链剖分+线段树维护每一条链。线段树上每个节点维护$val1$和$val2$两个值。 其 阅读全文
posted @ 2019-01-28 18:46 AlphaInf 阅读(177) 评论(0) 推荐(3)
摘要:动态$dp$好题 考虑用树链剖分将整棵树剖成若干条链。 设x的重儿子为$son[x]$,设$x$所在链链头为$top[x]$ 对于重链上的每个节点(不妨设该节点编号为$x$)令$f[x]$表示以$x$为根的子树内(除以$son[x]$为根的子树),包含节点$x$的联通块的最大权值和。 我们求出一条重 阅读全文
posted @ 2019-01-28 13:14 AlphaInf 阅读(431) 评论(0) 推荐(14)
摘要:此题场上打了一个正确的$44pts$,接着看错题疯狂$rush$“正确”的$44pts$,后来没$rush$完没将之前的代码$copy$回去,直接变零分了。。。。。 这一题我们显然有一种$O(nm)$的做法 令$f[u][0]$表示在以$u$为根的子树内部署军队,且$u$不部署军队的最小代价。 令$ 阅读全文
posted @ 2019-01-26 21:47 AlphaInf 阅读(292) 评论(0) 推荐(1)
摘要:题目大意:给你一颗$n$个点的树,点有点权,有$m$次操作,每次操作给定$x$,$y$,表示修改点$x$的权值为$y$。 你需要在每次操作之后求出这棵树的最大权独立集的权值大小。 数据范围:$n,m≤1e5$ 我们显然可以得出一个$O(nm)$的暴力做法,每次修改完后$dp$一次,然而这个显然会超时 阅读全文
posted @ 2019-01-25 21:21 AlphaInf 阅读(302) 评论(0) 推荐(0)
摘要:这题是显然的数位$dp$,然而我居然写了一个下午!!! 我们不难想到差分,令$solve(x,y)$表示从第一个数字在区间$[0,x]$,第二个数字在区间$[0,y]$的答案。 不难发现题目中给了你一对$A$,$B$,答案显然为$solve(B,B)-2solve(A-1,B)+solve(A-1, 阅读全文
posted @ 2018-10-27 18:27 AlphaInf 阅读(283) 评论(0) 推荐(2)
摘要:妙啊算错时间复杂度了 题目大意:给你一棵$n$个节点的二叉树,每个节点要么是叶子节点,要么拥有恰好两个儿子。 令$m$为叶子节点个数,你需要在这棵二叉树中选择$i$个叶子节点染色,叶节点染色需要一定的代价,非叶子节点代价为两孩子的染色节点数量的异或和乘上一常数。请最小化代价。 数据范围:$n≤400 阅读全文
posted @ 2018-10-20 09:57 AlphaInf 阅读(229) 评论(2) 推荐(0)
摘要:题目大意:一排点,两点间有距离。 初始你有一个行走值$v$,如果相邻两点距离不超过$v$你可以自由在这两点行走。 当$v$大于$0$时,你可以选择某一时刻突然飞到任意点,这样做后$v$会减半(下取整)。 问从每个位置初始出发能否到达所有位置。 点的数量$≤2*10^5$,$v≤2*10^5$,$|两 阅读全文
posted @ 2018-10-17 19:04 AlphaInf 阅读(223) 评论(0) 推荐(1)