动态规划
动态规划
米兰的小耳朵
Don't settle. Keep moving.
展开
-
数字矩阵 动态规划
数字矩阵 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description bLue 站在了一个 n*m 的填有数字的矩阵中,他可以选择从矩阵的四个顶点之一出发,到达斜对面的顶点。每一步必须向靠近目的地的方向移动,且每次移动都可以累加所在位置上的数字。 例如,bLue 选择从左上角出发,那原创 2017-02-18 16:34:28 · 727 阅读 · 0 评论 -
hdu 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】(转)
HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=m...转载 2018-05-23 20:29:36 · 2157 阅读 · 0 评论 -
Mnemonics and Palindromes URAL - 1635 区间DP
题意: 在串中划分出最少个数的回文串。输出最少回文串的个数,并将回文串输出。think: 首先肯定是区间问题。 还是没自己解决这个问题看了题解。 dp[i]表示以i结束最少的回文串的个数。 枚举区间预处理出该区间是否为字符串, 然后如果区间j~i是回文串的话, 那么转移方程则为 dp[i...原创 2018-06-04 17:24:47 · 157 阅读 · 0 评论 -
Gym 101669A Concerts DP
题意: 给定n, k。26个数。给出两个串。第一个sk串为要得到的串,第二个串为母串。求在母串中可以匹配出多少种sk串。【要求:有些特定字母在选定之后要间隔几个才能选中下一个】。答案%1e9+7;很明显是DP, 比赛时我没有做出来。其实这道题的模型也很显然是那种相邻两位关系的DP。。不过加入了要间隔的问题我就不会了。。。做题还是要先简化模型, 先往自己学过的模型上靠。dp[i][j] i表示母串中...原创 2018-05-24 08:12:20 · 456 阅读 · 0 评论 -
Gym 101201H DP+二分
给定总长度n, 给出k条线段。线段的选取不可重叠甚至相交。问如何选取才能让剩下的空隙最小。显然是个DP, 显然是按规定求出最长可选取的线段。敲的太丑了,二分还写炸了,当时就没过。不过这次还学习了重写lower_bound的比较。【与排序无异】#include <bits/stdc++.h>#define ms(x) memset(x,0,sizeof(x))#define ll l...原创 2018-05-29 14:30:50 · 230 阅读 · 0 评论 -
Hie with the Pie POJ - 3311 状态压缩
感觉自己学状压DP先做这题比较正确。。。模型比较简单。因为是可以多次经过同一个地方,所以先用floyd松弛出任意两点间最短距离。然后枚举状态跑答案。因为还要回到起点, 所以答案要加上mp[i][0]#include <cstdio>#include <iostream>#include <cstring>#define inf 0x3f3f3f3f#de...原创 2018-05-24 20:50:13 · 210 阅读 · 0 评论 -
ZOJ 4019 Schrödinger's Knapsack
题意: 有两大类物品, 第一类物品的价值均为K1, 第二类物品的价值均为K2。 背包容量为c。 每组数据的第三行代表第一类物品的体积,第四行代表第二类物品体积。 对于背包的贡献计算方式为 ( 当前容量 - 选取物品的体积) * 物品种类的价值。 由于容量C太大,所以肯定是不能背包来做。 ...原创 2018-05-30 20:29:41 · 294 阅读 · 0 评论 -
URAL - 1152 状压DFS(本质上还是DP)
题意: 给定N个点(环状),每次可以销毁连续的三个点, 每个点有一个权值。 问达到全部销毁的状态权值和最小为多少。(每一个状态下,存活的点的权值都要加) 3 ≤ N ≤ 20think: 显然可以状压。但是貌似也有大佬直接搜出来的。。。人与人之间的差距呀~这个我觉得可能不太好想。。。首先我们要搜出来的答案是 dp[(1<<(n) - 1] ...原创 2018-05-31 17:20:55 · 247 阅读 · 0 评论 -
[树的状态的DP] URAL - 1117
给定一颗满二叉树,任意两点间的花费为两点间节点的个数。从1走到n[顺序走, 1 - 2 - 3 - 。。。 - n],问花费。第一步当然是先画出满二叉树的图。多枚举一些情况可以得出一些规律,尤其关于2的次幂的标号。4 = 2^2;8 = 2^3;16 = 2^4; 3->4 step+=1; 4 = 2^2; 1 = 2-1; 7->8 step+=2; ...原创 2018-06-28 16:59:09 · 206 阅读 · 0 评论 -
A Question of Ingestion Gym - 101673G
破题折磨我一下午题意: 起始饭量 = m, 你可以吃n次饭, 当你连续吃时,饭量是上次的2/3; 当你休息一次时, 饭量和上次相同; 当你连续休息两次时,饭量恢复到起始值m.开始队友就把题意带跑偏了。读对之后DFS, (显然)T了 #include <bits/stdc++.h>#define ms(x) memset(x,0,sizeof(x))typ...原创 2018-08-16 16:13:38 · 283 阅读 · 1 评论 -
URAL - 1081 Binary Lexicographic Sequence DP
题意: 给个你一个n,为你要构造的字符串长度, 字符串相邻的两位不能同时为1。求出n位的按字典序排列第k个字符串。think: 首先写个dp理所应当, 有的大佬构造的是一维的(其实就是fib数列), 我第一反应就是以0结尾和以1结尾的dp...然后那么问题就来了,在构造字符串的时候我是怎么也想不通的。。。这两天就一直在想,今天起床思路一闪, 这个dp代表的完全可以是以1开头或以0开头的方案书【从...原创 2018-06-04 11:07:22 · 154 阅读 · 0 评论 -
Por Costel and Azerah Gym - 100923A
题意:给定一个序列,求子序列的和为偶数的个数。ExampleInput 233 10 124 2Output 33状态转移方程:dp[i][0] 到第i位 偶数的情况数dp[i][1] 到第i位 奇数的情况数可以手推。Ⅰ当前数为奇数时, 截止到这一位,偶数情况dp[i][0] = (dp[原创 2018-01-28 11:50:01 · 262 阅读 · 0 评论 -
FatMouse's Speed Hdu1160 动态规划 EOF(Ubuntu 下codeblocks 按 Ctrl+D)
FatMouse's SpeedTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16982 Accepted Submission(s): 7511Special JudgeProblem Description原创 2017-08-10 10:14:42 · 483 阅读 · 0 评论 -
免费馅饼 HDU - 1176 数塔+滚动数组
免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 51513 Accepted Submission(s): 17989Problem Description都说天上不会掉馅饼,但有一天gameboy正走原创 2017-08-09 15:41:48 · 242 阅读 · 0 评论 -
滑雪 POJ - 1088 记忆化搜索=搜索的形式+动态规划的思想
B - 滑雪 POJ - 1088Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615原创 2017-07-31 10:20:28 · 228 阅读 · 0 评论 -
Bone Collector 01背包模板
Bone Collector Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like原创 2017-02-18 20:10:32 · 299 阅读 · 0 评论 -
最长上升子序列 动态规划 dp
最长上升子序列Time Limit: 3000MS Memory Limit: 65536KB Submit Statistic Problem Description 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1<= i1原创 2017-02-14 15:16:18 · 325 阅读 · 0 评论 -
上升子序列 动态规划 Dp
Statistic Problem Description 一个只包含非负整数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列{a1, a2, …,aN},我们可以得到一些上升的子序列{ai1, ai2, …, aiK},这里1 ≤ i1 < i2 <…< iK ≤ N。例如:对于序列{1, 7, 3, 5, 9, 4, 8},有它的原创 2017-02-14 15:14:20 · 219 阅读 · 0 评论 -
数字三角形问题 动态规划问题 状态转移方程
数字三角形问题 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最原创 2017-02-08 09:30:38 · 587 阅读 · 0 评论 -
Longest Increasing Subsequence[LIS 最长上升子序列问题] (Longest Ordered Subsequence) POJ - 2533 队列优化
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 54481 Accepted: 24395DescriptionA numeric sequence of ai is ordered ifa1 a2 a原创 2017-08-14 20:19:04 · 188 阅读 · 0 评论 -
The Heaviest Non-decreasing Subsequence Problem LIS 思维题
又是一场思路僵化带来的GG给出一个宽度的定义, 小于0的数宽度为0,大于10000的数宽度为5,否则宽度为1;给定一个序列, 大于10000的数在减去10000之后再在序列中比较, 找出宽度之和最大的非递减子序列。开始很懵,由于数据范围是200000,就想跑个nlogn的LIS。 但是又需要比较出往这个子序列中添加的数要满足宽度之和最大的大条件。所以还是写了个n方的。但是莫原创 2017-09-24 22:08:02 · 203 阅读 · 0 评论 -
Jumping Haybales Gym - 101617D
题意: 从左上角走到右下角,每一步走的距离是往右走1~k步或者往下走1~k步。问最少走多少步到达右下角,不可达输出-1. 做法: 优化下dp。1.线段树优化(卡过)。2.记录各行各列当前最小合适的位置。3.单调队列优化。1.#include <cstdio>#include <algorithm>#include <cstring>...原创 2018-09-29 17:23:52 · 218 阅读 · 0 评论