随笔分类 - dp
摘要:其实我并没有见过原题,只是因为...这被改编成了互测题... 题目中提到了一个序列,这个序列是很重要的,否则这个问题好像是没有合理的时间复杂度解法的 但正因为有了这个序列,这个问题的时间复杂度才让人能够接受 序列的特性:逆序对! 根据题意,我们发现一个图上所有的连边一定来源于这个序列里的逆序对! 那
阅读全文
摘要:互测题T3... 首先有个dp是非常好想的: 设dp[i][j]为前j个数分成i组的最大得分,则易得:dp[i][j]=max{dp[i-1][k-1]+num[k][j]},其中,num[k][j]表示从第k个数到第j个数不同值的数量 而num数组可以预处理出来,时间复杂度O(n^2 k) 等等,
阅读全文
摘要:一道好题,利用kmp维护递推再更新矩阵乘法 这题首先可以递推: 设状态f[i][j]表示长串更新到了i位置,已经匹配短串匹配了j个数 那么我们有转移: f[i][get_nxt(j)]+=f[i-1][j-1] 当然,你并不懂这是什么意思 我们挨个解释一下 主题思想就是在前面放好的j-1个字符的基础
阅读全文
摘要:基本题面: 设有n组数据a,b,对于每一组数据,都有选和不选两种状态(设状态为x,选则x=1,不选则x=0),现在欲求出所有选中的数据中,∑a/∑b的最大值。 接下来是一些数学问题: 设原式最大值为R,R=∑(ai·xi)/∑(bi·xi) 若设L为某一种不那么优的选法,则恒有R>=L 则: ∑(a
阅读全文
摘要:状压妙啊... 本题的主体思路:状压+容斥原理(或状压+数位dp) 记g[i]表示按位与后结果所有位上至少有i个1的方案数 那么根据容斥原理,ans=g[0]-g[1]+g[2]-g[3]+g[4]... 于是如果我们求出了g,就可以求出ans 可是怎么求出g呢 我们记f[i]表示a&i==i这样的
阅读全文
摘要:一道玄学题... 其实一开始想的是对的,优化一下就好了 首先我们会发现,乘积不能被完全平方数整除等价于所有因子的每个质因子个数和都至多为1 可是500以内的质数很多,全找出来会爆炸的 可我们会发现,如果一个数的平方会在500以内,那么这个数一定<=22! 所以,1~500中会存在的完全平方数的质因子
阅读全文
摘要:这题太难了...看了30篇题解才整明白到底咋回事... 核心思想:状压dp+搜索+容斥 首先我们分析一下,对于一个4*7的棋盘,低点的个数至多只有8个(可以数一数) 这样的话,我们可以进行一个状压,把所有的低点压进来 然后我们从小到大枚举所有数,转移即可 记状态f[i][j]表示到了第i个数,低点的
阅读全文
摘要:很有趣的一道题 这道题提议很难懂,其实就是让你求合法的集合数目。合法的集合定义为: 1、集合中的所有串都是s的子串,且互不重叠 2、集合中的所有串都含有子串t。 看到网上很多题解说要用kmp,但我就不用... 因为仅需进行一个字符串匹配,而hash是很好写的匹配啊 而且kmp的next指针在dp中并
阅读全文
摘要:noip2016考了一道状压dp,一道期望dp 然而这题是状压期望dp... 所以难度是什么,省选noi吗... 怎么办... 题目大意: 给定n个字符串,甲从中任选出一个串(即选出每个串的概率相同为1/n),乙要通过询问甲选出的字符串pos位置上的字符是什么来确定这个串。然而由于有些字符串的一些位
阅读全文

浙公网安备 33010602011771号