
DP
文章平均质量分 89
lemonoil
竞赛党一枚
展开
-
DP训练 codeforces 372C Watching Fireworks is Fun [单调队列优化dp]
找到原题烟火 (fireworks.cpp/c/pas) 【题目描述】 城镇的主干道上有n个区域,从左到右编号为1到n,每个区域之间相距1个单位距离。在节日中要放m个烟火,第i个烟火会在ti时刻的ai区域放。如果在ti时刻你所处区域为x,那么你可以获得bi - | ai - x |的快乐值。在每个单位时间你可以移动不超过d个单位距离,初始的位置是任意的,求通过移动能获得快乐值和的最大值。 【输原创 2017-10-17 20:48:09 · 512 阅读 · 0 评论 -
DP训练 Codeforces 816E Karen And SuperMarket [树形DP]
找到原题。购物 (shopping.cpp/c/pas)【题目描述】 商店里有n个物品,第i个物品的价格为ci元。每个物品只能买一次。商店发行了n张优惠券,每个物品各有一张优惠卷。如果使用了第i张优惠券,可以使该物品便宜di元钱,必须买商品才能够使用相对应的优惠券。第1张优惠卷可以无条件使用,但对于第i>=2张优惠卷,如果需要使用第i张优惠券,则必须先使用xi这张优惠券。 现在有b元钱,问最多能原创 2017-10-17 20:55:48 · 479 阅读 · 0 评论 -
DP训练 CDOJ1321柱爷的恋爱 [区间dp]
此题原本为我下午准备讲课的题,居然。。。10分钟ac这运气。。。果真我cdoj做多了。括号匹配 (parenthesis.pas/cpp/c)【题目描述】 给出长度为N的括号序列(只包含(,),[,]),问有多少种方法删掉这些括号的一个子集,使得剩下的括号序列是合法的,请注意不能全部删完。 【输入格式】 输入的第一行是一个整数N,表示序列的长度。 接下来一行N个字符,表示括号序列。 【输出原创 2017-10-17 20:59:59 · 382 阅读 · 0 评论 -
DP训练 Codeforces 673E Levels and Regions [斜率优化dp][期望]
找到原题。游戏 (game.cpp/c/pas)【题目描述】 有n个数,编号从1到n。现在把n个数分成k组编号为1到k,使得每组内的数必须连续,组与组之间不能相交并且每个数必须属于一个组。 游戏进行的过程如下: 1. 如果n个数都已经获得了,游戏结束。否则,找到编号最小没有全部获得的组X。 2. 游戏系统会给一个空的盒子,对于组X中已经获得的数i,将ti张写着数i的卡片放入盒子中,对于组X中原创 2017-10-17 21:12:45 · 483 阅读 · 0 评论 -
DP训练 玲珑杯线上赛 Round #15 河南专场:A -- Reverse the lights [线性DP]
又找到原题。开关灯 (lamp.cpp/c/pas)【题目描述】 有n个灯,初始时都是不亮的状态,每次你可以选择一个某一个灯,不妨记为x,所有满足和x距离不超过k的灯的状态都将被翻转,选择第i个灯的代价记为c[i],问最终所有灯都是亮的状态的最小花费。 【输入格式】 输入有两行,第一行包含两个正整数n , k。 第二行包含n个整数,分别表示c[i]。 【输出格式】 一行,表示最小花费。原创 2017-10-17 21:17:35 · 518 阅读 · 0 评论 -
DP训练 cdoj1354 柱爷很忙 [状压DP]
找到原题 真当我不做CDOJ?工作 (work.pas/cpp/c)【题目描述】 有N件事,每件事有两个属性a,b,现在你要以某种顺序做完这N件事,考虑这个人目前做的事情是i,他做的前一件事是j,那么他做这件事的代价就是(a[i] | a[j]) – (a[i] & a[j]),如果前面没有做事,那么代价就是a[i],但是事情总有轻重缓急之分,按原本顺序的事i最多能推迟到做完任意件紧接着事i之后的原创 2017-10-17 21:27:16 · 378 阅读 · 0 评论 -
BZOJ3037 创世纪 [贪心][树形DP]
毫不容易写完了树形DP,竟然发现自己的rank那么落后,后来才得知这是一道贪心可做题。。。GG贪心做法对于每个入度为0的点能控制的点,如果它之前没有被支配,那么选它一定是最优的。为什么?… 先更新所有入度为0的点,则剩下的点一定能构成几个简单环。而对于每个有n个点的简单环,最多只能选n/2个点。计算出所有环统计答案。#include<iostream>#include<cstdio>#incl原创 2017-09-21 17:24:37 · 462 阅读 · 0 评论 -
BZOJ1864 三色二叉树 [树形DP]
F.A.Qs Home Discuss ProblemSet Status Ranklist 1 Contest 入门OJ ModifyUser Sakura_LemonLogout 捐赠本站原创 2017-09-21 17:58:29 · 338 阅读 · 0 评论 -
近期DP总结
归纳几个蛮不错的DP思路:hotelkeywords: 4 7 宾馆思考对于这道来说dp[i][j]表示i个人在j个房间的状态是很容易定义出来的,但是我们发现我们没办法转移……………… 为什么呢?对于一个房间的人来说他们的去向不唯一!并且对于一个房间来说就连最后的状态也不唯一,更何况最后房间中人的来源了…… 所以这种对房间、对人的定义方法完全就是浪费时间(于是我就浪费了2个小时(哭)) 转换思原创 2017-10-10 20:07:10 · 2818 阅读 · 0 评论 -
BZOJ1725 Corn Fields牧场的安排 [状压DP]
1725: [Usaco2006 Nov]Corn Fields牧场的安排Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 780 Solved: 554[Submit][Status][Discuss]DescriptionFarmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形原创 2017-10-10 20:41:02 · 345 阅读 · 0 评论 -
BZOJ1003 物流运输 [最短路][DP]
1003: [ZJOI2006]物流运输Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8494 Solved: 3588[Submit][Status][Discuss]Description 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转 停好几个码头。物流公司通常会设计一条固定的运输路线,原创 2017-10-13 09:50:04 · 600 阅读 · 0 评论 -
BZOJ1049 数字序列 [DP]
1049: [HAOI2006]数字序列Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1732 Solved: 745[Submit][Status][Discuss]Description 现在我们有一个长度为n的整数序列A。但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列。 但是不希望改变过多的数,也不希望改变的幅度太大。Inp原创 2017-10-13 11:09:17 · 383 阅读 · 0 评论 -
BZOJ1055 玩具取名 [区间DP]
1055: [HAOI2008]玩具取名Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2047 Solved: 1198[Submit][Status][Discuss]Description 某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好,将名字中任意一个字母用“WING”原创 2017-10-13 12:28:34 · 315 阅读 · 0 评论 -
BZOJ4987 Tree [树形DP]
4987: TreeTime Limit: 10 Sec Memory Limit: 256 MBSubmit: 11 Solved: 8[Submit][Status][Discuss]Description从前有棵树。找出K个点A1,A2,…,Ak。使得∑dis(AiAi+1),(1<=i<=K-1)最小。Input第一行两个正整数n,k,表示数的顶点数和需要选出的点个数。接下来n-l行每行原创 2017-09-20 16:37:57 · 824 阅读 · 0 评论 -
BZOJ3791 作业 [DP]
一段序列用K种不同的颜色染色最多染成2∗K−12*K-1段。。。我一开始写成2∗K2*K。。。貌似还与某人讨论过。。 dp[i][j][k]dp[i][j][k]表示染到了第i个作业,共染了j段,当前染的颜色为k(k为0/1) 如果当前颜色和上一段一样,dp[i][j][k]=max(dp[i][j][k],dp[i−1][j][k]+(a[i]==k))dp[i][j][k]=max(dp[i原创 2017-09-20 15:16:25 · 263 阅读 · 0 评论 -
NOIP2016 愤怒的小鸟 [状压DP]
预处理每两个鸟的斜率,然后枚举每个鸟的状态,复杂的n∗2nn*2^n。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const double eps=1e-10;int n,m,t,g;int f[20][20],dp[3原创 2017-09-19 17:34:37 · 654 阅读 · 0 评论 -
DP专题
220分,加上long long 成320分。。。无语,果真需要更加细致地分析数据啊!!!天平(balance.in/balance.out) 物理老师YJ有一个长杆天平,天平的两臂长均为15,将长杆看作x轴,则平衡点在0位置处,负数位置在左臂上,正数位置在右臂上。长杆上有n个位置有挂钩可以挂秤砣。YJ有m个秤砣,质量分别为gi,每个挂钩可以不挂也可以挂任意个秤砣。YJ想要知道,在使用所有秤砣的条原创 2017-03-25 16:56:36 · 1174 阅读 · 0 评论 -
从斜率DP讲起
也有一阵子没写blog了,重新开坑。首先明确一个概念,比起插头dp、轮廓线dp惨不忍睹的考频,裸单调队列优化dp那样太过简单(容易看出、模拟),以及拥有替代所有四边形不等式优化dp来说,斜率dp一定是一个可以高度结合数学图形与代数的重要模块。所以说,什么是斜率dp呢? 假设b > 0(反之亦然),则我们的任务是使得这条直线的纵截距最小。可以想象有一组斜率相同的直线自负无穷向上平移,所碰到的第一原创 2017-05-13 12:22:21 · 532 阅读 · 0 评论 -
LA 3029 City Game [扫描线][DP]
题目传送门在上一道扫描线裸题,这道题还需要DP,但是其实DP的过程就是在做扫描线的过程。在DP的时候就可知道当前位置的四周情况,并把信息合并在一些具有全局性质的数组中,这就很类似于扫描线了。#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<set>#include<queue>#incl原创 2017-07-11 20:32:04 · 347 阅读 · 0 评论 -
BZOJ 3590 Quare [状压DP][边双连通分量][点双联通分量]
题目传送门题目意思就是在一个无向图内求一个权值最小的且包含所有点的双联通子图。 DP乱搞,拆边双联通成链,与下一个子问题。状态压缩选择边的情况。貌似写了很多无用的DP。。。毕竟最后AC时我都不明觉厉。。 这种DP+图论神题还是少做吧,要夭寿的。 推荐这篇blog#include<queue>#include<cstdio>#include<cstring>#include<iostrea原创 2017-07-13 15:28:47 · 731 阅读 · 0 评论 -
BZOJ 1190 梦幻岛宝珠 [01背包][二进制优化]
题目中wi=a∗2bw_i=a*2^b的提示太明显了吧。。 以这个为线索,跑裸的01会TLE,但是通过将相同的bb归纳在一个w[]w[]中的话,就可以在较优的复杂度内求得答案。 数组开小了WA了几次,找不到原因。。。#include<cstdio>#include<cstring>#include<iostream>#define clr(x) memset((x),0,sizeof(x)原创 2017-07-13 17:21:39 · 639 阅读 · 0 评论 -
HRBUST 2141 Watch Dogs [状压DP]
一切伟大的世界历史事件与人物,可以说都会出现两次 第一次是作为悲剧出现 第二次,则是作为笑剧出现 ——《路易.巴拿马的雾月十八日》题目连接题解简单DP。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define M (1<<18)using namespace std;int n,m,t原创 2017-07-20 21:19:32 · 431 阅读 · 0 评论 -
ZOJ 3469 Food Delivery [区间DP]
题目连接题解简单DP。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define maxn 1005#define smin(x,y) (x)=min((x),(y))using namespace std;int dp[maxn][maxn][2],sum[maxn],n,id,v,pos原创 2017-07-20 21:22:53 · 296 阅读 · 0 评论 -
后缀平衡树
题目传送门用数塔问题的方法。。。。40分拿好不送。。。。其实挺简单的。。换一种转移方法就可以了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int f[4005];inline void read(int &res){ static char ch;原创 2017-07-08 21:08:43 · 516 阅读 · 0 评论 -
BZOJ 2645 陶陶吃苹果 [树形DP]
题目传送门题解一道树形DP SB题,vijos入门经典题,noip普及组T1前道题。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define N 4003using namespace std;int dp[N][503][2],a[N],ans;int v原创 2017-07-17 11:53:55 · 407 阅读 · 0 评论 -
洛谷 P2335 [SDOI2005]位图 [DP]
图上递推线性可曲DP, k->n+m的原因是因为最坏情况为对角线为递推线路。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;char s[200];int f[200][200],mp[200][200],n,m;int main(){ freo原创 2017-07-22 17:24:20 · 474 阅读 · 0 评论 -
洛谷 P2439 [SDOI2005]阶梯教室设备利用
题目连接简单sort+dp,类比区间覆盖#include<cstdio>#include<iostream>#include<algorithm>using namespace std;struct data{ int x,y;}a[100005];int dp[100005];inline bool cmp(data a,data b){ return a.y<b.y原创 2017-07-22 17:21:19 · 463 阅读 · 0 评论 -
花花的聚会 [DP][倍增]
题意描述花花住在H 国。H 国有n 个城市,其中1 号城市为其首都。城市间有n-1 条单向道路。从任意一个城市出发,都可以沿着这些单向道路一路走到首都。事实上,从任何一个城市走到首都的路径是唯一的。过路并不是免费的。想要通过某一条道路,你必须使用一次过路券。H 国一共有m 种过路券,每张过路券以三个整数表示:v k w,你可以在城市v 以价格w 买到一张过路券。这张券可以使用k 次。这意味着,拿着这原创 2017-07-24 19:24:27 · 1611 阅读 · 0 评论 -
BZOJ1237 配对 [DP]
找一找规律就可以发现,只会存在2个交叉或者3个交叉的情况,更多的交叉情况会在之前就被处理掉。 DP一下就行了。#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;template<class T>inline void read(原创 2017-09-19 17:01:59 · 381 阅读 · 0 评论 -
BZOJ1084 最大子矩阵 [DP]
1084: [SCOI2005]最大子矩阵Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3017 Solved: 1510[Submit][Status][Discuss]Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵 不能相互重叠。Input 第一行为n,m,k原创 2017-10-13 21:21:01 · 299 阅读 · 0 评论