动态规划
我的程序跑快快
这个作者很懒,什么都没留下…
展开
-
蓝桥杯 算法提高 ADV-277 The Islands(记录转移的简单动态规划)
题目大意:二维平面上有n个点,每个点的坐标是整数,其中有两个特殊点A和B,现在把所有的点按照x坐标从小到大排序,要求一条从起点S到终点T再回到S的最短路径,要求每个点都要经过一次,并且在从S到T的过程中x坐标只能单增,从T回到S过程中x坐标只能单减。A点和B点要分别在去和回来的路上。要计算出最短路径长度,并输出路径。思路:假设节点从 111 号点到 nnn 号点 xxx 坐标依次增加。问题就...原创 2019-12-26 18:54:30 · 841 阅读 · 0 评论 -
CodeForces - 686D Kay and Snowflake(求一棵树的每颗子树的重心)
分析:#include <iostream>#include <vector>#include <algorithm>using namespace std;const int maxn = 1000052;vector <int> u[maxn];int n, m, ans[maxn], s[maxn], fa[maxn];void...原创 2019-11-06 21:35:50 · 349 阅读 · 0 评论 -
HihoCoder - 1362 修补木桶(二分+动态规划+思维技巧)
题目大意:有n个木桶片环形排列高矮不一,有m次机会,每次选择一个长度为L的连续区间将高度变成无限长。数据范围限制:n<1000n<1000n<1000L<20L<20L<20m∗L<nm*L<nm∗L<n求计算操作之后如果希望最短的木板尽量高,能有多高?做法分析:考虑二分答案,对于一个确定的答案x,我们将木板中长度大于等于x的标...原创 2019-11-06 11:52:40 · 333 阅读 · 0 评论 -
CodeForces - 833B The Bakery(dp+线段树的巧妙运用)
给你一串数(n<35000),让你把他们分成 k(k<50)段,每一段的值定义为这一段里不同数字的个数。现在让你求出一种划分方式,使得这 k 个区间段的值的和最大。原创 2017-08-07 15:24:16 · 524 阅读 · 0 评论 -
CodeForces - 835C Star sky(dp)
题目大意:给你一个 100*100 的地图,然后告诉你这个图中有若干个点有星星,每个星星有一个初始亮度 s ,每个星星的亮度随着时间的变化而周期性变化。现在要进行 1e5 次查询,每次查询给你一个矩阵,和一个时间 t ,让你求 t 时刻该矩阵内每个星星乘他们的亮度的和。原创 2017-08-14 13:38:31 · 355 阅读 · 0 评论 -
2017百度之星 资格赛 1003 度度熊与邪恶大魔王(dp)
度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来·····原创 2017-08-05 14:26:17 · 2245 阅读 · 6 评论 -
HDU - 6146 Pokémon GO(表格dp)
题目大意:给你一个2*n的方格,从任意一个格可以到达它周围的任意一个格子(至少有一个角相连接),现在让你从任意一个点开始,不重复地遍历所有格子。问你一共有多少种遍历方法。原创 2017-08-19 20:11:00 · 515 阅读 · 0 评论 -
HDU - 6078 Wavel Sequence(动态规划+时间优化)
多校赛一道题,动态规划,通过sum数组把复杂度从n^4变成n^2。原创 2017-08-08 19:20:38 · 356 阅读 · 0 评论 -
POJ - 2342 Anniversary party解题报告(树形dp)
题目大意:有n个人,每个人有一个欢乐值,并且这些人有上下属关系,一个人可以是多个人的上属,但一个人只能是另外一个人的下属,这样就形成了一颗树形结构,总老板为根。现在让你在这棵树里选取若干个点,使得这些点的欢乐值最大,并且要求这些点不能有直接的上下属关系。注意欢乐值有可能是负的。原创 2017-05-31 11:11:29 · 432 阅读 · 0 评论 -
HDU - 6170 Two strings(动态规划)
题目大意:有两个字符串 a、b,a字符串由大写字母和小写字母组成,b字符串除了大写字母和小写字母还有‘ * ’和‘.’。‘.’表示该字符可以变成任意字符,‘ * ’表示该字符的前一个字符可以变成任意多个,包括0个。现在问你,对于给定的两个字符串,是否可以通过对b字符串特殊字符的变换使得a字符串和b字符串完全相同。原创 2017-08-23 08:18:11 · 331 阅读 · 0 评论 -
HDU - 6161 Big binary tree(树上dp+hash优化空间)
题目大意:给你一颗n个节点的完全二叉树,从根节点标号为1。标号为x的节点的左、右儿子标号分别为:2x、2x+1。这棵树的每个节点的权值为它本身的标号。现在告诉你有m次操作,每次操作要么就是把一个点变成给定值,要么就是让你输出经过给定某点的一条最长路径的长度。(一条路径的长度就是它经过的每个点的权值和,包括端点)数据范围:$n<1e8,m<1e5$原创 2017-08-23 19:21:26 · 396 阅读 · 0 评论 -
CodeForces - 819B Mister B and PR Shifts(线性dp+思维)
题目大意:现在有一个1~n的全排列,然后定义对于每个数aia_i,disi=|ai−i| dis_i = \vert a_i-i \vert ;然后这一串数可以整体向后平移,最后一个跳转到第一个,现在问你如何平移才能使得,∑ni=1disi\sum_{i=1}^{n}dis_i取得最小值。原创 2017-09-08 11:47:04 · 496 阅读 · 0 评论 -
HDU - 6169 Senior PanⅡ(dp+数论)
题目大意:多组测试数据,每组给你三个数:l,r,k;让你输出区间 [ l , r ] 内所有最小不为 1 的因数是 k 的数的和。(l,r,k≤1011)(l,r,k \le 10^{11})原创 2017-09-17 11:48:39 · 484 阅读 · 0 评论 -
ZOJ - 3469 Food Delivery(区间dp)
题目大意:现在一条直线上有n个人,告诉你每个人的位置,现在让你从给定位置出发,经过这n个位置,每个位置有一个对应的不悦值,一开始都为0,第i个位置每过一分钟增加vi的不悦值,现在让你求出经过所有点能得到的最小不悦值为多少。原创 2017-09-19 12:40:06 · 390 阅读 · 0 评论 -
多边形游戏(区间动态规划)
简述:就是一个区间动态规划,为了处理环状结构,一个好的想法是把整个顶点和边的序列在后面再复制一遍。可以比较简化代码实现的复杂度。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 105 ;struct CalSeq{ //存储一个计算序列的信息 string str; long l...原创 2019-06-01 21:42:36 · 924 阅读 · 0 评论 -
算法设计与分析:多边形游戏(动态规划)实验报告
实验内容:算法讲解:1.算法模型引入(区间动态规划)首先,这个问题是一个很经典的区间动态规划问题,我们先看一下什么是区间动态规划:顾名思义,就是动态规划过程中求一个区间的最优解。通过将一个大的区间分为很多个小的区间,求其小区间的解,然后一个一个的组合成一个大的区间而得出最终解,有没有发现,这完全就是分治的思想。不过这样讲解还是很抽象,那么我们举一个很简单的具体的例子吧:有2.具体问...原创 2019-06-21 15:45:09 · 2706 阅读 · 0 评论 -
算法设计与分析:最短路径问题(哈密顿回路+最短路)小学期实践
最短路径问题一、题目要求:二、子问题(1)哈密顿回路1.问题建模描述给定一个n个结点,m条有向边(边权为正)的图,求出一条路径满足如下条件:条件一:该路径可以从任意节点开始,不过起点和终点必须相同。条件二:该路径除了起点和终点,其他结点都必须经过,且只能经过一次。条件三:在满足上述两条件的前提下,要求路径尽可能短。2.DFS搜索算法分析:有两种搜索的思路,第一种就是在不考虑图...原创 2019-07-09 21:48:23 · 10837 阅读 · 0 评论 -
多校训练赛 Furude_Rika and wall 解题报告(dp)
题目大意:题目描述:Furude_Rika decided to paint a wall.The wall consists of n*m tiles,that are arranged in an n*m table, and each tile is a 1*1 square.At the beginning all the tiles are not painted. Furude_Ri原创 2017-05-08 16:55:00 · 478 阅读 · 0 评论 -
HDU - 1028 Ignatius and the Princess III解题报告(线性dp)
题目大意:给你一个数n,定义:把n表示成若干个数的和的形式焦作n的一种划分。问你这个n一共有多少种划分方法。(1<=n<=120)分析:dp建立:状态:dp [ i ] [ j ] 表示对 i 的划分方式中最小的数是 j 的划分方式数。转移方程:dp[i][j]=dp[i−j][j]+dp[i−j][j+1]+....+dp[i−j][i−j]dp[i][j]=dp[i-j][j]+dp[i-j][原创 2017-05-26 16:11:26 · 310 阅读 · 0 评论 -
POJ - 2479 Maximum sum解题报告
题目大意:给你你一串数(50,000)个,让你从这一大串数中找出连续的两串数,使得其和最大。原创 2017-02-08 22:47:12 · 766 阅读 · 0 评论 -
POJ 1159 Palindrome解题报告
题目大意:给你一个字符串,问你最少加上几个字符可以得到一个回文串。原创 2017-02-08 19:56:13 · 356 阅读 · 0 评论 -
POJ - 2385 Apple Catching解题报告
题目大意:有个牛,好多题了,都是牛。然后她想吃苹果。有两个树,单位时间,在一棵树上会掉下来一个苹果。她必须在这个时间正好站到了这棵树下,才能吃到这个苹果。现在给你一共有T(1000)个单位时间,以及每个单位时间是哪一颗树上要掉苹果,这个牛可以瞬间从一棵树到达另一棵树下面,但是这种瞬移技能只能释放最多w(30)次 。问你这个牛最多可以吃到多少苹果。原创 2017-02-09 01:29:03 · 324 阅读 · 0 评论 -
HDU - 1421 搬寝室 解题报告
题目大意:小明搬家,有n(2000)个东西,小明选择2*k个东西搬过去,然后他 还特别懒。然后他根据多年的经验发现,搬东西获得的疲劳度为左手和右手所搬东西的重量差的平方。(这小明可真是个人才~)现在, 给你这n个东西的重量,以及要选的东西个数k,问你最少的疲劳度为多少。原创 2017-02-09 17:52:14 · 643 阅读 · 0 评论 -
HDU - 1087 Super Jumping! Jumping! Jumping! 解题报告
题目大意:给你一串数(1000个),问你他的各个上升子序列(可以不连续)的所有元素和中最大的是多少原创 2017-02-10 10:57:34 · 391 阅读 · 0 评论 -
POJ - 3267 The Cow Lexicon解题报告
题目大意:给你w个标准字符串(2-600) 以及长度为l(2-300)的一个目标字符串,问你至少要给该目标字符串删除多少个字符,才能分割成这些标准字符串。原创 2017-02-12 14:38:12 · 294 阅读 · 0 评论 -
HDU - 2602 Bone Collector解题报告
背包问题第一道原创 2017-01-31 23:40:57 · 1038 阅读 · 0 评论 -
HDU - 2604 Queuing解题报告
寒假训练赛第五题原创 2017-02-01 14:43:49 · 516 阅读 · 0 评论 -
POJ - 1837 Balance解题报告
题目大意:给你一个天平m(20)个挂钩,挂钩到中心的举例为[1,15],和n个重物(20)重量范围[1-25],要求所有重物都要挂在挂钩上,问你有多少种挂法可以让天平平衡。原创 2017-03-03 15:13:36 · 176 阅读 · 0 评论 -
POJ - 1836 Alignment解题报告(dp求至少删除多少个数可以变成递增数列)
题目大意:给你一串数,然后问你至少删除多少数,才能让每个满足:至少有一边的所有数都比这个数小。这一串数最多有1000个。原创 2017-03-18 11:17:45 · 538 阅读 · 0 评论 -
POJ - 2533 Longest Ordered Subsequence解题报告(最长上升子序列)
题目大意:对于一串给定的数列,输出它的最长上升子序列的长度。原创 2017-03-22 09:18:01 · 342 阅读 · 0 评论 -
POJ - 3176 Cow Bowling解题报告(求三角形数最大路)
水~原创 2017-03-22 09:40:13 · 361 阅读 · 0 评论 -
POJ - 1080 Human Gene Functions解题报告(求最长相同子序列)
题目大意:太长的英语,我就直接读了测试样例和题目中一些可以看的。。。。好像是关于什么人类基因工程什么的, 腺嘌呤脱氧核糖核苷酸~ 每组测试实例给你两串由AGCT四个字母组成的字符串(每个字符串100字符)。 有一个得分表: 分析:说出来你们可能不相信,这个题我还没想很明白就应开始写了,然后居然写出来了。当时就是还没怎么仔细想好细节,就想,我要知道这个,就只要知道另外的几个其他的状态就好了,并原创 2017-03-22 15:54:35 · 532 阅读 · 0 评论 -
HDU - 3450 Counting Sequences解题报告(动态规划+离散化+树状数组+二分查找)
题目大意:给你一串数(50,000个),和一个最大差 d <= 10,000,000。现在问你这串数有多少个子序列(至少有两个元素)满足每两个相邻的元素之间的差不超过d。分析:假设这一串数为存在 a[] 数组里面。dp建立:设 dp [ i ] 表示这串数字以 a [ i ] 结尾的满足要求的子序列的个数。 则状态转移方程为:dp[i]=(b1∗dp[1]+b2∗dp[2]+...+bi−1∗dp原创 2017-04-29 12:15:38 · 449 阅读 · 0 评论 -
POJ - 1260 Pearls(二维dp)解题报告
题目大意:有多组测试实例,然后告诉你要买多少种珠宝,每种珠宝各需要多少钱,以及这种珠宝要买多少个。但是有个规矩,就是,这一种珠宝不管你买多少个,只要你买了,你就得多交钱,比如你要买n个这种珠宝你就得交买n+10个这种珠宝需要的价格。然后有一个省钱的办法,就是,你可以通过买比一种珠宝高级的另一种珠宝来代替这种珠宝,这样,就可以少花10个这种珠宝的冤枉钱。问你,最省钱的办法要花多少钱。注:这里输入的每个原创 2017-04-14 17:37:15 · 390 阅读 · 0 评论 -
POJ - 1157 LITTLE SHOP OF FLOWERS解题报告
题目大意:给你f(1-100)个花和v(1-100)个花瓶,然后给你一个表,给出了每朵花放到每个花瓶中的可以获得的好感度(可能是负的),问你怎么放可以获得最大的好感度。要求:编号小的花放的花瓶的编号一定要比编号大的花放进的花瓶的编号小。注意:花瓶好像是要比花多的(至少一样多)原创 2017-02-08 21:36:55 · 167 阅读 · 0 评论