
dp
LOI_DawnKing-
还记得年少时的梦吗?像一朵永不凋零的花。
展开
-
Educational Codeforces Round 16
果然还是很弱啊,写前几个水题的题解算了……Educational Codeforces Round 16A ————————————————————————————— 题意:给你国王的坐标,你输出国王能到达几个地方 题解:特判当国王在棋盘边界的情况 代码:#include #include #include #include using namespace std;原创 2016-08-25 19:37:19 · 462 阅读 · 0 评论 -
Codevs 2188 最长上升子序列 dp
Codevs 2188 最长上升子序列对不合法的数字不作处理。continue#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;#define MAXN (200000+10)int a[MAXN], dp[MAXN];#define INF (1e9)in原创 2016-10-30 08:24:37 · 321 阅读 · 0 评论 -
Codves 1044 拦截导弹 ---1999年NOIP全国联赛提高组 dp(n2 || nlogn)
Codves 1044 拦截导弹 —1999年NOIP全国联赛提高组一遍最长不上升子序列, 一遍严格上升子序列。n方代码:#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (20+2)int a[MAXN], dp[MAXN];i原创 2016-10-30 10:15:07 · 785 阅读 · 2 评论 -
Codevs 1058 合唱队形 ---2004年NOIP全国联赛提高组 dp
Codevs 1058 合唱队形 —2004年NOIP全国联赛提高组枚举中间的最高点跑最长上升和最长下降子序列。注意,单调的数据答案是 0。真是一个好题, 数据在注释里。#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>using namespace st原创 2016-10-30 10:48:03 · 474 阅读 · 0 评论 -
Codevs 2980 买帽子 dp(LIS)
Codevs 2980 买帽子对于一个字符串的最长对称子序列,就是它和它反串的最长公共子序列我看了DQS的题解代码:(char 数组实现)#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>using namespace std;#define MAXLEN原创 2016-10-30 15:33:16 · 410 阅读 · 0 评论 -
【NOIP2010】乌龟棋 dp
【NOIP2010】乌龟棋 污龟棋~~~因为出发点是 1 所以走 n 步获得的分数是 maps[n-1] 格子 所以等效于从 0 开始输入 maps 这样比较方便#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (360)#de原创 2016-11-11 08:53:50 · 577 阅读 · 0 评论 -
Codevs 1169 传纸条/1043 方格取数 2008/2000年NOIP全国联赛提高组 多线程dp
1169 传纸条 / 1043 方格取数2条路线一起走。 dp[i][j][k][l] 表示 第一个路线走到 i, j 第二个路线走到 k, l; 由于不能重复走, 所以当 2 个路线的点重合 只加一个maps[i][j];传纸条#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using na原创 2016-10-30 20:17:32 · 384 阅读 · 0 评论 -
Codevs1966 乘法游戏 区间dp
Codevs1966 乘法游戏跟石子归并差不……多…? 好像所有的区间dp都差不多,然而我还是不会做。状态转移方程:dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j]+num[i]*num[j]*num[k]); 代码:#include <cstdio>#include <cstring>#include <iostream>#include <cstdl原创 2016-11-01 07:51:58 · 413 阅读 · 0 评论 -
Codevs1155 金明的预算方案 ——2006年NOIP全国联赛提高组 变种经典背包dp
Codevs1155 金明的预算方案 ——2006年NOIP全国联赛提高组由于至多有2个附件,直接手动枚举就好了。 dp时:如果当前物品是附件, 跳过如果当前物品时主件 只选这个主件,不选它的附件当这个主件有附件时, 选它和它的第一个主件当这个主件有2个附件时, 选它和它的第二个主件当这个主件有2个附件时, 选它和它的所有附件#include <cstdio>#include <原创 2016-11-01 11:06:06 · 520 阅读 · 0 评论 -
Codevs1115 开心的金明 ——2006年NOIP全国联赛普及组 普通背包dp
Codevs1115 开心的金明 ——2006年NOIP全国联赛普及组水水水水水……#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (25+5)#define MAXV (30000+30)struct item{ i原创 2016-11-01 11:30:04 · 449 阅读 · 0 评论 -
Codves3914 昆虫繁殖 递推 fib变形
Codves3914 昆虫繁殖fib变形。 第n个月的成虫 = 第n-1个月的成虫数 + 第n-2个月的幼虫数。 第n-2个月的幼虫数等于 第(n-2)-x个月的成虫数。 f[n]=f[n−1]+y∗f[n−2−x]f[n] = f[n-1] + y*f[n-2-x]#include <cstdio>#include <cstring>#include <iostream>#includ原创 2016-11-01 14:29:30 · 801 阅读 · 0 评论 -
Codevs4880 位数问题 数位dp?
Codevs4880 位数问题递推一下。 i 位的 偶数 3 的数字个数由 (i-1位的奇数3的个数+新加的这一位的一个3)+ (i-1位的偶数3的个数+新加的这一位的不是3的个数)。 奇数同理。#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;type原创 2016-11-01 15:40:33 · 360 阅读 · 0 评论 -
Codevs3269 混合背包 经典背包dp
Codevs3269 混合背包引用 DQS博客 中的话:01背包:倒着for。 完全背包:正着for。 多重背包:拆开做01背包,或者条件满足直接完全背包。代码#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (200+20)原创 2016-11-01 20:19:19 · 373 阅读 · 0 评论 -
noiopenjudge6049:买书 dp
noiopenjudge6049:买书 代~码~通~俗~易~懂~#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (1100)const int k[] = {0,10,20,50,100};int dp[MAXN];int m原创 2016-11-13 20:13:15 · 774 阅读 · 0 评论 -
【NOIP2011】统计单词个数 划分性dp*2
【NOIP2011】统计单词个数dp[i][k] 代表前 i 个字母分成 k 段的最大单词数。 w[i][j] 代表 区间[i,j]的最大单词数。所以,先处理出 w, 再处理 dp。w[i][j] 不能共同前缀, 所以从后往前更新,验证前缀。 w[i][j] = w[i+1][j]+1 (当存在以i开头的单词完全在 [i,j] 内) w[i][j] = w[i+1][j] (other cas原创 2016-11-09 19:54:29 · 1030 阅读 · 0 评论 -
Codevs 2598 编辑距离问题 dp
Codevs 2598 编辑距离问题 if(i == 0) dp[i][j] = j;if(j == 0) dp[i][j] = i;if(s1[i] == s2[j]) dp[i][j] = dp[i-1][j-1];else dp[i][j] = max{dp[i-1][j] + 1 // 删除 s1[i]; dp[i][j-1] + 1 // 删除原创 2016-10-28 16:15:22 · 349 阅读 · 0 评论 -
【NOIP2014】飞扬的小鸟 背包dp
UOJ【NOIP2014】飞扬的小鸟 背包dp codevs 3729 飞扬的小鸟苟且抄DQS代码。 题解都在代码注释中……#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (10010)#define MAXM (1010)原创 2016-11-09 11:07:39 · 563 阅读 · 0 评论 -
洛谷P1002 Codevs1011 过河卒 --2002年NOIP全国联赛普及组 dp递推
洛谷 P1002 过河卒 双倍经验 三倍经验整张图向右下移动了 3 个,以防判断马不能走的点时不越界。 本来不想暴力更改马不能走的点的,发现定义数组for 更麻烦……dp的初始化:最上面一行 和 最左边一行 显然是 1。代码:#include <iostream>#include <queue>#include <cstdio>#include <cstring>using names原创 2016-09-28 15:12:11 · 577 阅读 · 0 评论 -
Codevs1154 能量项链 ——2006年NOIP全国联赛提高组 区间dp
Codevs1154 能量项链将环变成一条 2*n 的链, 这样环上不同起点往后就是 区间 i~i+n-1然后区间dp#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (100+10)int num[MAXN << 1];int原创 2016-11-03 15:12:30 · 368 阅读 · 0 评论 -
POJ1651 Codevs1017 乘积最大 ---2000年NOIP全国联赛提高组 dp
POJ1651 Codevs1017 乘积最大 —2000年NOIP全国联赛提高组预处理出所有数字组合。 dp[i][k] 表示前 i 个数字已经用了 k 个 乘号。 状态转移方程:dp[i][k] = max(dp[i][k], dp[j][k-1]*mul[j+1][i]); 第i个数字用了k个乘号的状态 可以从 小于i 的j 用了k-1个乘号的状态转移而来。#include <cstd原创 2016-10-31 19:52:37 · 418 阅读 · 0 评论 -
HDU5115 Dire Wolf 区间dp
HDU5115 Dire Wolf杀掉某只狼之后, 他左右的狼会相邻。杀掉某个区间的狼之后,攻击力是区间两边的狼的加成。#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (200+20)int a[MAXN], b[MAXN];i原创 2016-11-03 21:54:32 · 404 阅读 · 0 评论 -
Codevs 3027 线段覆盖 2 序列dp
QAQ。谢谢DQS的学习资料。原创 2016-09-29 08:47:41 · 357 阅读 · 0 评论 -
线段覆盖 dp
dp原创 2016-09-29 11:24:12 · 1455 阅读 · 0 评论 -
Codevs 2185 最长公共上升子序列 LCIS
Codevs 2185 最长公共上升子序列定义状态 dp[i][j] 表示以 a 串的前 i 个字符 b 串的前 j 个字符且以 b[j] 为结尾构成的LCIS的长度。n^3 状态转移方程: dp[i][j]=dp[i−1][j](a[i]!=b[j])dp[i][j] = dp[i-1][j] (a[i] != b[j]) dp[i][j] = max(dp[i-1][k]+1) (1 <原创 2016-11-07 11:04:38 · 450 阅读 · 0 评论 -
Codevs 1315 摆花 ——2012年NOIP全国联赛普及组 dp递推
Codevs 1315 摆花 ——2012年NOIP全国联赛普及组dp[i][j] 表示第 i 种花 放在第 j 个位置的 总方案数。像我这种蒟蒻, 也就抄抄DQS 的题解了。#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#define MAXN (11原创 2016-11-07 12:12:03 · 544 阅读 · 0 评论 -
Codevs 1060 搞笑世界杯 dp递推
Codevs 1060 搞笑世界杯dp[i][j]为 剩 i 张 A 类票,j 张 B 类票,最后两张相同的概率。 需要注意的是, 当 i || j 小于2 时概率是 0; 数据范围 是n 不是输入的2n#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#原创 2016-11-07 16:36:13 · 463 阅读 · 0 评论 -
Codevs 2152 滑雪 记忆化搜索DP
Codevs 2152 滑雪 dp[i][j] 为从 i, j 开始走能走多长距离。代码#include <iostream>#include <cstdio>#include <queue>#include <cstring>using namespace std;#define MAXN (100+10)const int dx[] = {0,1,0,-1,0};const int原创 2016-10-27 20:06:46 · 347 阅读 · 0 评论 -
Codevs 1048 石子归并 区间DP
Codevs 1048 石子归并#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;#define MAXN (100+10)int sum[MAXN];int dp[MAXN][MAXN];#define min(u,v) (u<v?u:v)int main原创 2016-10-28 08:08:33 · 415 阅读 · 0 评论 -
Codevs2618 核电站问题 dp递推 n||nm
Codevs2618 核电站问题解法一: 设f[i][j]表示前i个坑末尾连续放了j个核物质;#include <cstdio>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;typedef long long LL;#define MAXN (233)int dp[MAXN][MAX原创 2016-11-08 21:19:57 · 591 阅读 · 0 评论 -
Codevs 1102 采药 01背包模板
#include <cstdio>#include <cstring>#include <queue>#include <cstdlib>#include <iostream>using namespace std;#define MAXN (100+10)#define MAXT (1000+10)int c[MAXN], w[MAXN];int dp[MAXN][MAXT];in原创 2016-10-28 10:20:34 · 413 阅读 · 0 评论 -
Codevs 3955 最长严格上升子序列(加强版) dp (nlogn做法)
Codevs 3955 最长严格上升子序列(加强版) 对于同一个上升子序列, 最后一个元素越小,长度才可能越长。具体过程每次替换后输出一下 dp 数组 , 一目了然。#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;#defi原创 2016-10-28 19:25:03 · 385 阅读 · 0 评论