![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
dp
文章平均质量分 81
dp
YB Lin
这个作者很懒,什么都没留下…
展开
-
Educational DP Contest U - Grouping 状压dp
传送门题意:给你nnn个物品,让你将其分成任意组,在同一个组内的i,ji,ji,j会获得ai,ja_{i,j}ai,j的收益,让你选择一种分组方案使得收益最大。1≤n≤16,∣ai,j∣≤1e91\le n\le 16,|a_{i,j}|\le 1e91≤n≤16,∣ai,j∣≤1e9思路:考虑到nnn很小,所以考虑状压dpdpdp,设dp[i]dp[i]dp[i]代表选的数状态为iii的时候的最大收益,那么下面的问题就是如何合并转移了。。我们利用像区间dpdpdp一样的思路枚举断点,这里是原创 2022-03-31 14:02:03 · 372 阅读 · 0 评论 -
CF 1642 F. Two Arrays 随机 + sosdp
文章目录题意思路传送门题意给你nnn个长度为mmm的数组,每个数组都有一个价值wiw_iwi,让你选出两个数组他们没有交集且价值和最大,如果没有输出−1-1−1。2≤n≤1e5,1≤m≤5,1≤ai,j,wi≤1e92\le n\le 1e5,1\le m\le 5,1\le a_{i,j},w_i\le 1e92≤n≤1e5,1≤m≤5,1≤ai,j,wi≤1e9思路看到mmm很小,很容易向状压地方靠,假设aaa很小,那么这个题就很简单了,我们将每个数组状压成一个二进制,让后sosdps原创 2022-02-25 20:53:52 · 179 阅读 · 2 评论 -
CF372 C. Watching Fireworks is Fun 单调队列优化dp
文章目录题意思路传送门题意城镇中有nnn个位置,有mmm个烟花要放,第iii个烟花放出的时间记为tit_iti,放出的位置记为aia_iai。如果烟花放出的时候你在位置xxx,那么将收获bi−∣ai−x∣b_i-|a_i-x|bi−∣ai−x∣点的快乐值。初始可以在任意位置,每个单位时间可以移动不大于ddd个单位距离,现在需要最大化你能获得的快乐值。1≤n≤150000,1≤m≤300,1≤d≤n1\le n\le 150000,1\le m\le 300,1\le d\le n1≤n≤1原创 2022-02-22 19:57:39 · 124 阅读 · 0 评论 -
CF 1635 D. Infinite Set 思维 + 二进制
文章目录题意思路传送门题意给你一个集合SSS,初始集合内含有nnn个数,让后按照一下三个规则无限的向集合中添加数:对于所有的1≤i≤n,x=ai1\le i\le n,x=a_i1≤i≤n,x=ai都在集合中。对于所有的x=2y+1,y∈Sx=2y+1,y\in Sx=2y+1,y∈S,都可以将xxx加入集合。对于所有的x=4y,y∈Sx=4y,y\in Sx=4y,y∈S都可以将x加入集合。问集合中小于2p2^p2p的数有多少个,对1e9+71e9+71e9+7取模。1≤n,p≤2e原创 2022-02-21 09:51:35 · 496 阅读 · 0 评论 -
CF 1637 D. Yet Another Minimization Problem dp + 思维
文章目录题意:思路:传送门题意:给你两个长度为nnn的数组a,ba,ba,b,每次交换可以选择一个iii,交换ai,bia_i,b_iai,bi,最小化∑i=1n∑j=i+1n(ai+aj)2+∑i=1n∑j=i+1n(bi+bj)2\sum_{i=1}^n \sum_{j=i+1}^n(a_i+a_j)^2+\sum_{i=1}^n \sum_{j=i+1}^n(b_i+b_j)^2∑i=1n∑j=i+1n(ai+aj)2+∑i=1n∑j=i+1n(bi+bj)2。1≤n≤10原创 2022-02-19 16:53:35 · 362 阅读 · 3 评论 -
2020EC-final
传送门文章目录B - Rectangle Flip 2题意:思路:A - Namomo Subsequence题意:思路:D - City Brain题意:思路:B - Rectangle Flip 2题意:给你一个n∗mn*mn∗m的矩阵,接下来n∗mn*mn∗m秒每秒都会消失一个格子,问每个时刻矩阵中构成的矩形有多少个。n,m≤500n,m\le 500n,m≤500思路:先说一下复杂度n4n^4n4但是跑不满的算法,对于每个删去的点,枚举左边以及右边每个位置,维护其能到的上下界,比如上界原创 2021-11-22 21:39:34 · 768 阅读 · 0 评论 -
Codeforces Round #507 (Div. 1) D. You Are Given a Tree 根号分治 + dp
传送门题意:有一颗nnn个节点的树,其中一个简单路径集合被称为kkk合法当且仅当:树的每个节点至多属于一条路径,且每条路径恰好包含kkk个点。对于k∈[1,n]k\in [1,n]k∈[1,n],求kkk合法路径集合最多路径个数,即设kkk合法路径集合为SSS,求最大的∣S∣|S|∣S∣。2≤n≤1e52\le n\le 1e52≤n≤1e5思路:考虑每次用dpdpdp来O(n)O(n)O(n)来求,记一个最大值和次大值,让后就是比较常规的dpdpdp了,这样的复杂度是O(n2)O(n^2)O原创 2021-10-11 23:17:15 · 137 阅读 · 0 评论 -
Codeforces Round #743 (Div. 2) E. Paint 区间dp + 暴力
传送门文章目录题意:思路:题意:给你一个有nnn个像素的图像,每个像素都有一个颜色aia_iai,保证每种颜色的图像不会超过202020个。你现在每次可以选择一个颜色,并选择一段连续的像素,要求连续的像素的颜色必须相同,让后将这段像素变成选择的颜色,问最少需要进行多少次操作,才能使得所有像素的颜色相同。1≤n≤3e3,1≤ai≤n1\le n\le 3e3,1\le a_i\le n1≤n≤3e3,1≤ai≤n思路:考虑[a,b,a][a,b,a][a,b,a]这种形式的,肯定是将bbb变成原创 2021-09-22 20:24:39 · 134 阅读 · 2 评论 -
Technocup 2020 - Elimination Round 2 E. Rock Is Push dp
传送门文章目录题意:思路题意:给你一个n×mn×mn×m的方格,你初始在(1,1)(1,1)(1,1)点,有些位置有箱子,你可以走到某个位置向你的方向推动这个箱子,箱子不能出界,问你走到(n,m)(n,m)(n,m)有多少种方案。1≤n,m≤20001\le n,m\le 20001≤n,m≤2000思路没有箱子的时候,就是一个裸的过河卒的问题了,现在可以推动箱子,而且是有方向的,所以我们给原来的状态加一维代表上一次是从上还是左来的,即f[i][j][op]f[i][j][op]f[i][j][原创 2021-09-19 20:20:14 · 122 阅读 · 0 评论 -
Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对
传送门文章目录题意:思路:题意:思路:考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个颜色加入这个集合的时候贡献是多少呢?更深刻的考虑一下,我们使用状压dpdpdp给颜色定序,实际上也就是将颜色大小重新定义了一下,最终排在最前面的是111,以此类推,而变换到答案序列的时候就是将其转变为递增序列。这样想有什么好处呢?我们知道将一个数列变为递增的,如果只能交换相邻的元素的话,冒泡排序是最优的,所需要原创 2021-09-07 16:59:25 · 220 阅读 · 2 评论 -
Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心
传送门文章目录题意:思路:题意:思路:排序方式跟easyeasyeasy版本的一样,但是hardhardhard版本是输出最多能选多少,所以我们对b<0b<0b<0的情况不能直接贪心的来选了,考虑用dpdpdp来解决。设f[i][j]f[i][j]f[i][j]表示当前选了前iii个任务,能力值为jjj的时候选的最多任务数。转移的话比较简单,按照背包来写就好,但是转移的顺序不能改变,也就是说我们需要提前按照ai+bia_i+b_iai+bi排序之后才能进行dpdpdp,因为原创 2021-09-05 20:59:59 · 119 阅读 · 0 评论 -
Codeforces Round #268 (Div. 1) C. Hack it! 数位dp + 构造数位
传送门文章目录题意:思路:题意:定义f(x)f(x)f(x)表示xxx的十进制下数位和,现在给你aaa,让你选一个区间[l,r][l,r][l,r],满足∑i=lrf(i) mod a=0\sum_{i=l}^rf(i)\bmod a=0∑i=lrf(i)moda=0。1≤a≤1e181\le a\le1e181≤a≤1e18要求输出的l,rl,rl,r满足1≤l≤r≤102001\le l\le r\le 10^{200}1≤l≤r≤10200思路:考虑这样一个事情,对于xxx,我们找一个原创 2021-08-27 17:09:11 · 103 阅读 · 0 评论 -
Codeforces Round #741 (Div. 2) E. Rescue Niwen! 字符串 + dp
传送门文章目录题意:思路:题意:给你一个串sss,定义其扩张串为s1,s1s2,...,s1s2..sn,s2,s2s3,...,sns_1,s_1s_2,...,s_1s_2..s_n,s_2,s_2s_3,...,s_ns1,s1s2,...,s1s2..sn,s2,s2s3,...,sn,现在让你从扩张串中选一个最长上升子序列,按照字典序大小比较。n≤5000n\le5000n≤5000思路:首先,可以发现,当选择一个后缀串sss,由于sss的前缀都在sss的前面,那么原创 2021-08-27 14:28:58 · 210 阅读 · 2 评论 -
P4590 [TJOI2018]游园会 dp套dp + 状态机
传送门文章目录题意:思路:题意:给你一个长度为nnn的串sss,其只包含NOINOINOI三个字母,给你一个mmm,代表ttt串的长度,ttt串包含NOINOINOI三个字母但是不存在三个连续的NOINOINOI子串,输出n+1n+1n+1行,第iii行输出有多少合法的ttt串与sss串的lcslcslcs为iii。m≤1000,n≤15m\le1000,n\le15m≤1000,n≤15思路:也是一个dpdpdp套dpdpdp的题,但是多了一个限制就是不存在连续的NOINOINOI串,这个我们原创 2021-08-26 20:24:22 · 118 阅读 · 0 评论 -
#3864. Hero meet devil dp套dp + 状压 + 状态机
传送门文章目录题意:思路:题意:给你一个只包含ACGTACGTACGT的串sss,再给你一个mmm,第iii行输出有多少个长度为mmm且只包含ACGTACGTACGT的串与sss的lcslcslcs为iii。∣s∣≤15,m≤1000|s|\le15,m\le1000∣s∣≤15,m≤1000思路:我们简单回顾一下两个串的lcslcslcs怎么求。设f[i][j]f[i][j]f[i][j]表示一个串到了第iii位,另一个串到了第jjj位的lcslcslcs,转移就分两种情况(1)f[i][原创 2021-08-26 19:43:16 · 114 阅读 · 0 评论 -
2018 ICPC Asia Jakarta Regional Contest J. Future Generation 状压dp
传送门文章目录题意:思路:题意:给你nnn个串,字符集是a−za-za−z,让你在每个串种选择一个子序列,保证对于i<j,si<sji<j,s_i<s_ji<j,si<sj,也就是选择的串字典序是严格递增的,让你选择一种方式,使得选择的字符串长度之和最大。n≤15,∣s∣≤15n\le15,|s|\le15n≤15,∣s∣≤15思路:其实看到范围这么小,应该比较容易想到是个状压dpdpdp。所以我们就套路的设f[i][j]f[i][j]f[i][j]表示原创 2021-08-26 16:10:52 · 143 阅读 · 0 评论 -
Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维
传送门文章目录题意:思路题意:有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作:(1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一个数yyy,跳到第x−yx-yx−y个细胞上。(2)(2)(2)选择[2,x][2,x][2,x]之间的一个数zzz,跳到⌊xz⌋\left \lfloor \frac{x}{z} \right \rfloor⌊zx⌋。问你有多少种不同的方式到达111号细胞。2≤n≤4e62\le n\le 4e62≤n≤原创 2021-08-25 20:53:52 · 194 阅读 · 0 评论 -
Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory 思维 + dp
文章目录题意:思路题意:思路一开始找规律,表都打好了,没找出来。。找规律还是适合让队友来。先考虑第一行,我们先计算第一行的方案数,设f[i][j]f[i][j]f[i][j]表示到了iii位,第iii位的颜色是jjj的方案数。考虑转移方程:f[i][0]=f[i−1][1]+f[i−2][1]f[i][0]=f[i-1][1]+f[i-2][1]f[i][0]=f[i−1][1]+f[i−2][1]f[i][1]=f[i−1][0]+f[i−2][0]f[i][1]=f[i-1][0]+f[原创 2021-08-22 08:10:14 · 90 阅读 · 0 评论 -
2020 区域赛(沈阳) M. United in Stormwind fwt + sosdp
传送门文章目录题意:思路:题意:有nnn个试卷,每个试卷有mmm个问题,每个问题有两个选项a,ba,ba,b,定义两个试卷不同当且仅当其选中的问题中有一个问题不同。现在问你对于mmm个问题的所有子集,有多少个子集问题不同的对数≥k\ge k≥k个。1≤n≤2e5,1≤m≤20,1≤k≤n∗(n−1)21\le n\le2e5,1\le m\le20,1\le k\le\frac{n*(n-1)}{2}1≤n≤2e5,1≤m≤20,1≤k≤2n∗(n−1)思路:我们将不同选项看成010101串,原创 2021-08-21 16:51:02 · 2821 阅读 · 0 评论 -
HDU - 6971 K - I love max and multiply sosdp
传送门文章目录题意:思路:题意:思路:直接求i&j>=ki\And j>=ki&j>=k不是很好求,所以转换成i&j=ki\And j=ki&j=k的情况。考虑对a,ba,ba,b求一遍超集,让后从[0,n−1][0,n-1][0,n−1]扫一遍即可得到i&j=ki\And j=ki&j=k的情况,之后取一个后缀最大值,让后求和即可。// Problem: K - I love max and multiply// Conte原创 2021-07-23 19:34:12 · 352 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp
传送门文章目录题意:思路:题意:给你一个串,只包含前kkk个字母和???,定义fif_ifi表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini=0k−1fimin_{i=0}^{k-1}f_imini=0k−1fi尽可能大。n≤2e5,k≤17n\le2e5,k\le17n≤2e5,k≤17思路:让最小值尽可能大,我们可以考虑二分一个最小长度,让后考虑怎么检查答案呢?假设二分的长度为midmidmid,可以发现问号拿出来之后一种有效方案每个连原创 2021-07-15 08:42:27 · 223 阅读 · 0 评论 -
hdu 6153 A Secret kmp + dp
传送门文章目录题意:思路:题意:给你两个串a,ba,ba,b,让你求对于bbb的每个后缀,设其长度为lenlenlen,其在aaa中出现的次数为cntcntcnt,那么他的贡献为len∗cntlen*cntlen∗cnt,求每个后缀的贡献和是多少。n≤1e6n\le1e6n≤1e6思路:首先我们将a,ba,ba,b都reversereversereverse一下,让后后缀就转换成了前缀。先考虑如何快速求出来bbb的某个前缀在aaa中出现的次数。首先需要知道我们可以通过dpdpdp快速算出来某个原创 2021-07-13 21:16:29 · 77 阅读 · 0 评论 -
Educational Codeforces Round 73 (Rated for Div. 2) Make The Fence Great Again dp + 结论
传送门文章目录题意:思路:题意:思路:首先证明一个结论:一个数最多被加两次。首先假设a[i]=a[i−1]a[i]=a[i-1]a[i]=a[i−1]或a[i]=a[i+1]a[i]=a[i+1]a[i]=a[i+1],那么此时可以将a[i]=a[i]+1a[i]=a[i]+1a[i]=a[i]+1,若此时a[i]=a[i−1]a[i]=a[i-1]a[i]=a[i−1]或a[i]=a[i+1]a[i]=a[i+1]a[i]=a[i+1],那么可以将其再加一,这个时候一定与两边的都不想等,此时再原创 2021-07-12 14:15:20 · 80 阅读 · 0 评论 -
Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse 子集dp
传送门文章目录题意:思路:题意:思路:之前做过类似的题,翻转一个字串相当于将任意两个不相交的串连在一起。再一看字符集≤20\le20≤20,那就是铁子集dpdpdp了。定义f[i]f[i]f[i]表示状态为iii的串的长度,那么预处理的时候需要预处理出来所有相邻且不含相同字符的串,这个显然可以在n∗20n*20n∗20的复杂度内做到。之后就是套路了,我们将子集信息向上传,让后答案就是f[i]+f[((1<<20)−1) xor i]f[i原创 2021-07-09 01:33:00 · 77 阅读 · 0 评论 -
Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp
传送门文章目录题意:思路:题意:思路:通过完美子串的定义,我们不难发现满足条件的子串就是kmpkmpkmp中ne[n]ne[n]ne[n]不断向前跳得到的串,现在问题就是如何求这些前缀串在串中出现的次数了。考虑一个前缀iii,那么一直暴跳ne[i]ne[i]ne[i],能跳到的前缀都需要加上前缀iii的出现次数。显然不能直接跳,所以考虑dpdpdp,dp[i]dp[i]dp[i]表示前缀iii的出现次数,那么转移方程就是dp[ne[i]]+=dp[i]dp[ne[i]]+=dp[i]dp[ne[原创 2021-07-08 15:36:49 · 169 阅读 · 0 评论 -
Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp
传送门文章目录题意:思路:题意:n≤200n\le200n≤200思路:明显的树形dpdpdp,所以考虑一下dpdpdp状态。这个题状态挺神的。。可能是因为我太菜了,看了半天才看懂。算法111:复杂度O(n3)O(n^3)O(n3)定义f[i][j]f[i][j]f[i][j]为以jjj为根的子树中,选出来的最小深度≥j\ge j≥j的最大价值子集,注意这个深度是以iii为根的子树的深度,每个子树从000开始,这个状态就挺绕的,可以稍微理解一下。直接求≥j\ge j≥j的不好求,我们可原创 2021-06-26 09:59:49 · 89 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维
传送门文章目录题意:思路:题意:初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_{l,i},r_{l,i}][ll,i,rl,i]和[lr,i,rr,i][l_{r,i},r_{r,i}][lr,i,rr,i]内,问是否存在一种方案使得每次操作后两手都合法,输出这个方案。n≤100000n\le100000n≤100000思路:可以脑补一下这个过程,我们如果正着来的话,很难判断当原创 2021-06-25 23:04:19 · 174 阅读 · 0 评论 -
Codeforces Round #658 (Div. 2) D. Unmerge 思维 + 背包
传送门文章目录题意:思路:题意:思路:我们可以假设有两个桶,让后向里面放数,可以发现,如果向其中放入了aia_iai,那么紧跟在他后面的所有<ai<a_i<ai的数都必须跟在aia_iai后面放在一个桶中,所以我们可以根据这个分成若干段,我们可以任意安排这些段使其放在两个桶中的任意一个,如果最终能使两个桶的个数都为nnn,那么就是可以的。这个问题可以用可行性背包解决,将段看成物品,容量为nnn即可。// Problem: D. Unmerge// Contest: C原创 2021-06-23 15:34:32 · 91 阅读 · 0 评论 -
Codeforces Round #598 (Div. 3) E. Yet Another Division Into Teams dp + 输出方案
传送门文章目录题意:思路:题意:给你一个长度为nnn的序列aaa,你需要将其分成若干组,每组的价值为max(ai)−min(ai)\max(a_i)-min(a_i)max(ai)−min(ai),求如何分组才能使得代价最小,输出最小代价以及分组方案。3≤n≤2e5,1≤ai≤1e93\le n\le2e5,1\le a_i\le1e93≤n≤2e5,1≤ai≤1e9思路:首先可以将这个数组排个序,不过要在排序之前记录一下编号。排序之后就可以大力dpdpdp了,定义f[i]f[i]f[原创 2021-06-18 21:02:13 · 89 阅读 · 0 评论 -
Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
传送门文章目录题意:思路:题意:思路:首先我们知道如果所有数的和sum mod k!=0sum\bmod k!=0summodk!=0那么此时无解,否则我们设need=sum/kneed=sum/kneed=sum/k。看到kkk这么小,自然的想到是否能状压,但是状压了有什么用也不知道,所以需要继续分析题目。我们可以将每个盒子都看成一个点,那么拿出来一个再放进去一个完全可以看成一个点入度为111,出度为111,转换成图论,这不就是若干个环嘛!换句话说,我们的一个合法方案就是若干个环,我们先考虑原创 2021-06-18 19:59:38 · 101 阅读 · 0 评论 -
Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献
传送门文章目录题意:思路:题意:定义S(k)S(k)S(k)为将kkk的每一位拿出来从小到大排序后构成的数,比如S(3421)=1234S(3421)=1234S(3421)=1234,求S(k)1≤k≤nS(k)_{1\le k\le n }S(k)1≤k≤n。1≤n≤107001\le n\le 10^{700}1≤n≤10700思路:nnn很大,考虑数位dpdpdp。由于直接处理不好弄,所以需要发现一些规律。考虑一个数排好之后形式大概是这样的:334593345933459,其中数一原创 2021-06-12 16:48:54 · 107 阅读 · 1 评论 -
P4127 [AHOI2009]同类分布 数位dp + 对状态剪枝
传送门文章目录题意:思路:题意:思路:比较套路的题,首先也有个明显的状态f[pos][num][sum]f[pos][num][sum]f[pos][num][sum]表示到了pospospos位,当前数为numnumnum,各位数字之和为sumsumsum。由于a,b≤1e18a,b\le1e18a,b≤1e18,所以显然是不行的。看到整除就可以考虑是否可以通过将第二维取模来优化状态呢?我们发现第三维最多只有9∗189*189∗18个数,所以我们枚举第三维的约数,让后将numnumnum模上约数原创 2021-06-12 09:48:43 · 109 阅读 · 0 评论 -
Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化
传送门文章目录题意:思路:题意:思路:数位dpdpdp挺经典的一个题辣,有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm]表示到了第pospospos位,数是numnumnum,个位数最大公约数lcmlcmlcm。直接这样写肯定炸了,考虑如何优化。由于[1,9][1,9][1,9]所有数的最大公约数是252025202520,所以存一个num mod 2520num\bmod 2520nummod2520即可,这样空间就变成了2原创 2021-06-12 00:41:41 · 85 阅读 · 0 评论 -
Loj #6274. 数字 数位dp + 去重
传送门文章目录题意:思路:题意:思路:考虑数位dpdpdp,设计状态f[pos][flag1][flag2][flag3][flag4]f[pos][flag1][flag2][flag3][flag4]f[pos][flag1][flag2][flag3][flag4],其中flag1:x≥Lxflag2:y≤Rx,flag3:z≥Ly,flag4:w≤Ryflag1:x\ge L_xflag2:y\le R_x,flag3:z\ge L_y,flag4:w\le R_yflag1:x≥Lxf原创 2021-06-11 20:47:32 · 367 阅读 · 1 评论 -
Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
传送门文章目录题意:思路:题意:思路:完全想不到容斥啊,看了半天也没看懂渍渍渍。定义f[i]f[i]f[i]表示iii的超集个数,那么选择的方案就是2f[i]−12^{f[i]}-12f[i]−1了,因为不能一个不选所以要减去空集。显然f[i]f[i]f[i]可以通过高维前缀和预处理出来,现在考虑如何计算答案。答案应该包含在f[0]f[0]f[0]内,但是有重复元素,所以考虑容斥来消去,具体的就是ans=∑i=0n(−1)i中1的个数2f[i]−1ans=\sum _{i=0}^{n}(-1原创 2021-06-09 21:19:01 · 152 阅读 · 0 评论 -
FZU - 2042 The Mad Mathematician 数位dp + 算贡献
传送门文章目录题意:思路:题意:求sumsumsum。a,b,c,d,e≤1e18a,b,c,d,e\le1e18a,b,c,d,e≤1e18思路:这是一篇无从考究的题解,因为fzu现在进不去。看到这种题直接考虑数位dpdpdp,对于[A,B],[C,D][A,B],[C,D][A,B],[C,D]两个区间我们不太好直接处理,但是我们可以容斥一下,即[0,B][0,D]−[0,A−1][0,D]−[0,B][0,C−1]+[0,A−1][0,C−1][0,B][0,D]-[0,A-1][0,原创 2021-06-09 17:08:48 · 84 阅读 · 3 评论 -
Libre OJ 「BalticOI 2013」非回文数 数位dp
传送门文章目录题意:思路:题意:问[l,r][l,r][l,r]内有多少个数是非回文数,即数字中不存在连续几个数为回文数。l,r≤1e18l,r\le1e18l,r≤1e18思路:这么大的范围很明显数位dpdpdp了,容易知道当一个数为回文数的时候,一定存在中间的两位或者三位是回文的,所以我们记一下每个数之前的两位,让后判断不相等的时候转移即可。由于前导零会影响答案,所以需要加一个leadleadlead判断是否存在前导零。// Problem: #2683. 「BalticOI 2013」原创 2021-06-09 15:48:00 · 222 阅读 · 0 评论 -
2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝
传送门文章目录题意:思路:题意:思路:观察可以发现,由于i&j=0i \And j=0i&j=0,所以log2(i+j)log_2(i+j)log2(i+j)表示的应该是i+ji+ji+j的111的最高位。一个显然的dpdpdp状态就出来了f[pos][flag1][flag2][maxlen]f[pos][flag1][flag2][maxlen]f[pos][flag1][flag2][maxlen]表示到了pospospos位,flag1,flag2flag1,flag2原创 2021-06-08 21:49:31 · 157 阅读 · 0 评论 -
hdu 6899 Xor 数位dp
传送门文章目录题意:思路:题意:问你有多少对x,yx,yx,y满足以下条件:(1)x∈[0,A],y∈[0,B](1)x \in [0,A],y\in [0,B](1)x∈[0,A],y∈[0,B](2)∣x−y∣≤K(2)|x-y|\le K(2)∣x−y∣≤K(3)x xor y≤W(3)x \ \ xor \ \ y\le W(3)x xor y≤W其中A,B,K,W≤1e9A,B,K,W\le 1e原创 2021-06-08 19:45:25 · 129 阅读 · 0 评论 -
2020牛客暑期多校训练营(第六场)H.Harmony Pairs 数位dp
传送门文章目录题意:思路:题意:给你一个nnn,问你有多少对0≤a≤b≤n0\le a\le b\le n0≤a≤b≤n满足S(a)>S(b)S(a)>S(b)S(a)>S(b)。其中S(a)S(a)S(a)表示aaa的十进制各位数之和。思路:显然的数位dpdpdp,一般的数位dpdpdp都是维护一个数,这个无非就是维护两个数,加一维状态就好啦。定义f[pos][c][flag1][flag2]f[pos][c][flag1][flag2]f[pos][c][flag1][fl原创 2021-06-08 13:20:48 · 82 阅读 · 0 评论