dp
文章平均质量分 94
Coco_T_
东南大学本科毕业生,浙江大学在读研究生
展开
-
bzoj1026 windy数(数位dp)
Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道, 在A和B之间,包括A和B,总共有多少个windy数?Input 包含两个整数,A B。Output 一个整数Sample Input【输入样例一】 1 10【输入样例二】 25 50Sample Output【输出样例一】 9【原创 2017-04-06 10:20:28 · 258 阅读 · 0 评论 -
luogu2051中国象棋
题目描述这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好 有一个棋子。你也来和小可可一起锻炼一下思维吧!输入输出格式输入格式: 一行包含两个整数N,M,之间由一个空格隔开。输出格式: 总原创 2017-05-31 07:44:33 · 400 阅读 · 0 评论 -
luogu1941 飞扬的小鸟
题目描述Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。为了简化问题,我们对游戏规则进行了简化和改编:游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度)。小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位置出发原创 2017-07-12 20:31:11 · 367 阅读 · 0 评论 -
lougu2513 [HAOI2009]逆序对数列
题目描述对于一个数列{ai},如果有i小于j且ai大于aj,那么我们称ai与aj为一对逆序对数。若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为k的这样自然数数列到底有多少个?输入输出格式输入格式: 第一行为两个整数n,k。输出格式: 写入一个整数,表示符合条件的数列个数,由于这个数可能很大,你只需输出该数对10000求余数后的结果。输入输出样例输入样例#1原创 2017-06-14 17:41:27 · 388 阅读 · 0 评论 -
最短路径
【问题描述】 平面内给出 n 个点,记横坐标最小的点为 A,最大的点为 B,现在小 Y 想要知道在 每个点经过一次(A 点两次)的情况下从 A 走到 B,再回到 A 的最短路径。但他是个强 迫症患者,他有许多奇奇怪怪的要求与限制条件: 1.从 A 走到 B 时,只能由横坐标小的点走到大的点。 2.由 B 回到 A 时,只能由横坐标大的点走到小的点。 3.有两个特殊点 b1 和 b2, b原创 2017-07-15 14:49:01 · 329 阅读 · 0 评论 -
Market
在比特镇一共有 n 家商店,编号依次为 1 到 n。每家商店只会卖一种物品,其中第 i 家商店的物品单价为 ci,价值为 vi,且该商店开张的时间为 ti。 Byteasar计划进行m次购物,其中第i次购物的时间为Ti,预算为Mi。每次购物的时候,Byteasar会在每家商店购买最多一件物品,当然他也可以选择什么都不买。如果购物的时间早于商店开张的时间,那么显然他无法在这家商店进行购物。 现在原创 2017-07-18 15:13:50 · 435 阅读 · 0 评论 -
bzoj1835基站选址(dp+线段树)
Description 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为Di。需要在这些村庄中建立不超过K个通讯基站,在第i个村庄建立基站的费用为Ci。如果在距离第i个村庄不超过Si的范围内建立了一个通讯基站,那么就成它被覆盖了。如果第i个村庄没有被覆盖,则需要向他们补偿,费用为Wi。现在的问题是,选择基站的位置,使得总费用最小。Input 输入数据 (base.in) 输原创 2017-08-01 14:56:39 · 437 阅读 · 0 评论 -
乌龟棋
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型的卡片,见样例),每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相原创 2017-08-07 21:59:36 · 418 阅读 · 0 评论 -
bzoj1864 [Zjoi2006]三色二叉树
DescriptionInput仅有一行,不超过500000个字符,表示一个二叉树序列。Output输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色。Sample Input 1122002010Sample Output 5 2分析: 第一次写dp1A,✿✿ヽ(°▽°)ノ✿ 如果一个节点被染成绿色,那么ta的父亲,儿子和最近兄弟都不能是绿色 也就是说,一个绿色节原创 2017-08-11 08:42:24 · 303 阅读 · 0 评论 -
luoguP1063 能量项链
题目描述在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能原创 2017-08-11 14:49:34 · 197 阅读 · 0 评论 -
hdu3507Print Article(斜率)
Problem Description Zero has an old printer that doesn’t work well sometimes. As it is antique, he still like to use it to print articles. But it is too old to work for a long time and it will certain原创 2017-08-07 15:24:22 · 312 阅读 · 0 评论 -
bzoj1875 [SDOI2009]HH去散步(矩阵)
Description HH有个一成不变的习惯,喜欢饭后百步走。所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离。 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。 又因为HH是个喜欢变化的人,所以他每天走过的路径都不完全一样,他想知道他究竟有多 少种散步的方法。 现在给你学校的地图(假设每条路的长度都是一样的都是1),问长度为t,从给定地 点A走到给定地点B共有多少原创 2017-08-09 09:31:10 · 427 阅读 · 0 评论 -
bzoj3831[Poi2014] Little Bird(单队)
Description 有一排n棵树,第i棵树的高度是Di。 MHY要从第一棵树到第n棵树去找他的妹子玩。 如果MHY在第i棵树,那么他可以跳到第i+1,i+2,…,i+k棵树。 如果MHY跳到一棵不矮于当前树的树,那么他的劳累值会+1,否则不会。 为了有体力和妹子玩,MHY要最小化劳累值。Input 第一行是一个整数n,表示有n棵树。(n<=1 000 000) 第二行有n个数,第i原创 2017-08-09 18:31:44 · 305 阅读 · 0 评论 -
bzoj1044 [HAOI2008]木棍分割(滚动+后缀和)
Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连 接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小, 并且输出有多少种砍的方法使得总长 度最大的一段长度最小. 并将结果mod 10007。。。Input 输入文件第一行有2个数n,m.接下来n行每行一个正整数Li,表示第i根木棍的长度原创 2017-08-10 14:09:59 · 319 阅读 · 0 评论 -
bzoj1055 [HAOI2008]玩具取名(区间)
Description 某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长。 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的。 Input 第一行四个整数W、I、N、G。表示每一个字母能由几种两个字母所替代。接下来W原创 2017-08-11 16:31:50 · 252 阅读 · 0 评论 -
关于dp
dp优化: 虽然对我来说,想出转移方程就很困难了,但是必要的优化有时可以挽救局面时间优化: 1.前缀和: 一般用于转移点的取值是一段连续的区间, 前缀和可以把转移从O(n)降到O(1) 2.单调性: 利用某一属性的单调性来加速转移, 体现在减少转移点数量(斜率优化)或快速查找转移点(nlognLIS) 常见的做法是单调队列,二分 3.数据结构:利用数据结构加速,常见的有线段树,堆原创 2017-08-11 17:01:58 · 295 阅读 · 0 评论 -
luoguP2831 愤怒的小鸟
题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔。 简单来说,这款游戏是在一个平面上进行的。 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y=ax^2+bxy=ax 2+bx的曲线,其中a,b是Kiana指定的参数,且必须满足a<0。当小鸟落回地面(即x轴)时,它就会瞬间消失。在游戏的某个关卡里,平面的第一象限中有n只绿色的小原创 2017-08-11 21:32:00 · 369 阅读 · 0 评论 -
序列上的一些文章
主要谈两个 LCS 见dp->最长公共子序列 http://blog.csdn.net/wu_tongtong/article/details/76998351LIS 主要介绍nlogn算法 g[1]=num[1]; //长度为1的最小 //f[1]=1; 写完会发现f可有可无 int t=1; //当前最长上升子序列的长度 for (i=2;i<=n原创 2017-08-12 16:27:45 · 217 阅读 · 0 评论 -
樱花庄的宠物女孩AtCoder Grand Contest 015E - Mr.Aoki Incubator
【问题背景】 神田空大养了一群猫,因此被驱逐出了普通宿舍,搬进了樱花庄…… 【问题描述】 神田空大养了 n 只猫,这 n 只猫开始时站在一条数轴上,第 i 只猫的位置是 xi,保证 xi 互不相同。 从0 时刻开始,所有猫同时向右走,第 i 只猫的速度为 vi,且自始至终保 持这个速度。很明显,猫之间很可能会发生追及相遇。这里假设一只猫追上了另 一只猫,即某一时刻两只猫在同一个位置,这原创 2017-08-21 20:51:19 · 680 阅读 · 0 评论 -
生哥的hu测
今天的生哥hu测,都是思路题,代码不长,对于思维的提升很有帮助 可惜没有全力去做。。。T1分析: 不用SG函数的一道博弈 觉得xz的想法非常的好 如果我们想要留下一个点的权值(假设为x) 当且仅当这个点只有一条连边,这是我们就可以把这条边练连的其他点干掉 游戏结束,如果我们不是在这种情况下进行了与x相连的边的删减 这就会导致这个点的主动权到了另一个人手里 因为两人的目的完全不同,所以原创 2017-08-25 18:48:42 · 345 阅读 · 0 评论 -
Tyvj1057
题目链接分析: 背包,写的时候记住不要手残这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N=100005;int f[32005];int w[N],v[N],tot=0;int fj[N][2];bool p[N];int n,m;int main()原创 2017-09-05 14:08:31 · 224 阅读 · 0 评论 -
Tyvj1075
题目链接分析: 这道题真的是十分刁钻 一眼博弈,然并卵实际上我们这道题是从结束状态向初始状态转移的 首先明确状态的设定 用f[i][j]表示当前剩下i枚硬币, 上一轮对方取走j枚,面对此局面的人所能达到的最大价值先考虑边界条件: f[0][k]=0(1<=k<=n) 意思是最后我面对无子可取的情况, 对方上一轮取走k枚硬币,此时我能达到的最大值当然是0啦目标: f[n][1] 因原创 2017-09-05 21:51:24 · 268 阅读 · 0 评论 -
Tyvj1073
题目链接分析: 我这个zz,老是不看题 总是因为做过一道题而跳过题目,所以忽视了很多条件这道题,一开始我认为是随意n个点 求任一符合要求的前序遍历想了好久都觉得很困难于是又读了一遍题目 发现题目规定二叉树的中序遍历是1,2,3,4,…,n如果标算太难请坚定信念 不如回头再看一眼题面 ——–Menci一道区间dp 已知中序遍历,那么一棵子树的所有节点一定在序列中的一个连续区间内原创 2017-09-05 19:29:53 · 209 阅读 · 0 评论 -
Tyvj1059
题目链接分析: 网上没有特别好的题解,所以还是要靠自己啊直接dp并不困难方程 i位置没有石头 f[i]=min{f[j]} i-t<=j<=i-s i位置有石头 f[i]=min{f[j]}+1 i-t<=j<=i-s然而,想要直接开下L的数组肯定是不现实的, 我们就要考虑优化了如果s==t,那我们只用简单的计算一下就好了要是s!=t,就需要一个巧妙的优化了如果有一大段没有石头,那么我们原创 2017-09-06 14:57:18 · 214 阅读 · 0 评论 -
Tyvj3980(dp+priority_queue)
题目链接分析: 首先明确数据范围: N<=10^5,A[i]<=10^9这个题想的时间不短 显然留下的奶牛越多越好,那这就变成了一个剔除问题 对于每个i,如果选ta,那么之前k个中一定有一个不能选 我们可以枚举这个j(不能选的一个) f[i]=max{f[j-1],sum(j+1,i)} (j-i<=k) sum的计算可以通过前缀和求得 那么方程可化为: f[i]=max{f[j原创 2017-09-22 17:42:25 · 205 阅读 · 0 评论 -
Tyvj1209
题目链接分析: 刚刚学了数列,看到这道题就不那么难受了发现自己连拦截导弹都不能5min切掉了 看来原来学的忘得差不多了第一问就是最长不下上升序列 第二问是最长上升子序列tip注意n=1的情况这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;char s[1010];int g[30]原创 2017-09-13 16:48:47 · 193 阅读 · 0 评论 -
最长什么什么子序列进阶(xym的hu测)
分析: 第二问一眼dp 但是没有什么用,不会啊STO第一问nlogn 第二问 dp的思路,设g[i]为以i结尾,长度是f[i]的子序列的所有方案数 我们把f[j]=f[i]-1的所有j(j < i)从小到大依次选出来, 它们的a[j]是单调不升的,因为f值等于f[i]-1的编号从小到大, 如果存在k < j,a[k ]< a[j],那么f[j]=f[k]+1 j,k在这种情况下是不可原创 2017-08-22 19:54:32 · 307 阅读 · 0 评论 -
Tyvj1208(LIS数量)
题目链接分析: 之前在xym的hu测中做过这道题,但是代码是急急忙忙码的 理解不是很深刻,题解说的也不好 所以只能再来学习一遍第一问nlogn,不要写错了第二问 这次是最长上升子序列记g[i]为以i结尾,长度是f[i]的子序列的所有方案数对于每个f[i]=k来说 ta都可能是由f[j]=k-1(j < i)且a[j] < a[i]转移来的 这就是不同...原创 2017-09-22 20:18:12 · 282 阅读 · 0 评论 -
luoguP3402 最长公共子序列(LCS-->LIS)
题目背景DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列。题目描述经过长时间的摸索和练习,DJL终于学会了怎么求LCS。Johann感觉DJL孺子可教,就给他布置了一个课后作业:给定两个长度分别为n和m的序列,序列中的每个元素都是正整数。保证每个序列中的各个元素互不相同。求这两个序列的最长公共子序列的长度。DJL最讨厌重复劳动,所以不想做那些做过的题。于是他找你来帮他做作业。输入原创 2017-08-09 15:45:34 · 579 阅读 · 0 评论 -
cv2980(LCS)
题目链接分析: 求字符串的最长回文串就是将字符串取反然后求两个串的最长公共子序列 还记得这道题吗 然而cv上的这道题并没有说明元素互异 我们就不能保证转换出一个n级别的字符串 所以干脆朴素算法tip对称系数k是指最长对称子序列的长度,非最长对称子串的长度字符串的数组要开到1000自己在下面拍,没有任何错误 交上去真的就是一直WA 找不到任何错误 扔一个学姐的标程吧这里写代码片#原创 2017-09-23 08:29:00 · 171 阅读 · 0 评论 -
cv1380(树形dp)
题目链接分析: 填坑 f[i][1]表示选i f[i][0] 表示不选i 设y是i的儿子 很简单,选爸爸就不能选儿子 f[i][1]+=f[y][0] 不选爸爸,儿子的状态无所谓 f[i][0]+=max(f[y][0],f[y][1])tip递归求解,所以在进行dp的时候 当前状态的所有后继状态一定是计算好了的, 我们不用考虑孙子的状态,只看爸爸和儿子就好了这里写代码片#in原创 2017-09-23 10:47:40 · 221 阅读 · 0 评论 -
poj1155 TELE(树形dp)
DescriptionA TV-network plans to broadcast an important football match. Their network of transmitters and users can be represented as a tree. The root of the tree is a transmitter that emits the footba原创 2017-09-23 15:01:23 · 327 阅读 · 0 评论 -
cv1378 选课(树)
题目描述 Description 学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作原创 2017-08-11 07:13:33 · 319 阅读 · 0 评论 -
bzoj1030 [JSOI2007]文本生成器(AC+dp)
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版。该软件可以随机生成一些文章―――总是生成一篇长度固定且完全随机的文章—— 也就是说,生成的文章中每个字节都是完全随机的。如果一篇文章中至少包含使用者们了解的一个单词,那么我们说这篇文章是可读的(我们称文章a包含单词b,当且原创 2017-08-08 20:30:54 · 439 阅读 · 0 评论 -
hdu 2089 不要62(数位)
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2原创 2017-09-23 16:28:24 · 254 阅读 · 0 评论 -
hdu3652 B-number(数位dp)
Problem Description A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- string “13” and can be divided by 13. For example, 130 and 2613 are wqb-numbers,原创 2017-09-23 16:37:46 · 218 阅读 · 0 评论 -
浅谈用极大化思想解决最大子矩阵问题
【摘要】 本文针对一类近期经常出现的有关最大(或最优)子矩形及相关变形问*题,介绍了极大化思想在这类问题中的应用。分析了两个具有一定通用性的算法。并通过一些例题讲述了这些算法选择和使用时的一些技巧。*【关键字】 矩形,障碍点,极大子矩形【正文】一、 问题最大子矩形问题:在一个给定的矩形网格中有一些障碍点,要找出网格内部不包含任何障碍点,且边界与坐标轴平行的最大子矩形。这是近期经常出现的转载 2017-09-22 21:20:32 · 1045 阅读 · 0 评论 -
luoguP2701 [USACO5.3]巨大的牛棚Big Barn(极大子矩阵)
题目描述农夫约翰想要在他的正方形农场上建造一座正方形大牛棚。他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方。我们假定,他的农场划分成 N x N 的方格。输入数据中包括有树的方格的列表。你的任务是计算并输出,在他的农场中,不需要砍树却能够修建的最大正方形牛棚。牛棚的边必须和水平轴或者垂直轴平行。EXAMPLE考虑下面的方格,它表示农夫约翰的农场,‘.’表示没有树的方格,‘#’原创 2017-09-23 21:35:38 · 324 阅读 · 0 评论 -
cv1159 最大全0子矩阵(极大子矩阵)
题目描述 Description 在一个01方阵中找出其中最大的全0子矩阵,所谓最大是指0的个数最多。输入描述 Input Description 输入文件第一行为整数N,其中1<=N<=2000,为方阵的大小,紧接着N行每行均有N个0或1,相邻两数间严格用一个空格隔开。输出描述 Output Description 输出文件仅一行包含一个整数表示要求的最大的全零子矩阵中零的个数。样例输入 S原创 2017-09-23 19:03:02 · 2011 阅读 · 0 评论 -
Tyvj1078
题目链接分析: 这个题有点像矩阵取数 实际上每次取数的时候,取的区间的答案是不随时间的变化而变化的 也就是说,每一部分的答案都是固定的, 我们可以只看区间(i,j)内的最优答案 反映到实际方案上,我们只要调整一下取数的顺序 按照从两边到中间的区间顺序取数就可以满足题意了说到底,题目限制只能从两边取的限制是迷惑选手的那么状态就很简单了 设状态: f[i][j]表示删掉i到j的所有数能到原创 2017-09-07 19:03:52 · 238 阅读 · 0 评论