
DP
hongism
这个作者很懒,什么都没留下…
展开
-
2019(dp/点分治)
2019题意:输入n(2e4)n(2e4)n(2e4)接下来n−1n-1n−1行,每行u,v,w(<2019)u,v,w(<2019)u,v,w(<2019)表示树边求点对个数,满足两点路径距离是2019的倍数。多组数据∑n≤1e5\sum n\leq1e5∑n≤1e5题解1(dp):dp[u][j]dp[u][j]dp[u][j]表示其中一点为uuu,另一点为子树...原创 2019-10-25 22:01:05 · 1040 阅读 · 0 评论 -
G. Fascination Street(思维dp)
G. Fascination Street题意:输入n(250000),k(9)n(250000),k(9)n(250000),k(9)接下来一行w1,w2,…,wn(1e9)w_1,w_2,\dots,w_n(1e9)w1,w2,…,wn(1e9)问最多交换kkk次,花费最小代价使全亮(本身亮或相邻一个亮即可)。题解:dp[i][j][k][l]dp[i][j][k][l]dp...原创 2019-10-24 13:51:58 · 434 阅读 · 0 评论 -
Parity of Tuples (Easy)(贡献+状压dp)
Parity of Tuples (Easy)题意:输入n(1e4),m(10),k(30)n(1e4),m(10),k(30)n(1e4),m(10),k(30)接下来nnn行,第iii行输入ai1,ai2,…,aim(0≤aij<2k)a_{i1},a_{i2},\dots,a_{im}(0\leq a_{ij}<2^k)ai1,ai2,…,aim(0≤aij<...原创 2019-10-10 19:26:06 · 289 阅读 · 0 评论 -
Educational Codeforces Round 74 (Rated for Div. 2)E. Keyboard Purchase(状压dp)
E. Keyboard Purchase题意:输入n(1e5),m(20)n(1e5),m(20)n(1e5),m(20);第二行输入一个长度为nnn的字符串sss(有前mmm个小写字母组成)。前mmm个字母可以形成一个排列,设posxpos_xposx表示字母xxx所在的位置。求min(∑i=2nabs(possi−1−possi))min(\sum_{i=2}^{n}abs(pos...原创 2019-10-09 09:39:09 · 158 阅读 · 0 评论 -
Codeforces Round #591 (Div. 2)E. Paint the Tree(树形dp+贪心(优先队列))
E. Paint the Tree题意:输入n,k(5e5)n,k(5e5)n,k(5e5);接下来n−1n-1n−1行,每行u,v,wu,v,wu,v,w,表示树边;每个点有kkk个颜色,每种颜色出现次数不超过两次,当一条边两端有颜色相同,这条边的权值算作贡献,问贡献和最大为多少?题解:dp[u][0]dp[u][0]dp[u][0]表示uuu子树不和父亲节点有相同颜色的贡献和最大值...原创 2019-10-08 19:44:58 · 190 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2)D. Magic Gems(dp+矩阵快速幂)
D. Magic Gems题意:输入n(1e18),m(1e2)n(1e18),m(1e2)n(1e18),m(1e2)一个魔法宝石可以占用一个空间,也可以变成mmm个普通宝石占用mmm个空间,开始只有魔法宝石,问有多少种不同的方式(魔法宝石个数不同,或变成普通宝石的魔法宝石不同)使它占用nnn空间。题解:很容易就可以列出dpdpdp方程:dp[i]=dp[i−1]+dp[i−m]dp...原创 2019-10-05 19:35:03 · 204 阅读 · 0 评论 -
Codeforces Round #589 (Div. 2)E. Another Filling the Grid(dp)
E. Another Filling the Grid题意:输入n(250),k(1e9)n(250),k(1e9)n(250),k(1e9)将1−k1-k1−k填入n×nn\times nn×n的矩阵,问多少种方案可以使每行每列都有1.题解:设dp[i][j]dp[i][j]dp[i][j]为到第iii行,有jjj列为1且第iii行至少有1个1的状态,然后转移就好。代码:#prag...原创 2019-10-01 17:07:58 · 151 阅读 · 0 评论 -
2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)DCount The Bits(dp/数位dp)
D Count The Bits题意:输入k,b(1≤k≤1000,1≤b≤128);k,b(1\leq k\leq 1000,1\leq b\leq128);k,b(1≤k≤1000,1≤b≤128);问在[0,2b)[0,2^b)[0,2b)以内kkk的倍数位为111的个数的和。题解1(dp):设dp[i][j]dp[i][j]dp[i][j]表示[0,2i)[0,2^i)[0,2i...原创 2019-09-29 20:11:33 · 157 阅读 · 0 评论 -
2018 ACM-ICPC North Central North America Regional Contest——Maximum Subarrays(dp(最大k子段和))
Maximum Subarrays 题意:输入n,k(1≤k≤n≤5000);n,k(1\leq k\leq n\leq5000);n,k(1≤k≤n≤5000);第二行输入a1,a2,…,an(−1e9−1e9)a_1,a_2,\dots,a_n(-1e9-1e9)a1,a2,…,an(−1e9−1e9);求最大kkk子段和,每一段必须是连续的。题解:没什么好讲的,直接dpdp...原创 2019-09-23 20:37:57 · 420 阅读 · 0 评论 -
Good Bye 2017 D New Year and Arbitrary Arrangement(期望dp+错位相减)
D New Year and Arbitrary Arrangement题意:输入k(1e3),pa,pbk(1e3),pa,pbk(1e3),pa,pb;初始是空串,每次有pa/(pa+pb)pa/(pa+pb)pa/(pa+pb)的概率在串尾加aaa,pb/(pa+pb)pb/(pa+pb)pb/(pa+pb)的概率在串尾加bbb,当串中子串(位置不一定相邻)为ababab的个数大于等于...原创 2019-09-23 13:13:12 · 177 阅读 · 0 评论 -
Codeforces Round #587 (Div. 3)F. Wi-Fi(dp+线段树(维护min))
F. Wi-Fi题意:输入n,k(2e5)n,k(2e5)n,k(2e5),表示有nnn个连续的房间,路由器的左右延伸范围为kkk;第二行输入一个长度为nnn的010101字符串sss,为1表示该房间能放路由器,否则不能放路由器。现要把所有房间于互联网相连(可以直接相连或于路由器相连),房间iii和互联网或放路由器直接相连花费iii,问最小花费是多少。题解:首先分析对于能放路由器的房间...原创 2019-09-22 14:18:13 · 171 阅读 · 0 评论 -
CodeCraft-19 and Codeforces Round #537 (Div. 2)E - Tree(树形dp+dfs序+BIT+lca)
E - Tree题意输入n,qn,qn,q(都是1e51e51e5),nnn表示有树有nnn个节点,qqq表示有qqq个询问;接下来n−1n-1n−1行,每行u,v表示树边;接下来qqq行,每行输入k,m,r,a1,a2,…,akk,m,r,a_1,a_2,\dots,a_kk,m,r,a1,a2,…,ak; (∑i=1qki<=n),k(\sum_{i=1}^qk_i<...原创 2019-09-19 20:35:14 · 148 阅读 · 0 评论 -
CodeCraft-19 and Codeforces Round #537 (Div. 2)D. Destroy the Colony(dp 01背包(退背包))
D. Destroy the Colony题意:首先给定一个长度为n的字符串s(2<=n<=1e5且n为偶数,s中仅有大小写字母),定义一个好串为相同的字符在左边(前n/2个字符)或右边(后n/2个字符);接下来输入q(1e5)表示有q组询问,每组询问x,y(1-n,x!=y),问s[x]和s[y]在同一边的方案数,对1e9+7取模。题解:首先分析询问个数,其实最多不会有1...原创 2019-09-19 13:59:46 · 98 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2)F. Sonya and Informatics(概率dp+矩阵快速幂)
F. Sonya and Informatics题意: 输入n(1e2),k(1e9),接下来n个数ai(0或1),而k表示k个操作,每个操作随机取i,j(1<=i<j<=n)并交换,问最后ai是不下降序列的概率为多少(对1e9+7取模)题解: ...原创 2019-09-18 20:21:08 · 134 阅读 · 0 评论 -
Codeforces Round #553 (Div. 2)E. Number of Components(dp+思维)
E. Number of Components题意: 输入n(1e5),接下来n个数ai(1<=ai<=n),对于所有的l,r(1<=l<=r<=n),求出ai在l,r范围内不连续的段数的和。题解: 有点难想,对于每一个ai求出它的贡献,...原创 2019-09-18 19:02:06 · 114 阅读 · 0 评论 -
Codeforces Round #585 (Div. 2)E. Marbles(状压dp)
E. Marbles题意: 给定n(4e5)个1到20的数,求最少经过几次相邻交换,使相同的数在一段中。题解: 考虑到ai只有20,可用状压dp来做,dp[0]表示什么都没有,dp状态转移按照数字出现的顺序转移,如加入数x,dp[i|(...原创 2019-09-17 10:21:34 · 204 阅读 · 0 评论 -
Codeforces Round #530 (Div. 2)F. Cookies(dp+线段树)
题意:给定一颗n(1e5)个点的树,一个时间T(1e18),接下来给你n个数x[i](1e6),表示i节点上有x[i]个饼干,接下来继续给你n个数t[i](1e6)表示i节点上的饼干吃一个要t[i]时间。现有博弈,你从1节点先手 1.你可以选择走先一个儿子 2.后手断掉一个儿子,不让你走。走完后回到1,回的时候可以吃一些饼干,问最多能吃多少饼干。题解:首先...原创 2019-09-13 10:57:27 · 151 阅读 · 0 评论 -
Explorer Bo(树形dp+贡献&&逆向思维)
Explorer Bo题意:给定n个点的树,每次任选两个点把边覆盖,问在选择点次数的情况下使边覆盖次数最小是什么?题解:首先解决选点次数最小,明显是每次选择两个叶子节点覆盖就好,所以次数最小为(leaves+1)/2; 再来解决覆盖次数最小,用树形dp 对于父亲节点u,遍历它的儿子节点v,当儿子节点的叶子节点为奇数时,对(u,v)这条边的贡献为1...原创 2019-09-11 21:56:48 · 190 阅读 · 0 评论