
dp
文章平均质量分 61
wwyx2001
OIer----这条路,仅一人独行
展开
-
[BZOJ3622]已经没有什么好害怕的了(容斥原理+DP)
题目:我是超链接题解:首先列个方程可以看出如果要求糖果比药品多k组的每组有多少个,其中糖果就是n+k2n+k2{n+k\over 2},那么如果这个数字不是个整数就GG这样恰好k个不是很好直接求,我们考虑求至少有k个,设f[i][j]表示前i组中至少有j组糖果比药片大,设nxt[i]表示药片中比a[i]小的数量,那么我们可以列出DP式子f[i][j]=f[i−1][j]+f[i−1...原创 2018-07-11 07:57:44 · 418 阅读 · 0 评论 -
[BZOJ1150][CTSC2007]数据备份Backup(DP凸优化/wqs二分)
题目:我是超链接题解:首先我们可以列出一个60pts的DP式 f[0/1][i][j]f[0/1][i][j]f[0/1][i][j]表示i和i-1有没有相连,前i个分成j组的最小总长 那么转移很简单 f[0][i][j]=min(f[0][i−1][j],f[1][i−1][j])f[0][i][j]=min(f[0][i−1][j],f[1][i−1][j])f[0][i][...原创 2018-07-09 15:34:17 · 501 阅读 · 0 评论 -
[BZOJ5252][八省联考2018]林克卡特树lct(DP凸优化/WQS二分)
题目:我是超链接题解:题目等价于:在树上选择k+条不相交的链,使其权值和最大。考虑树形DP(以下的k均为k+1)一个很直观的想法是用f[i][j]表示第ii个节点,子树中选了jj条链的最大价值。但这样是无法转移的,因此我们要考虑到根节点的情况,令f[0/1/2][i][j]表示ii号节点的子树中选了jj条链,根节点不在任何一条链中/作为链的端点/作为两条链的端点的最大值...原创 2018-07-09 10:12:54 · 783 阅读 · 0 评论 -
2018SD省队集训R2 D1
T1题解这是个交互QAQ方法一:找到0的位置(0*x+x=x)为判断条件,然后找到1的位置(1*x+0=x),然后就可以直接递推出剩下的所有数字(1*x+1)。这个算法基本需要3n左右,可以拿到80~100不等(看脸,yzc::rand()了解一下)方法二:找到0的位置,然后找-1的位置(-1%n=n-1)(-1*x+x=0),然后可以直接找到1的位置,可以推出剩下的数字了...原创 2018-07-01 21:51:25 · 411 阅读 · 0 评论 -
[SRM 697 div1]ConnectedStates(prufer序列+dp)
题目:有n个城市,每个城市有个权值AiAiA_i,任意两个城市i,ji,ji,j之间的道路数有Ai∗AjAi∗AjA_i∗A_j条。对于每种生成树,设每个点的度数为didid_i,其权值定义为∏di∏di\prod d_i。问所有无根生成树的权值和。答案对1e9+7取模。 n≤2000然而我见到的题面是这样的 其实是等效的,我随便说一下:对于一个度数为di的点,定出一棵生成树的状...原创 2018-06-26 21:59:49 · 409 阅读 · 0 评论 -
[BZOJ3672][NOI2014]购票(斜率优化DP+树链剖分+线段树+三分)
题目:我是超链接题解:这个很明显要从上往下DP,而且下面的DP选择了就可以直接选择用上面的信息直接转移了。大概就是f[i]=min(p[i]∗(dis[i]−dis[j])+q[i]+f[j])f[i]=min(p[i]∗(dis[i]−dis[j])+q[i]+f[j])f[i]=min(p[i]*(dis[i]-dis[j])+q[i]+f[j])(dis[i]-dis[j]&...原创 2018-06-21 20:52:49 · 265 阅读 · 0 评论 -
2018SD省队集训R1 D4
T1题解首先可以发现ab之间都要线性无关才是最优的,不难发现我们实际要求矩阵的秩 在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。通俗一点说,如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。然后有一个定理 矩阵的秩实际上是行秩和列秩的最小值,怎么求线性无关呢?高...原创 2018-06-12 22:11:35 · 452 阅读 · 0 评论 -
2018SD省队集训R1 D3
T1题解:代码:T2题解:代码:T3题解:这个题目考场上一眼暴力都不会写。。。那就从暴力说起吧 我们可以枚举每一个格子的上三角形先被消掉还是下面的三角形先被消掉,我们假设上面的三角先被删掉,可以建立一个依赖关系,像这样 然后可以瞎搞计数,这样的复杂度是O((rc)2)=O(r4)O((rc)2)=O(r4)O((rc)^2)=O(r^4)然后...原创 2018-06-12 21:54:21 · 575 阅读 · 2 评论 -
[BZOJ2878][NOI2012]迷失游乐园(概率期望dp+图论)
题目:我是超链接题解:代码:原创 2018-05-30 11:29:37 · 343 阅读 · 0 评论 -
[BZOJ3590][SNOI2013]Quare(状压dp+边双连通分量)
题目:我是超链接题解:题目相当于是:在无向图中选出权值最小的包含所有点的双连通子图 双连通图可以拆为一个小双连通图和一条链,枚举这一条链就是整体思想 熟悉的数据范围,状压dp了?首先设计几个状态 f[i]表示状态为i,且使i中的点双联通的最小权值 h[i][j][0]表示一个端点为j,通往状态为i的点集中的最小权值 h[i][j][1]表示一个端点为j,通往状态为i的点集中的...原创 2018-05-27 08:34:46 · 452 阅读 · 0 评论 -
[BZOJ2091][POI2010]The Minima Game(DP)
题目:我是超链接题解:这个东西感觉起来像dp,f[i]表示前i个先手拿的最大差值 先排序,f[i]=maxf[i−1],a[i]−f[i−1]f[i]=maxf[i−1],a[i]−f[i−1]f[i]=max{f[i-1],a[i]-f[i-1]} 这个方程自己看看就能明白了代码:#include <cstdio>#include <iostrea...原创 2018-05-23 11:29:08 · 257 阅读 · 0 评论 -
[CF834D]The Bakery(线段树优化dp)
题目:我是超链接题意:给出n个数字,将这些数字隔成k个部分(相对位置不变),统计每个部分有几个不同数字,然后全部加起来求和,问和最大是多少。题解:很容易看出DP方程:f[i][j]=maxf[k][j−1]+diff(k+1,i)f[i][j]=maxf[k][j−1]+diff(k+1,i)f[i][j]=max{f[k][j-1]+diff(k+1,i)},d∈[j−1,i...原创 2018-05-23 09:16:54 · 1091 阅读 · 0 评论 -
[BZOJ1974][SDOI2010]代码拍卖会(规律+DP)
题目:我是超链接题解:首先这个n特别大,而且这个转移怎么也是二维的,所以矩乘也不像。我们考虑拆一下这样一个【上升数】,11234=11111+111+11+1,每一个【上升数】被拆完之后不会超过9位,而且为了避免总共选0位有前导零,我们起初先填上11…111(共n位)。这样会发现一个规律:1,11,111,1111…这些数字%p会有一个循环节(循环节不一定是从第一位开始的!)。...原创 2018-05-21 19:26:48 · 312 阅读 · 0 评论 -
[BZOJ4550]小奇的博弈(博弈+DP)
题目:我是超链接题解:一开始读错题了 当一个棋子被挤到一端的时候就再也动不了了,那么根据白格子最左,黑格子最右。 我们首先考虑K=2,可以发现白格子尽量避免往左移动,黑格子避免向右移动,白格子的目标是向右移动把黑格子逼死,那么可以发现,只要两个格子的间隔不是0,都是先手胜的K>2的情况同理,白棋是一定不会主动往左移的,黑棋也一定不会主动往右移,所以黑白之间的间隔一定会不断...原创 2018-05-02 21:54:14 · 469 阅读 · 0 评论 -
[BZOJ3992][SDOI2015]序列统计(NTT+DP+ksm)
题目:我是超链接题解:从简单开始吧。 首先我们假设题目让求的是“数列中所有数的【和】%mod=x的不同方案数” 那么设F[i][j]表示选择i个数%mod=j的方案数 转移方程F[i][j]=∑|S|k=1F[i−1][j−Sk]F[i][j]=∑k=1|S|F[i−1][j−Sk]F[i][j]=\sum_{k=1}^{|S|}F[i-1][j-S_k]这个形式我们可以转化...原创 2018-04-18 20:10:39 · 240 阅读 · 0 评论 -
[BZOJ1833][ZJOI2010]数字计数(数位dp)
题目:我是超链接题解:感觉一直不会这类dp f[i][j][k]表示i位数以j开头,k数字出现的次数代码:#include <cstdio> #include <cstring>#define LL long longusing namespace std;struct hh{ LL a[10]; void cle...原创 2018-04-17 10:01:56 · 231 阅读 · 0 评论 -
【loli的胡策】测试4.16(线段树+概率期望dp)
T1题解仔细分析了题目发现并不是后缀家族的(松口气然后随便想了一个简单的思路,每次查询的时候遇到’)’就用链表遍历’(‘,然后遍历之间的’w’,至于’0’我们用一个树状数组查看w左边的‘0’个数和右边的‘0’个数乘积就是ans,然而这样的时间复杂度是很不稳妥的O(n2logn)O(n2logn)O(n^2logn),60pts然而这种区间修改单点修改我应该想到的———线段树...原创 2018-04-16 21:02:30 · 347 阅读 · 0 评论 -
[BZOJ1419]Red is good(概率期望dp)
题目:我是超链接题解:这种有几个状态问你收手的情况,一般设计f[i][j]表示红牌剩i张,黑牌剩j张的最优钱数 我们可以考虑倒推,f[i][j]=max(0.0,(f[i−1][j]+1)∗p+(f[i][j−1]−1)∗(1−p))f[i][j]=max(0.0,(f[i−1][j]+1)∗p+(f[i][j−1]−1)∗(1−p))f[i][j]=max(0.0,(f[i-1][...原创 2018-04-13 22:00:04 · 208 阅读 · 0 评论 -
[BZOJ1415][NOI2005]聪聪和可可(概率期望+记忆化搜索)
题目:我是超链接题解:说是帮可可,最后还是看着聪聪把可可吃掉,灰姑娘你干啥吃的 状态还是比较容易想:f[i][j]表示聪聪在i,可可在j,聪聪吃掉可可时间期望,这样设计的基本支撑是:聪聪总是不断逼近可可,最后一定会吃掉可可。 我们可以bfs预处理出两点之间的最短距离,这样可以判断聪聪的行动了 那么几个基本的f[i][i]=0 dis[i][j]<=2,f[i][j]=1 ...原创 2018-04-13 15:16:11 · 256 阅读 · 0 评论 -
[BZOJ1076][SCOI2008]奖励关(状压dp+期望)
题目:我是超链接题解:看着自己的“概率期望(5)”再看看别人的“概率期望(40)”。。。。。恶补概率期望一波这个东西一看就要状压了,哪些物品抛出过,哪些没有 这一步的期望=(上一步的期望+这一步的收益)*上一步到这一步的概率 然而这都是很基本的知识。 那么用f[i][s]表示第i步状态为s的期望,由于正推没法确定最优解,所以我们选择倒推代码:#include &l...原创 2018-04-13 11:02:08 · 214 阅读 · 0 评论 -
[BZOJ1009][HNOI2008]GT考试(AC自动机+矩阵加速dp)
题目:我是超链接题解:沃日后天省选了而我还在填坑 好吧看着这个范围我觉得应该是矩乘,那么不能包含某个字符串肯定是AC自动机+矩乘的套路 我们来看一下DP状态设计:f[i][j]表示第i位匹配到AC自动机的第j位有多少方案 如果暴力DP的话,f[i][j]向i+1转移,枚举0~9,如果下一个节点不是end节点那么我们就可以继续转移 【要注意end节点的传递性。】 那么我们发...原创 2018-04-04 14:00:55 · 284 阅读 · 0 评论 -
[BZOJ4870][六省联考]组合数问题(矩阵加速dp)
题目:我是超链接题解:从数据范围了解题目,那么这1e9还有一个不一定是质数的模数,不是扩展Lucas就是矩乘 这个柿子给的好诡异啊。从直观上去理解吧:从nk件物品中选%k=r件物品的方案数 显然的dp方程f[i,j]表示前i件物品拿了若干件使得其数量模k等于j的方案数。 那么显然有f[i,j]=f[i−1,j]+f[i−1,j−1] 直接矩乘转移就好了代码:#in...原创 2018-04-01 12:02:12 · 356 阅读 · 0 评论 -
[BZOJ4818][SDOI2017]序列计数(矩阵加速dp)
题目:我是超链接题解:首先设计状态f[i][j]f[i][j]f[i][j]表示选i个数%p余数为j的方案数 据说还至少要有一个质数?那就再设g[i][j]g[i][j]g[i][j]表示选i个数%p余数为j且不含一个质数的方案数 那么最后的答案就是f[i][0]−g[i][0]f[i][0]−g[i][0]f[i][0]-g[i][0] 然后看看这个数据范围啊,一看就要想到用矩...原创 2018-04-01 08:19:01 · 246 阅读 · 0 评论 -
【DP的胡策】互测3.30 (状压dp+dp+找规律)
T1:题解:不难发现是个状压dp,其实我们只需要维护这四个格子的值进行转移就好了 k为状压,值为1的时候代表这个数字还没有取代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int map[2010][2010];cha...原创 2018-03-30 19:32:55 · 256 阅读 · 0 评论 -
【XP的胡策】互测3.20(prufer数列+dp+组合数学+扩展欧拉定理)
T1: 题意:一句话题意:有度数限制情况下求有标号无根树数量题解:一眼dp,怎么dp呢? 我们先抛开度数限制考虑一下 关于有标号无根树的计数问题,有一个非常经典的模型,就是把树转化成prufer数列。prufer数列普及:Prufer数列的生成规则:找出这棵树的当前叶子节点中标号最小的那个,把与它相连的点的编号加入prufer数列,然后删除这个...原创 2018-03-20 17:27:27 · 471 阅读 · 0 评论 -
【翔哥的胡策】互测3.10(斜率优化dp+计算几何||manacher)
T1:[CEOI2004]锯木厂选址题解:首先几个数组all[i]表示前i的权值和 dis[i]表示从1到i的距离 c[i]表示从1运到i树的花费,那么c[i]=c[i−1]+all[i−1]∗s[i−1]c[i]=c[i−1]+all[i−1]∗s[i−1]c[i]=c[i-1]+all[i-1]*s[i-1]w[i][j]表示从i树运到j树,j为厂的花费,那么w[i...原创 2018-03-10 19:34:47 · 363 阅读 · 0 评论 -
[BZOJ3530][SDOI2014]数数(AC自动机+数位dp)
题目:我是超链接题解:我们先把数字串安置在AC自动机上 f[i][j][0/1][0/1]表示第i位数,匹配到AC自动机的第j个节点,现在是否填过不为0的数,是否卡上界的方案数 处理前导0的时候就是如果前面没有填过不为0的数那么一直停留在AC自动机的根节点 注意fail指针的下传 这个前导零是个什么情况呢?N=111 00∈S 那么001也是合法的啊 这个第四维表示是否卡...原创 2018-03-06 09:43:28 · 224 阅读 · 0 评论 -
[BZOJ2337][HNOI2011]XOR和路径(期望概率dp+高斯消元)
一个日常的学术讨论 Q:投掷一个硬币 出正反面的概率相等 问期望投掷几次后连续出两个反面 A:设f[0],f[1],f[2]为从 0、1、2状态开始,走到2状态的期望步数。 A:f[0]=1/2(f[0]+1+f[1]+1) A:f[1]=1/2(f[0]+1+f[2]+1) A:f[2]=0 根据高斯消元可以解出f[0]=6 Q:推广到问期望投掷几次后连续出n个反面 A:其实是一...原创 2018-03-04 15:05:00 · 328 阅读 · 0 评论 -
[BZOJ4032][HEOI2015]最短不公共子串(dp+后缀自动机)
题目:我是超链接题解:后缀自动机只是一个幌子?其实只有第三问才用啦,神题4合1?总之这个题目记住的原则就是 1、最短不公共长度实际上就是最长匹配中的最小值+1 2、如果某一方是子串,要想方设法让子串依次转移不能跳First:A子串≠B子串想想我们以前求最长公共子串的时候吧 f[i][j]表示A的第i位匹配到B的第j位的最长公共长度 f[i][j]=f[i-1][j-...原创 2018-02-27 21:21:41 · 647 阅读 · 1 评论 -
[BZOJ2806][Ctsc2012]Cheat(后缀自动机+单调队列优化dp)
题目:我是超链接题解:我们先把标准串建出一个广义后缀自动机 二分一个L,用dp判断可行性,dp?!首先我们要用后缀自动机预处理出l[i],表示第i位一定选,可以匹配上的最长长度,即向前延伸最远可以和标准串匹配的长度怎么用dp判可行啊?f[i]表示前i位能称为【熟悉】的最大长度,那么最后用f[n]和len比一比看看到不到90%就好,f[i]怎么求呢? 不难写出转移方程f[i...原创 2018-02-27 16:15:56 · 429 阅读 · 0 评论 -
【瞌睡的胡策】训练2.23(数学相关+矩阵快速幂+dp)
挖坑待填T3 事实上这题目的后面还给了错误的公式,我考场上带入公式的内心:MDZZ,ta给的柿子竟然是错的?!题解: 直接引图了。代码:#include<bits/stdc++.h>using namespace std;int n,m;double x;struct node{ double H[65][65]; ...原创 2018-02-24 07:58:25 · 273 阅读 · 0 评论 -
[BZOJ3688]折线统计(dp+树状数组)
题目:我是超链接题解:f(i,j,0/1)表示划分了i段,以第j个结尾,最后一段是上升0\下降1的方案数 f(i,j,0)=∑k=i+1j−1∑y(k)<y(j)f(i,k,0)+∑k=i+1j−1∑y(k)<y(j)f(i−1,k,1)f(i,j,0)=∑k=i+1j−1∑y(k)<y(j)f(i,k,0)+∑k=i+1j−1∑y(k)<y(j)f(i...原创 2018-02-23 21:28:48 · 469 阅读 · 0 评论 -
【年后的胡策】训练2.22(dp+分块+数学相关)
T1BZOJ3688 折线统计题解:考试的时候想着乱搞结果也没搞出什么东西,写个暴力走人。T2题解:这个40pts送的啊,然后自己写了线段树和分块两种还对拍 实际上是SDOI2014省队集训题目? 让苍天知道我不认输 T3 题解:这题目的60pts是送的了,f[i]表示前i头牛的最小时间,考场上自己脑抽开了二维数组还M了?! 遇到这...原创 2018-02-23 18:37:30 · 316 阅读 · 0 评论 -
[BZOJ3611][Heoi2014]大工程(虚树+树形dp)
题目:我是超链接题解:看到所有k的和<=2*n各位应该明白我们应该用虚树了,这题的虚树也很好找嘛,不就是把不用的链缩起来弄成长度和呗 这个和我也会做,深度从深到浅考虑虚树中的点,每个点往上跳一条边的时候,这条边的权值将被算入除ta子树外的所有节点中,记录一下就可以了 这个最大最小怎么办呢?我们可以再维护几个数组,Max[i]表示子树关键点到i的最长链,maxx[i]表示次...原创 2018-02-12 16:58:42 · 304 阅读 · 0 评论 -
[BZOJ2286][SDOI2011]消耗战(虚树+树形dp)
题目:我是超链接题解:虚树,一种可以快速优化树上dp的东西,将每次基于n(节点数)的询问转化为基于∑m∑m\sum m的,Emmm,虚树就是介个东西吧 除了询问节点外,任意两点的lca都会存在于虚树中,叙述中两点间的路径,比如说图二的2-18这条边要存储2-4-18这条链的信息对于这道题目来说,我们先考虑基本的dp,dp[i]表示把以i为子树根节点的关键点全都切掉后的最小...原创 2018-02-11 17:29:11 · 368 阅读 · 0 评论 -
[BZOJ2253][2010BJWC]纸箱堆叠(dp+cdq分治)
题目:我是超链接题解:这个东西O(n2)O(n^2)的最长上升子序列嘛 不过过不了啊,回忆一下求最长上升子序列的过程,我们会发现其实就是枚举n,然后寻找三项都小于ta的延续个数最长的 而这是三个元素,三维偏序cdq分治没跑了 其实我们只需要修改一下树状数组,用于求i 并且因为前面的对后面的一定是有影响的,所以我们并不能变换顺序,必须是:处理左区间,处理左区间对右区间的影响,处理原创 2018-01-15 21:19:14 · 722 阅读 · 0 评论 -
[BZOJ3963][WF2011]MachineWorks(斜率优化dp+cdq分治)
题目:我是超链接题解:这题目有点眼熟啊。。。莫不是货币兑换? 那根据套路来一波dp,f[i]表示到第D[i]天卖掉所有机器得到的最多金钱,显然f[0]=c f[i]=max(f[i−1],f[j]−P[j]+(D[i]−D[j]−1)∗G[j]+R[j])f[i]=max(f[i-1],f[j]-P[j]+(D[i]-D[j]-1)*G[j]+R[j]) 列完方程我们可以知道,之原创 2018-01-14 20:20:45 · 321 阅读 · 0 评论 -
[BZOJ2726][SDOI2012]任务安排(斜率优化dp+cdq分治)
题目:我是超链接题解:Emmm首先一眼dp了吧。O(n3)O(n^3)很蒻的博主就设计了一个浅显的dp[i][j]表示前i个分成j组的最小费用,O(n3)O(n^3)而且看上去根本没有办法优化的样子?!#include #include #include using namespace std;int n,s,T[10005],F[10005],dp[5原创 2018-01-11 19:00:26 · 315 阅读 · 0 评论 -
[BZOJ1492][NOI2007]货币兑换Cash(斜率优化dp+splay|cdq分治维护凸包)
题目:我是超链接题解:f[i]表示第i天最多能获得多少钱,那么f[0]=s 题目中有提示说要不全部买入要不全部卖出,其实比较好理解,因为能赚钱一定要尽量赚 首先考虑一个问题,如果某天赚到的钱知道了,能换成A券的数量a和能换成B券的数量b就确定了 a/b=rate[i] a*A[i]+b*B[i]=f[i](A[i],B[i]表示第i天两种金券的价值) 那就考虑已知f[1.原创 2018-01-11 18:53:01 · 400 阅读 · 0 评论 -
【loli的胡策】训练1.7(hash+记忆化搜索+AC自动机+矩阵优化dp)
T1[BZOJ2462][BeiJing2011]Matrix题解:今天对于这道题有一个很清晰的思路,想着把一维hash写对,可是一维一拍一个错?!后来把一维的交上然后A了,再拍也是对的,这都什么啊这都是。 其实很简单啦,就是把每一行建立一个hash,然后暴力寻找就行啦代码:#include <cstdio>#include <cstrin...原创 2018-01-07 21:56:41 · 458 阅读 · 0 评论