
dp
文章平均质量分 52
Fat_tu
这个作者很懒,什么都没留下…
展开
-
BZOJ4517:排列计数(错排公式)
从开始看这题到现在,已经过了30多把lol的时间了。 话说今天又有一道排列计数的题让我懵逼。题面 题意:问有多少长为n的排列a,恰好有m个位置存在a[i]=i。我们枚举这n-m个a[i]≠i位置,有CmnC_n^m种情况。 对于x个数的排列,不存在a[i]=i的方案数设为f[x]。经过简单的打表可以发现f[i]=f[i−1]∗i+(−1)if[i]=f[i-1]*i+(-1)^i原创 2017-12-11 20:35:05 · 460 阅读 · 0 评论 -
BZOJ3992(NTT+DP+快速幂)
题面 题意是给你一个质数M,和一个元素都小于M 的集合,大小为S,用集合中的元素构成长度为N的序列(可以用重复的元素),使其乘积模M为x,问方案数,答案模479*2^21+1。 M这题一看就很套路,模数为费马素数,大概就和NTT有关吧。 先考虑简单的DP,设f[i][j]为长度为i的序列,乘积模M等于j的方案数 枚举k,有 f[i+1][j∗k模M]+=f[i][j]f[i+1][j原创 2017-08-17 09:29:08 · 407 阅读 · 0 评论 -
BZOJ1042:[HAOI2008]硬币购物(DP+容斥原理)
题面 题意:4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。 每次带di枚ci硬币,买价值s,问多少种付款方法。若没有限制,就是一个完全背包的计数。额,考虑容斥,直观说来就是 ans=没限制的方案数-1种硬币超限的方案数+2种硬币超限的方案数-3种硬币超限的方案数+4种硬币超限的方案数写成柿子有f[S]=∑T⊇Sg[T]⇒g[S]=∑T⊇S(−1)|T原创 2018-01-17 22:09:45 · 265 阅读 · 0 评论 -
BZOJ2298:[HAOI2011]problem a(DP)
题面每句话等价于: ①排名属于[a+1,n-b]的人分数相等。 ②那个人排名属于[a+1,n-b]。原题变成了序列上选若干条不相交的线段,使得权值最大。 且每条线段的权值不能超过其长度。#include #include #include #include #include #include #include #include using namespace s原创 2018-01-18 17:01:13 · 279 阅读 · 0 评论 -
BZOJ2466:树(树形dp)
题面 题意:一棵树,选最少的点使得所有点都被覆盖奇数次 选一个点会覆盖它自身和相邻的点为点x设4个状态,分别表示x选或不选,仅考虑x的子树,x是否被覆盖 若某个点不选,则每个儿子都要被覆盖,反之亦然就可以转移了,虽然有一丢丢烦#include <iostream>#include <fstream>#include <algorithm>...原创 2018-03-06 22:02:41 · 378 阅读 · 0 评论 -
POJ3691:DNA repair(AC自动机+DP)
题面 题意:有很多个只包含4个字母的短串和一个长串 问长串至少改几个字符就不包含任何短串用短串建AC自动机,标记好所有结束状态 设f[i][j]f[i][j]f[i][j]为长度为i,后缀为状态j的最小更改数 每次枚举4个字母转移就可以了#include <iostream>#include <fstream>#include <algorithm...原创 2018-03-08 15:19:35 · 207 阅读 · 0 评论 -
BZOJ1237:配对(dp)
题面题意:n个a,n个b,两两配对 代价为abs(a-b),相同的不能配对 问最小代价有事没事排排序 被我合理演绎(猜)出的结论:每个数不会与距离超过2的数配对然后就是,字面意思的dp#include <iostream>#include <fstream>#include <algorithm>#include <cmath&...原创 2018-03-14 21:26:15 · 275 阅读 · 0 评论 -
BZOJ3295:[Zjoi2015]地震后的幻想乡(状压dp)
题面我理解的题意:n个点,m条边的图。将m条边随机排序,对于每种序列, 找到一个最小的k使得编号为1~k的边能时图联通,问k的期望除以m+1。根据大佬的理解,期望就是个积分。故可用算积分的方法算期望 设p[x]p[x]p[x]为选了x条边还不联通的概率 则k的期望为p的反常积分(大概就这个意思,乱吹的,应该是假的)而求概率就是求方案数,设cnt[S]cnt[S]cnt[S]为点集...原创 2018-03-02 09:22:07 · 258 阅读 · 0 评论 -
BZOJ4033:[HAOI2015]树上染色(树形dp)
题面 题意:n个点有边权的树,让你选择k个点为白色,其余为黑色。 问同色点两两之间距离的和的最大值。设f[x][i]f[x][i]f[x][i]为子树x里i个白点的最大贡献 包括x的父边边权的贡献然后一个一个儿子合并,字面意思转移看似n3n3n^3,其实转移时相当于在lca处枚举点对,故是n2n2n^2的#include <iostream>#include &...原创 2018-03-02 16:23:08 · 238 阅读 · 0 评论 -
BZOJ3209:花神的数论题(数位dp)
题面 题意:s(n)为n的二进制1的个数。 求s的前缀积,n≤1e15即对于每个i 求小于等于n的数中 二进制有i个1的有几个大概就一个数位dp了#include <iostream>#include <fstream>#include <algorithm>#include <cmath>#include <cti...原创 2018-03-11 20:19:59 · 178 阅读 · 0 评论 -
洛谷P4067:储能表(数位dp)
题面 传说中的数位dp,考试时因为long long 炸20 其实知道难写应该先水其他题的暴力#include <iostream>#include <fstream>#include <algorithm>#include <cmath>#include <ctime>#include <cstdio>#...原创 2018-03-21 15:39:45 · 294 阅读 · 0 评论 -
51Nod1752:哈希统计(dp+ntt+倍增)
题面动态规划设f[i][j]为长为i,哈希值为j的方案数f[i][j]为长为i,哈希值为j的方案数f[i][j]为长为i,哈希值为j的方案数 g[i][j]g[i][j]g[i][j]为长小于等于i,哈希值为j的方案数有 ∑s=azf[i+1][j∗base+s]+=f[i][j]∑s=azf[i+1][j∗base+s]+=f[i][j]\sum_{s=a}^{z}f[i+1...原创 2018-03-26 20:26:36 · 295 阅读 · 0 评论 -
bzoj2958(DP,补偿转移)
曾经在XX之星的复赛里,有一道数位dp,但我不会珍惜,然后那场比赛就当放了个屁。曾经在省选前跟L-leader做了一套dp,听他讲了补偿转移…….然而我什么都不记得了,也许这题就是低配版的补偿转移。然后现在noip模拟看到这题,我还是完全懵逼,我还是太lowbit了。题面给出一个长度为N由B、W、X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个。 对于给出的K,问有原创 2017-09-12 20:25:48 · 473 阅读 · 0 评论 -
bzoj3193(计数dp)
比赛是碰到的,还是不会做,我的dp已经菜不成声了。(传说只有智商超群的人才能做出这题)。题面语文变差了,只会复题目 有n座山,每座山有一个高度h和关键数字b。 现将这n座山排成一排,要求对于每座山排在其前面且比它高的山的数量小于它的关键数字。 询问不同的标号序列和等高线序列的数量是多少。 标号序列就是按顺序写下每座山的标号,等高线序列就是按顺序写下它们的高度。由于每座山只受比它原创 2017-09-13 10:10:47 · 309 阅读 · 0 评论 -
codeforces 183d(期望概率dp)
我还是在noip模拟看到这题,看起来就是dp,然而考试时并想不到正解,打暴力居然MLE。dp又不会做…… 然后我用了一个上午才YY了出来。题面题目描述 你要给N个人准备礼物——T-shirt!但是你不知道他们的尺码……总共有M种尺码,编号从1到M。虽然你不记得每个人准确的尺码,但是你记得对于每一个人i,每一个尺码j,i的尺码正好是j的概率Pij. 现在你要买正好N件T原创 2017-09-14 20:11:19 · 995 阅读 · 0 评论 -
BZOJ4818:序列计数(倍增+dp)
我一眼就从这题看出了卷积,引起了我极大的兴趣,做到后面才发现就这么水。题面 题意:问长为n,每个数字为1~m,至少有一个质数,和为p的倍数的序列有多少个,模1e9+7。n≤1e9,m≤2e7,p≤100。看到“至少有一个质数”,大概就是容斥之类的东西,可将问题变成(1~m的结果)减去(合数与1的结果)。设f[i][j]为长为i,模p为j的方案数。g=f[1],枚举下一位模p的余数,就原创 2017-12-07 15:57:44 · 382 阅读 · 0 评论 -
洛谷1295:书架(堆优化dp)
noip前最后一篇博客了… 题面 题意:给出n个数,分成若干段,每段的和不能超过m,每段的代价为该段的最大值。问最小代价。一个显然的dp,用f[i]表示前i个数,最后一段以i结尾的最小代价。 f[i]=min(f[j]+max(a[j+1,i]))f[i]=min(f[j]+max(a[j+1,i]) ),其中sum[i]-sum[j]≤m。正如小姐姐的美滋滋程度... f是非严格递原创 2017-11-09 22:04:23 · 381 阅读 · 0 评论 -
BZOJ2286:消耗战(虚树,树形dp)
今天本tu生日,学个新算法庆祝一下。学了虚树,碰到每次询问给你一些点点的树就不虚了…对于一棵树,我们可以在上面用我们学过的算法为所欲为。假设题目有多个询问,每个询问给出了一些点,那我们可以把这些点和及有关系的点拉出来,合并点和边的信息,构出虚树,在虚树上继续为所欲为。对于与询问有关系的点,就是这些点两两之间的lca。把这些点按欧拉序排序,lca就是区间深度最小的点,所以k个点两两的lca最原创 2017-11-08 16:29:31 · 294 阅读 · 0 评论 -
BZOJ1076:奖励关(状压期望dp)
好像noip一眼看去,全是dp。 题面 题意:有k个回合,n个物品,每回合随机掉一个物品i,有P[i]的价值。可以选择捡或不捡。对于每件物品,若想捡它,都要捡完它的先决物品,问最大期望价值。n≤15,k≤100。大概就是个状压dp,用f[S][i]表示i回合选了集合S的物品,所得到的最大期望。 若每回合都必须选,k回合后得到的每个状态的概率才是可算的。但由于策略原因,到达最终的每个状态的原创 2017-11-07 15:18:33 · 359 阅读 · 0 评论 -
bzoj3566:概率充电器(树形概率dp)
为了联赛,我要学好图论dp与暴搜…题目题意:一棵n个点的树,对于点i有q[i]的概率使自身充电(爆炸),对于边i,有w[i]的概率真实存在。对于每个连通块,有一个点爆炸就能使整个连通块爆炸。问期望有几个点爆炸。根据我对概率的理解,这个概率是可以XJB传递的。但这是一棵树,可以找个顺序,用dp算出每个点的爆炸概率。设g[i]为仅考虑i的子树,i爆炸的概率。这样父亲与儿子的爆炸就变成了原创 2017-11-05 22:03:19 · 350 阅读 · 0 评论 -
Tyvj4878:道路修建(环套树+单调队列)
题面 题意:给你3000棵环套树,边长都为1,问两个点的最短距离的最大值。根据环套树的套路,先把环找出来,然后dfs每棵外向树。对于每个点,记录l1为该点向下最长链的深度,l2为为该点向下次长链的深度,l1+l2就可能成为答案。这样就处理了路径在每棵树上的情况。我们考虑路径跨越了环的情况。想到在吃鸡时跑毒的短边原则,最短路肯定在环的小半圈。 设环的长度为len,对于环上的第i个点和第j原创 2017-09-30 11:14:55 · 406 阅读 · 0 评论 -
Tyvj4879(dp+倍增+NTT)
题面 题意:有n组数,每个数为1到6,每组有m个,每组内不计顺序。问总共至少有x个6的方案数。模998244353。n,m≤400。看到这个熟悉的数字,大概就是个NTT了,然后考虑哪里有卷积。设g[i]为一组内有i个6的方案数,f[i]为两组内有i个6的方案数,有f[i]=∑j=0ig[j]∗g[i−j]f[i]=\sum_{j=0}^ig[j]*g[i-j] 就是个卷积了。对于有n组原创 2017-09-28 22:26:50 · 440 阅读 · 0 评论 -
洛谷P3672(排列计数dp)
也许我dp太水了,所以在noip前要放弃fft,学好图论动规和爆搜,然后找到这题,依然懵逼。题面 题意:给定自然数n、k、x,求第k小的,长度为n的,逆序对对数为x的,1~n的排列。先考虑一个弱鸡问题:如何求出第k个排列。 我们枚举第一位i,剩下的排列数为(n-1)!,若(n-1)!<k,则i太小了,k减去(n-1)!,否则第一位就是i。由于排列只和数的相对大小有关,剩下的n-1个数可原创 2017-09-17 21:46:45 · 497 阅读 · 0 评论 -
洛谷P4516:[JSOI2018]潜入行动(树形dp)
题面大概就是树形dp 设f[i][j][0/1][0/1]f[i][j][0/1][0/1]f[i][j][0/1][0/1],表示iii的子树里选了jjj个,iii有没有选,iii是否被覆盖 然后类似卷积的合并,就能算出答案一个显然的性质,节点i的次数界为min(size[i],k)min(size[i],k)min(size[i],k) 根据某科学的理论若合并的两棵树size...原创 2018-05-18 08:43:34 · 497 阅读 · 0 评论