
动态规划之基础DP
Conchpeng
贵在坚持。如有错误欢迎指正。
展开
-
28. 实现 strStr() kmp
class Solution {public:void create_next(const vector<char>& a, vector<int>& next) { int i = 2; while (i < a.size()) { // 目标是next[i],实际上是用a[i-1]去做对比 int max_common_len = next[i - 1]; while (a[i-1]原创 2022-03-26 15:30:09 · 531 阅读 · 0 评论 -
Educational Codeforces Round 32 E. Maximum Subsequence[折半搜索+二分+状压枚举] 好题!
E. Maximum Subsequencetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array a consisting o原创 2018-04-09 19:47:14 · 261 阅读 · 0 评论 -
关于01背包那点事o(*≧▽≦)ツ┏━┓
开门见山 ╰(*°▽°*)╯我P某人要开讲了~ dp[n][v]状态定义为:选择前n个物品的若干个装入体积为v的包中 ,所能获得的最大价值那么有对于当前的状态,我们有 dp[n][v]=max(dp[n-1][v],dp[n-1][v-w[n]]+v[n]] 接下来叙述一个问题 : 01背包恰好装满 与 不要求恰好装满1.若为恰好装满要恰好装满,原创 2018-02-11 22:48:49 · 212 阅读 · 0 评论 -
Course Selection System ZOJ - 3956 【01背包变形】 好题~
Course Selection SystemTime Limit: 1 Second Memory Limit: 65536 KBThere are n courses in the course selection system of Marjar University. The i-th course is described by two values: ha原创 2018-02-12 21:48:09 · 207 阅读 · 0 评论 -
Codeforces Round #461 (Div. 2) E. Birds [DP]
E. Birdstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputApart from plush toys, Imp is a huge fan of little原创 2018-03-06 18:24:10 · 261 阅读 · 0 评论 -
饭卡 HDU - 2546 【基础的01背包 变形】
饭卡Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 37042 Accepted Submission(s): 12733Problem Description电子科大本部食堂的饭卡有一种很诡异的设计,即在购买原创 2018-02-12 13:44:43 · 310 阅读 · 0 评论 -
小背包 HRBUST - 1558 【基础01背包】
小背包Time Limit: 1000 MSMemory Limit: 10240 KTotal Submit: 1645(295 users)Total Accepted: 416(262 users)Rating: Special Judge: NoDescription有一个容原创 2018-02-11 23:27:06 · 239 阅读 · 0 评论 -
Password CodeForces - 126B [KMP+DP思维]
B. Passwordtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAsterix, Obelix and their temporary buddies Suf原创 2018-01-30 13:46:24 · 433 阅读 · 0 评论 -
A Wonderful Concert HRBUST - 2210
A Wonderful ConcertTime Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 20(16 users)Total Accepted: 6(6 users)Rating: Special Judge: NoDescription原创 2018-01-29 20:32:35 · 328 阅读 · 0 评论 -
King's Order HDU - 5642 [数位DP]
King's OrderTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1283 Accepted Submission(s): 633Problem DescriptionAfter the king原创 2018-02-05 21:05:42 · 244 阅读 · 0 评论 -
Magic Numbers CodeForces - 628D [数位DP]
D. Magic Numberstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputConsider the decimal presentation of an in原创 2018-02-05 20:53:04 · 291 阅读 · 0 评论 -
beautiful number HDU - 5179 [数位DP]
校晋级第42届ACM国际大学生程序设计竞赛全球总决赛beautiful numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 919 Accepted Submission(s): 590原创 2018-02-05 20:32:10 · 345 阅读 · 0 评论 -
Bomb HDU - 3555 [数位DP]
Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 21117 Accepted Submission(s): 7903 Problem Description...原创 2018-02-05 20:25:34 · 234 阅读 · 0 评论 -
Dima and Salad【01背包】当W[i]存在负数问题~好题!
C. Dima and Saladtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputDima, Inna and Seryozha have gathered in a原创 2018-02-20 00:27:07 · 252 阅读 · 0 评论 -
Selling Souvenirs CodeForces - 808E 【01背包变形】 前缀和+三分
E. Selling Souvenirstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAfter several latest reforms many tour原创 2018-02-20 20:17:36 · 269 阅读 · 0 评论 -
整数求和 [简单DP]
整数求和题意:问从[1,n]中挑若干个数组成m的方案数,保证n,m <=120思路:若n>m,dp[n][m]=dp[m-1][m] 若n==m,dp[n][m]=dp[m-n][m]+1 若n<m,考虑n是否在答案中dp[n][m]=dp[n-1][m-n] + dp[n-1][m]复杂度:O(n*m),其实也可以用滚动数组写,空间上是2*m#inclu...原创 2018-11-21 09:17:34 · 235 阅读 · 0 评论 -
构造回文【简单DP= =】
构造回文时间限制:1秒空间限制:32768K给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1:abcda...原创 2018-11-18 19:17:48 · 233 阅读 · 0 评论 -
明七暗七 [二分+数位DP]
明七暗七 思路:二分+数位DP#include <bits/stdc++.h>using namespace std;typedef long long ll;ll dp[50][10][3];int bit[50];ll dfs(int pos,int mod,int have,bool lead,bool limit){ if(pos==-1) ret...原创 2018-09-17 17:10:05 · 785 阅读 · 0 评论 -
Removal【套路DP】
Removal题意:一个长为n(1e5)的序列,序列中每个数<=k,现在删除m(<=10)个位置的数 。问有多少种不同的序列思路:DP。设dp[i][j]为到第i个位置,删除j个有多少个不同的序列. 接下来就去找后面跟1~k是不是存在即可。#include<bits/stdc++.h>#define PI acos(-1.0)#define pb pu...原创 2018-07-22 11:53:15 · 298 阅读 · 0 评论 -
Symmetric Matrix[矩阵转图论]
Symmetric Matrix题意:问有多少个矩阵A满足如下性质* Ai, j ∈ {0, 1, 2} for all 1 ≤ i, j ≤ n.* Ai, j = Aj, i for all 1 ≤ i, j ≤ n.* Ai, 1 + Ai, 2 + ... + Ai, n = 2 for all 1 ≤ i ≤ n.* A1, 1 = A2, 2 = ... = An,...原创 2018-07-22 11:48:21 · 540 阅读 · 0 评论 -
Avito Code Challenge 2018 D. Bookshelves [位运算结合贪心/ DPcheck]
题目:D. Bookshelves题意:给定一个长为n的序列,要求划分成k个连续子区间,每个区间的和分别为sum[i],求最大的 sum[1]&sum[2]& ... & sum[k]思路:根据二进制贪心的原则,高位的1选了比后面都选1要更优.那么bit从最高位(60)开始枚举,看看当前的区间,是否能够构成 1LL<<bit , 如果可以那么ans+=1LL&l...原创 2018-05-29 20:07:46 · 247 阅读 · 0 评论 -
Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!] D. XOR-pyramid【递归DP】
D. XOR-pyramidtime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputFor an array bb of length mm we define the function ff asf(b)={b[1]if m=1f(b[1]⊕b[2]...原创 2018-05-16 20:45:31 · 254 阅读 · 0 评论 -
F. Rain and Umbrellas 【DP】
F. Rain and Umbrellas题意:[0,a]的区间内,有些区间[l,r]被雨淋湿了,必须要有雨伞才能通过。每一把伞对应一个pos,wight 。 问想从0出发走到a,不被淋湿至少的w*dis是多少。他可以携带任意把伞,任意时刻丢弃或者拾起。如果一定会被淋雨,输出-1思路:dp[n]:到pos==n的答案最小值dp[n]=dp[n-1] 那么有,如果区间[n-1,n]被雨淋湿了否则d...原创 2018-06-02 23:24:23 · 466 阅读 · 0 评论 -
Educational Codeforces Round 19 E. Array Queries【DP预处理】 水
E. Array Queriestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputa is an array of n positive integers, al原创 2018-04-26 20:30:46 · 184 阅读 · 0 评论 -
Educational Codeforces Round 22 C. The Tag Game【贪心+dfs】 此篇~纪念第一次自己1A图论题
C. The Tag Gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAlice got tired of playing the tag game by t原创 2018-04-22 14:14:26 · 220 阅读 · 0 评论 -
C. Ilya And The Tree【树形DP】
C. Ilya And The Treetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIlya is very fond of graphs, especiall原创 2018-03-27 23:45:02 · 363 阅读 · 0 评论 -
B-number HDU - 3652 [数位DP]
B-numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7701 Accepted Submission(s): 4521Problem DescriptionA wqb-number, or原创 2018-02-05 20:17:49 · 262 阅读 · 0 评论 -
H - 无聊的小明 HRBUST - 2181 [数位DP] 学习中ing
无聊的小明Time Limit: 3000 MSMemory Limit: 32768 KTotal Submit: 108(61 users)Total Accepted: 52(46 users)Rating: Special Judge: NoDescription小明想用两个字母a和b创造一个长度为n的单词,但是他又不希望连续的a超过p个,同时也不希望连续的b超过q个。那么小明有能创造出多...原创 2018-02-10 01:01:58 · 269 阅读 · 0 评论 -
字符串中的最大值 51Nod - 1277[DP+KMP]
1277 字符串中的最大值题目来源: Codility基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题一个字符串的前缀是指包含该字符第一个字母的连续子串,例如:abcd的所有前缀为a, ab, abc, abcd。给出一个字符串S,求其所有前缀中,字符长度与出现次数的乘积的最大值。例如:S = "abababa"原创 2018-01-28 19:26:06 · 243 阅读 · 0 评论 -
开锁魔法III HRBUST - 2250 【DP+long double防爆】
开锁魔法IIITime Limit: 500 MSMemory Limit: 256000 KTotal Submit: 98(33 users)Total Accepted: 30(23 users)Rating: Special Judge: NoDescription一日,崔克茜来原创 2018-01-30 22:56:53 · 265 阅读 · 0 评论 -
Codeforces 385C Bear and Prime Numbers【巧妙用埃筛】
题意:已知n个数a[i] 。给定区间[l,r] 。 m次询问,求得在[l,r]区间内的素数中,可以整除a[i]的所有a[i]个数和。例如 2 3 4 5 6区间[2,6] ,素数仅有3,5。可以被3整除的有3、6,可以被5整除的有5.那么累加和是3。数据分析:1 ≤ n ≤ 1e6 :: 2 ≤ a[i]≤ 107 :: 1 ≤ m ≤ 50000 :: 2 ≤ l≤ r ≤ 2·e9思路:刚原创 2017-08-14 14:25:25 · 300 阅读 · 0 评论 -
Memory and Scores CodeForces - 712D【好题啊!!】
题意:A和B两个人的初始积分为a,b。每一轮A,B均可从[-k,k]的区间内取出一个数,累加在初始积分上,共执行t轮,问A赢B的有多少种可能。思路:暴力复杂度O(t*kt*k) TLE 。 取dp前缀和优化,每次的前缀和为下次的前缀和服务,以此类推。#include <bits/stdc++.h>using namespace std;typedef long long ll;int MOD=原创 2017-07-28 19:59:40 · 373 阅读 · 0 评论 -
饭卡 HDU-2546 【01背包变形】
题意:对于饭卡里的余额,如果少于5元,那么不能买任何东西,≥5元,可以买任意一个东西,甚至让饭卡的余额变成负的。现在已知饭卡的余额m,n种菜的价格。思路 : 最贵的那个肯定最后买,让n-1个菜尽量接近5就可以。 01背包的变形,在n-1个物品中抽取任意个,使得所花的钱尽可能接近m-5。让价值和体积相等。求出体积最大的时候,就求出了价值最大的时候。#include <bits/stdc++.h>us原创 2017-08-04 23:58:53 · 290 阅读 · 0 评论 -
Codeforces Round #427 (Div. 2) C. Star sky
题意: 在坐标系上,有n个星星(点),告诉你n个点的坐标,以及它的亮度s,最大亮度c,给定t,左下角坐标,左上角坐标,该矩形区域的星星亮度会变为(s+t)%(c+1),求该矩形区域所有星星的亮度和。思路:已知所有点,那么我们可以预处理出所有 0,0, –x,y这个矩形区间的每一种亮度对应的数量,然后就浅浅的了~~~~~~~~~ 也可以说是DP ,其实一个道理#include <bits/stdc+原创 2017-08-01 18:43:12 · 230 阅读 · 0 评论 -
838A - Binary Blocks【区间前缀和+思维】
题意:已知n*m的矩阵,由1,0构成,要求确定一个k,使得n*m的矩阵划分成一系列k*k的小矩阵,并且k*k矩阵内的所有值都要相同(要么都为1,要么都为0)。 (可以补行或列,补0)思路:遍历k(1~2500) , 对于每一个k,我们处理出当前k所需要改变的所有次数。 首先,我们预处理出(1,1)~(i,j)【任意一点】区域中’1’的个数dp[i][j],那么对于当前k*k的区域,我们所要改变的原创 2017-08-08 10:20:20 · 484 阅读 · 0 评论 -
01背包模板、完全背包 and 多重背包(模板)
转载请注明出处:http://blog.youkuaiyun.com/u012860063模版就直接贴代码:01背包模板:[cpp] view plain copy print?/* 01背包问题 01背包问题的特点是,">每种物品仅有一件,可以选择放或不放。 01背包问题描述: 有N件物品和一个容量为V的背包。第i件物品转载 2017-07-05 10:11:00 · 295 阅读 · 0 评论 -
【转】背包九讲 好好学!
背包九讲目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化 附:USACO中的背包问题 前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃转载 2017-07-04 20:02:02 · 240 阅读 · 0 评论 -
Tickets HDU - 1260
输入:T:测试组数 K:人数 K个:每个人的买票时间 K-1个:相邻人的买票花费时间题意:告诉你每个人的买票时间和相邻两个人的买票时间,求N个人最少可以用多少秒完成 。 售票员很想早点回家啊这题加深了我对DP的理解,题目要我们求N个人时候的最短时间,那么我们设dp[n],那么有dp[n]=min{dp[n-1]+a[n],dp[n-2]+b[n]}; 那么我们求dp[n] 就原创 2017-07-04 14:34:24 · 205 阅读 · 0 评论 -
Common Subsequence POJ - 1458
题意:经典DP题,几乎在任何算法书上都看到过。 一直不理解,今天顿悟??对于长度为n和m的字符串中,要求最长公共子序列(LCS)可以不连续,但要保持顺序不变。 那么开二维数组dp,写出如下的状态转移方程。起始条件我们需要知道所有的dp[0][0~m]=dp[0~n][0]=0;那么根据以下递推式就可以推出来。 从最优子解角度去考虑,求dp[n][m]过程中,每一个dp[i][j]都是最大值,原创 2017-07-04 16:56:25 · 236 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping! HDU - 1087
这题错的莫名其妙#include #include #include #include #define MAXN 1000+5using namespace std;int a[1005];int dp[1005];int main(void){int n;while((scanf("%d",&n))==1 &&n){for(int i=1;原创 2017-07-03 21:37:10 · 212 阅读 · 0 评论