dp
Marcus-Bao
这个作者很懒,什么都没留下…
展开
-
51nod 1407 与与与与 dp+容斥
题意:有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组。 答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果。思路:我们首先从反面考虑,n个数所有组合情况为2n−1 2 ^ n - 1 ,然后在减掉相与不为0的情况即可.现在考虑不为0的方法数怎么求? 设dp[i]表示和 a[x] & i == i的方法数.那么我们可以知道,对于所有和 i相与还为i的数,任原创 2017-10-24 23:58:46 · 306 阅读 · 0 评论 -
CodeForces - 821E Okabe and El Psy Kongroo dp+矩阵快速幂
题目链接 题意:n条直线(a[i],b[i],c[i]) 表示在x=a[i]~b[i]内 运动的高度0<=y<=c[i], a[i]=b[i-1],a[1]=0,a[n]<=k<=b[n],一个人有三个运动方向(x+1,y+1),(x+1,y),(x+1,y-1) n<=100,c[i]<=15, a[i],b[i],k<=1e18 问从(0,0)->(k,0)的方法数? 思路:首先d原创 2017-09-13 11:19:36 · 337 阅读 · 0 评论 -
hihocoder 1323 回文字符串 区间dp OR 记忆化搜索
题目链接描述给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串?一次操作可以在任意位置插入一个字符,或者删除任意一个字符,或者把任意一个字符修改成任意其他字符。思路:考虑记忆化搜索,dp[l][r] 表示从l开始到r结束的字符串构成回文串需要的最少操作次数,1. 那么如果s[l] == s[原创 2017-08-27 13:12:59 · 725 阅读 · 0 评论 -
hihocoder 1326 dp OR 思维+枚举
题目链接描述对于一个01字符串,你每次可以将一个0修改成1,或者将一个1修改成0。那么,你最少需要修改多少次才能把一个01串 S 变为有序01字符串(有序01字符串是指满足所有0在所有1之前的01串)呢?思路:一种巧妙的做法就是,因为01有序,考虑从哪一位开始,前面的全是0,后面的全是1.那么就需要预处理出所有的前面原创 2017-08-24 23:43:15 · 711 阅读 · 0 评论 -
Codeforces Round #426 (Div. 2) The Bakery 线段树+dp
题目链接题意:把n个数分成k段,每段的价值为这一段数里不同数字的个数,问价值和最大为多少。思路:dp[i][j] 表示把前j个数分为i段的最大价值为多少,那么有如下转移方程:dp[i][j]=max(dp[i-1][k]+w[k+1][j]) (0这个过程需要用线段树来维护一下,记录每一个a[i]的上一次出现的为止pre[i],那么我们每原创 2017-07-31 20:40:35 · 354 阅读 · 0 评论 -
HihoCoder - 1318 Invalid Binary Numbers 思维+dp
题目链接题意:如果一个二进制数包含连续的两个1,我们就称这个二进制数是非法的。小Hi想知道在所有 n 位二进制数(一共有2n个)中,非法二进制数有多少个。例如对于 n = 3,有 011, 110, 111 三个非法二进制数。由于结果可能很大,你只需要输出模109+7的余数。思路:首先介绍一下官方的题解,缺啥补啥的思想比较6.何为缺啥原创 2017-07-09 23:49:22 · 425 阅读 · 0 评论 -
CodeForces - 344E Read Time && CodeForces - 830A Office Keys 二分+贪心
题目链接 cf 344e 题意:有n个磁头,m个位置需要访问,磁头每一秒移动一格,求访问m个磁头需要的最少时间。思路: 首先老规矩,求最少最多的问题,立马想到二分,对于这个题目,很明显二分时间带入验证可行.那么问题就转化成了怎么验证? 要想在一定时间内访问多的磁道,那么基于贪心的思想,如果有磁道在当前磁头的左边原创 2017-07-17 20:55:56 · 1230 阅读 · 0 评论 -
2017 四川省赛 Longest Increasing Subsequence 思维
PDF题意:给你N个数组成的序列,现在规定F【i】表示的是以a【i】结尾的最长上升子序列长度。LIS(1)表示的是删除第一个数之后,F【i】的亦或和。现在然你求LIS(1~N);思路:考虑我们如果删除第i个数,F【】的变化.首先对于i前面的数,F【】都不会有影响.那么对于i后面的数,他的原创 2017-07-17 14:09:15 · 410 阅读 · 0 评论 -
2017 四川省赛 L Nice Trick 思维+dp
PDF题意:题目给了你从任意数中选出三个数,然后相乘,并加到总和的公式,现在要你从任意数中选出四个数,相乘,并加到总和,问最后的答案,对1e9+7取模思路: 这个题真的是我的锅,赛后被队友好一顿刺激,走入一个死胡同里去了当时,因为给了三项公式,就误导我要去推一个四项的公式...结果五个小时,真的五个小时,我就一直在推,然后死活原创 2017-07-16 22:12:55 · 914 阅读 · 0 评论 -
HDU - 1028 Ignatius and the Princess III 生成函数+dp+完全背包
题目链接题意:基本整数划分问题思路: 第一次接触生成函数问题,这个题目就是一个基础的生成函数问题. 我们构造生成函数为 (1+x+x^2+x^3....)(1+x^2+x^4+....).....(1+x^n) 用x来表示数,指数表示数的大小 解得x^n的系数即为所求.#include#define Ri(a) scanf("原创 2017-07-12 19:23:43 · 1036 阅读 · 0 评论 -
HihoCoder - 1526 Sequence Value 思维+二进制dp
题目链接题意:给定一个长度为 n 的序列 a[1..n],定义函数 f(b[1..m]) 的值为在 [0,m-1] 内满足如下条件的 i 的数目:b 中前 i 个数异或起来的值小于 b 中前 i +1个数异或起来的值。对于 a[1..n] 的每个子序列 b[1..m],求f(b[1..m])之和。思路:这又是一个二进制原创 2017-07-10 23:51:17 · 574 阅读 · 0 评论 -
CodeForces - 13C/CodeForces - 713C/HihoCoder - 1529 Sequence dp
题目链接凯大佬的博客题意:给定一个长度为 n 的非负整数序列 a[1..n]。你每次可以花费 1 的代价给某个 a[i] 加1或者减1。求最少需要多少代价能将这个序列变成一个不上升序列(有的题目是非递减的,或者严格递减的等等)。这三个题目都是类似的,只是问法不一样,严格问题的凯爷的博客说的已经很明确了.对于hiho上那个题,因为数据量太大(n^2)是原创 2017-07-11 00:02:00 · 836 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 9 待补 hdu 6161 ~6170
hdu6151 FFF at Valentine题意:种种原因...签到题这次都没出,先是各种猜题意,然后题意对了,图论小白并不会做,队友卡在02主席树....给你一个无环,无重边的有向图,问你任意两点,是否存在路径使得其中一点能到达另一点思路: 一开始想的是强联通分量缩点,缩点后剩下的点必须构成一条链,于是通过判断每个点的出入度不能大于等于原创 2017-08-23 15:36:01 · 390 阅读 · 0 评论 -
bnuoj 34985 Elegant String dp+矩阵快速幂
题目链接题意:定义了一个优雅的串:任意子串都不是0~k的一个组合,问长度为n的优雅串有多少个?结果对20140518取余 T思路:dp+矩阵优化的套路很明显,关键难在递推方程的推导,然后构造矩阵,剩下的就很简单./* 我们定义dp[i][j]为长度为i,尾部j个字母均不相同的字符串的数目。 那么我们很容易推出dp[i][j]的递推公式了: d转载 2017-09-13 23:18:56 · 262 阅读 · 0 评论 -
计蒜客 The Heaviest Non-decreasing Subsequence Problem dp LIS变形 || 线段树+dp
题目链接题意:每个数有一个val和weight,如果val = 1e4 weight 为5 ,其余为1.让你求一哥序列使得为weight最大并且val是不下降的.思路:我们知道在求普通的LIS的时候存的东西可能会被交换,换的时候会使得weight并不一定是最优解、当时看大家过的那么多就写了一个坑爹的做法,把所有数离散一下用线段树维护了1 - id[i] 的最大值原创 2017-09-24 19:03:36 · 480 阅读 · 0 评论 -
HDU - 5009 Paint Pearls dp + 双向链表优化
题意: 有n个珠子需要你染上特定的颜色,初始的时候是没有染色的,每次染的代价是不同颜色的平方。问你染完所有的需要的最小代价。思路: 首先比较好想的就是dp[i]表示涂完1~i所需要的最小代价. dp[i] = min(dp[i],dp[j]+cnt*cnt) cnt为从j+1~i的不同颜色珠子数.然后发现这个过程需要n2n^2 显然不行. 我们发现对于重复颜色珠子,从后往前枚举j的时候重复颜原创 2017-10-14 11:53:53 · 337 阅读 · 0 评论 -
hihocoder 1580 Matrix dp+RMQ (带修改的最大子阵和)
传送门 题意:给你一个n*m的矩阵,现在要求你必须修改矩阵的某一个值,问你能得到的最大子矩阵和是多少? 是这个题目的变形 思路:这个题目是在原有的最大子矩阵和的基础上的变形.首先预处理每一列的和,然后枚举两行,复杂度变成O(N3)O(N^3) 转变成最大子段和(老生常谈)现在我们来说说怎么修改? 我们为了使和最大,修改时肯定修改的是某一列的最小的那一个,这样才能使得和达到最大. 每次原创 2017-10-05 23:02:36 · 314 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) Ilya And The Tree 树上因子 思维 + dfs
题目链接题意:有一个树,树上的每个点都有一个权值,对于一个点的魅力值来说,是他到根点1的路径上的所有点权值的最大公约数,对于每个路径上的点,你可以选择唯一点将他变为0或者不做改变,现在希望你让每个点都获得尽可能大的魅力值,输出每个点的魅力值思路:这个题目大概是需要在树上做个dp吧,但是我们知道所有的dp都可以由搜索的状态转移而来,所以我们可以先考原创 2017-08-30 23:37:55 · 314 阅读 · 0 评论 -
牛客网 Wannafly模拟赛2 树 dp+思维
题目链接题意:shy有一颗树,树有n个结点。有k种不同颜色的染料给树染色。一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同。请统计方案数。思路:这个题真的很不好想,只要想到了就很简单了,当然我也没想,因为没机会啊 根据题意的描述,所有被染成同一个颜色的都是一个连通图,也就是很多个原创 2017-08-29 20:25:33 · 1040 阅读 · 0 评论 -
hdu 1466 计算直线的交点数 dp
题目链接思路:dp[i][j]表示i条线 j个交点的情况,那么我们通过画个图可以发现我们新增加的这条线,所有交点的情况,都可以通过前面已经存在的转移而来,转移后的交点可以得到一个式子:(i-j)*j+k j为平行线的条数,i-j为自由线的条数 k为自由线本身所拥有的的交点个数如果当前的状态可以从已经存在的状态转移而来就置1,最后枚举交点输出可能存在的交点.#in原创 2017-05-09 23:30:19 · 439 阅读 · 0 评论 -
hdu 2577 How to Type dp
题目链接题意:给你一些字符串a~z||A~Z,然后我们按键最少能把他们都打出来,如果开始Cap大写灯是灭的,我们需要打A的话,可以按下cap键,然后再按a,需要两步,但是这下状态变为了大写灯亮,当然我们也可以按下shift,再按下a,需要两步,但是这下状态就变成了大写灯灭。题目要求的是,把这些字母打出来需要的最小按键数目。有一点需要注意,按键完成之后需要使cap键关闭。思路原创 2017-04-04 12:42:25 · 530 阅读 · 0 评论 -
hdu 6199 gems gems gems dp
题目链接题意:给出一个数列,两个人轮流取数,最开始可以取1或2个,之后每一次可以取和前一次相同或者多1个。取完或者不足停止。先取的人希望差最大,后取的人希望差最小,两人都是最优策略。求最后的差。(这里的差是A-B,不是abs(A-B))思路:dp[0][pos][k] 表示Alice 从pos位置开始取,取k个或者k+1 个的 最大差值是多原创 2017-09-12 15:09:06 · 396 阅读 · 0 评论 -
HDU - 5763 Another Meaning dp +KMP
题目链接题意:给定一个字符串和模板串,告诉你模板串有2个意思,问这个字符串总共有多少种含义。思路: 头一次见这么用KMP的. dp[i]表示以i字符串结尾的串的总含义数. 那么有dp【i】=dp[i-1] 如果他可以和模式串匹配,dp[i-1]表示他不表示模式串的那个意思. 如果 主串中第i个位置往前lenb个字符构成的原创 2017-09-01 23:31:56 · 300 阅读 · 0 评论 -
HDU - 5773 The All-purpose Zero LIS变形 思维+dp
题目链接题意:可以将0替换成任意interger(包括负数),在此基础上求最长递增子序列。思路:对于这个题目,我只想%一下出题大佬!首先要知道,把所有的0都用上一定不会使答案变得更差. 这个题目确实有助于你理解nlogn复杂度求LIS的算法,dp[i]数组保存的就是当前LIS长度为i的末尾最小的一个数,那么举个例子 1 2 3原创 2017-09-01 23:03:26 · 348 阅读 · 0 评论 -
HDU - 4778 Gems Fight! 博弈+状压预处理+记忆化搜索 好题!
题目链接题意:有 G 种颜色的宝石,放在 B 个袋子里(每种颜色可以放多个)。两人轮流选袋子(每个袋子只能被选 1 次),每次将选出来的袋子中的宝石放到 cooker 中,cooker 可能会起反应。反应条件是 cooker 中出现 S 个一样颜色的宝石,而且一旦起反应,每 S 个一样颜色的宝石就会获得 1 个魔法石(同时反应)。作为原创 2017-09-27 00:32:28 · 444 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(构造二项式定理 or dp矩阵优化)
题目链接 题意:一枚硬币,投一次正面朝上概率为q/p, 求投k次,正面朝上的次数为偶数次的概率X/Y,输出(X∗Y−1)mod(1e9+7)(X∗Y^-1)mod(1e9+7) 思路: 观察发现所有可能的次数,是一个二项式定理展开式, 所以我们构造一个 ((p/q)x+(p−q)/p)k((p/q)x+(p-q)/p)^k 可以发现我们首先将x赋值为1,那么全部为正的,然后再将x赋原创 2017-09-16 20:42:06 · 633 阅读 · 0 评论 -
Sagheer, the Hausmeister CodeForces - 812B dp
题目链接思路:只说一下这个题dp的思想吧,我们对于每一行都记录最左端未关灯的位置,和最右端未关灯的位置,那么对于左端和右端的楼梯维护一下是将本层楼灯全部关闭原路返回花的时间少,还是从右端过来时间少,对于右端也一样,然后维护一个最优解决就可以了; 坑点:在dp的时候左端被更新了会影响下面所以要记录一下初始的值.特判只有最后一行未关灯的情况#include#inc原创 2017-06-03 17:49:15 · 643 阅读 · 0 评论 -
ZJCOJ qwb与二叉树 dp or 记忆化搜索
题目链接思路:dp[i][j]表示i个节点j个叶子的节点数为多少,dp[n][m]=∑i∑jdp[i][j]∗dp[n−1−i][m−j]#include#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("原创 2017-06-05 21:00:56 · 358 阅读 · 0 评论 -
hihocoder #1482 : 出勤记录II dp
描述小Hi的算法课老师每次上课都会统计小Hi的出勤记录。迟到会被记录一个L,缺席会被记录一个A,按时上课会被记录一个O。一学期结束,小Hi的出勤记录可以看成是一个只包含LAO的字符串,例如"OOOOLOOOLALLO……"。如果小Hi整学期缺席不超过1次,并且没有连续3次迟到,小Hi的出勤记录就算合格。 现在给出字符串的长度N,小Hi想知道长度为N的出勤记录中,合格的记原创 2017-03-23 00:00:16 · 730 阅读 · 0 评论 -
01背包总结
题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。思路:这是最基本的01背包问题,之所以称之为01背包问题是指对于每个物品都只有放和不放两种状态,对应的0 1 表示 首先我们说一下状态转移方程,最普通的二维数组写法 dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]) dp[i原创 2017-01-31 22:09:45 · 469 阅读 · 0 评论 -
Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet
C. Alyona and Spreadsheettime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDuring the lesson small girl Alyon原创 2017-02-25 21:08:23 · 431 阅读 · 0 评论 -
CodeForces - 362C B - Insertion Sort
Petya is a beginner programmer. He has already mastered the basics of the C++ language and moved on to learning algorithms. The first algorithm he encountered was insertion sort. Petya has already wri原创 2017-03-02 16:21:44 · 483 阅读 · 0 评论 -
算法训练 未名湖边的烦恼 dp
问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和原创 2017-02-08 16:37:48 · 688 阅读 · 2 评论 -
hdu 4576 D - Robot dp+滚动数组
Michael has a telecontrol robot. One day he put the robot on a loop with n cells. The cells are numbered from 1 to n clockwise. At first the robot is in cell 1. Then Michael uses a remote co原创 2017-01-23 19:24:28 · 427 阅读 · 0 评论 -
Codeforces Round #396 (Div. 2) A---C 暴力+dp
A. Mahmoud and Longest Uncommon Subsequencetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputWhile Mahmoud a原创 2017-02-09 17:42:08 · 713 阅读 · 0 评论 -
nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共
最长公共子序列时间限制:3000 ms | 内存限制:65535 KB难度:3描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合原创 2016-10-01 21:01:24 · 1119 阅读 · 2 评论 -
hdu 1257 最少拦截系统 dp or 贪心
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系原创 2016-12-16 16:36:01 · 505 阅读 · 0 评论 -
HDU 1058 D - Humble Numbers dp
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.原创 2016-12-09 20:53:18 · 370 阅读 · 0 评论 -
BZOJ 4300 绝世好题 dp
DescriptionNow give you a number sequence Ai, you need to calculate the longest length of subsequence Bi, meet the requirements of Bi & Bi-1 is not equal to zero. (2InputInput conta原创 2016-11-23 20:48:21 · 463 阅读 · 0 评论 -
hihocoder 1274 自行车架 多维dp
描述小Hi的宿舍楼下有一块用于停自行车的区域。平时自行车都停得非常杂乱,于是楼长打算去买一排自行车架用来停车。自行车架一般有P个槽,每个槽的两侧都可以停入自行车;但是一个槽位同时只能有一侧停入自行车。此外,停入一辆自行车会导致无法在这一侧的附近若干个槽位中停入自行车。经过调查,这栋宿舍楼的学生共拥有N辆A型自行车、M辆B型自行车和K辆C型自行车。其中A型自行车会导致这一侧的左右各1个槽位不转载 2017-03-13 22:55:09 · 897 阅读 · 0 评论