[DP题]登山】的更多相关文章

描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号.同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了.队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么? 输入Line 1: N (2 <= N <= 1000) 景点数Line 2: N个整数,每个景点的海拔输出最多能浏览的景点数样例输入 8 1…
题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the park where n trees grow. They decided to be naughty and color the trees in the park. The trees are numbered wit…
4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 已知1-N的排列P的LIS(最长上升子序列)不超过2,求可能的P的个数.答案取模10^9+7. 输入描述 Input Description 一行一个整数N. 输出描述 Output Description 输出一行一个整数,描述可能的排列P的个数mod1000000007的结果. 样例输入 Sample Input 1 样例输出 …
4809 江哥的dp题c  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 有两个数x,y,一开始x=1,y=1.现给定一个参数N和一个数组p(p1,p2,p3,……,pN),你需要按以下规则操作: 若x≤N,则你需要选择一个正整数k,然后将x变为kx,将y变成y*px. 当x>N时,结束操作,你的得分即为y的值,求最大得分. 输入描述 Input Description 第一行一个正整数N. 接下来一行N…
4816 江哥的dp题b  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给出两个1-N的随机排列A,B.若Ai=Bj,则你可以在Ai,Bj之间连一条线.要求每条线至多与一条线相交.下图分别说明了一种合法和不合法的方案. 输入描述 Input Description 第一行一个正整数N. 接下来一行N个正整数,描述A. 接下来一行N个正整数,描述B. 输出描述 Output Description 输出一…
4815 江哥的dp题a  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给出一个长度为N的序列A(A1,A2,A3,...,AN).现选择K个互不相同的元素,要求: 1.两两元素互不相邻 2.元素值之和最大 输入描述 Input Description 第一行两个正整数N,K. 接下来一行N个整数,描述A. 输出描述 Output Description 输出一行一个整数,描述答案(最大和). 样例输入…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577 解题报告:有一个长度在100以内的字符串,并且这个字符串只有大写和小写字母组成,现在要把这些字符串用键盘输入到电脑中,一开始的时候大写锁定是关闭的,并且要求结束的时候也是关闭的,然后让你求输入这些字符串最少需要按多少次键盘(包括Cap Lock键和Shift键) 一个典型的dp题,定义一个一维数组就够了,然后dp[i]的含义的输入到第i个字符时需要按键的最少次数.然后递推公式如下: dp[i]…
4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold [题目描述] Description 已知1-N的排列P的LIS(最长上升子序列)不超过2,求可能的P的个数.答案取模10^9+7. [输入描述] Input Description 一行一个整数N [输出描述] Output Description 输出一行一个整数,描述可能的排列P的个数mod1000000007的结果. [样例输入] Sample Input 1 [样例输出] …
[noip模拟赛1]古韵之乞巧   描述 闺女求天女,更阑意未阑. 玉庭开粉席,罗袖捧金盘. 向月穿针易,临风整线难. 不知谁得巧,明旦试相看. ——祖咏<七夕> 女子乞巧,是七夕的重头戏.古时,女子擅长女红被视为一种重要的德行.所以女孩子们纷纷在七夕这天祈求上天,是自己变得更加灵巧.仰头凝视,以虔诚的心去膜拜桂魄:双手合十,用坚定信念去盼望未来,祈求能有更出众的才能.一根针.一丝线.一轮月.一束影,组成了一个简单的乞巧仪式. “年年岁岁花相似,岁岁年年人不同.”千百年后的今天,女孩子们更加看…
题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约数,dp[i-1][j]用来表示前i-1个数组成的子串长度是j的解个数,dp[i][j]即时前i个数组成的子串长度是j的解的个数,那么dp[i][j]是dp[i-1][j]+dp[i-1][j-1],即前i个数组成的长度为j的子串个数=前i-1个数组成的长度为j的子串个数+前i-1个数组成的长度为j…
解题报告:题目大意,给你n个球,要将这n个球从下到上按层次排列,要求同一个层次的的每一个分支的数量都必须相等,问有多少种排列的方法. 此题的一个DP题,假设现在有n个球,要将这n个球排列好,我们就必须将n个球的问题转化成小于n个球的子问题 ,我们可以很明显地观察到,对于每一种排列 的方法,它的最上面的那一层总是只有一个球,所以我们就可以这样出发,将这n个球先减掉一个球,还剩下n-1个球,然后就是下一层怎么排列 的问题了.由于现在还剩下n-1个球,那么我们现在要想的就是把这n-1个球应该怎么排列,…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1422 解题报告:DP题,要使旅行的城市最多,关键是要选出一个城市作为开始,以这个城市作为开始的城市时,能使拥有的钱能旅行的城市最多,我的做法是把前n-1个城市添加到n个城市的数组后面,这样就不用考虑环的问题了, #include<cstdio> #include<cstring> #include<iostream> using namespace std; ],l[];…
1944:吃糖果 总时间限制:1000ms内存限制:65536kB 描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0).妈妈告诉名名每天可以吃一块或者两块巧克力.假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案.例如:如果N=1,则名名第1天就吃掉它,共有1种方案:如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1天吃2块,共有2种方案:如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天吃2块剩1块,所以…
1775:采药 总时间限制:1000ms内存限制:65536kB 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务吗? 输入…
最长上升子序列 总时间限制:2000ms 内存限制:65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N.比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8…
没有原题传送门.. 手打原题QAQ [问题描述]     一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是0005,只是5. [输入]        一个正整数N(N≤109),表示总的页码. [输出]        共十行:第k行为数字k-1的个数. 这道题是一道很有意思的DP题. 我们先来看一看这道题目 就是求1~n这么多个数中有多少个X数字. 然后我们来看一看一个例子: 在1~10这10个数中,每个数…
HDU1398 题意:把一个整数分拆成1.4.9.16.…….256.289(注意:只到289)这17个完全平方数的和,有几种方法. 解法不用说自然是DP,因为搜索显然超时. (这样的题我一般不敢开int,怕爆……) #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <functional> using namespace…
很久没写题解了,去ec之前来填一填坑,希望能攒攒人品... 首先是去年上海F题..uvalive7143 题意: 给n个人分 m间房子,每个房间的容量是已知的,其中有k对双胞胎,双胞胎可以看作相同的人,问总的方案数 其中n<=10W m=10 2k<=n 思路: dp状态为, 前i个房子分完还剩多少对双胞胎(被拆散的不算)的方案数,转移结合组合数 代码: #include <bits/stdc++.h> using namespace std; ][]; ]; ]; ]; ]; ;…
听了ZWK大大的思路,就立马1A了 思路是这样的: 算最小GPA的时候,首先每个科目分配到69分(不足的话直接输出GPA 2),然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到100即可 算最大GPA的时候,首先每个科目分配到60分,然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到85即可,如果还有REMAIN POINT,就FOR循环下来加到100上限即可 不会DP 阿 QAQ 过段时间得好好看DP了  =  = 于是默默的把这题标记为<水题集> //…
Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);  正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i].v)  当中,f[j]表示抢j块大洋的最大的逃脱概率,条件是f[j-q[i].money]可达,也就…
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in t…
1.luogu 1484种树 50分思路:dp,但是数据规模过大没法dp选择奇怪贪心 dp方程 到i坑种j树 dp[i][j]=max(dp[i-1][j],dp[i-2][j-1]) 100分思路:奇怪贪心,全部树坑中最大的i ,每次选择实际上需要选的是max(a[i],a[l]+a[r]); 但是如此转移十分困难,可以进行如下操作: 1.ans+=a[i] 2.设立新节点,利用链表存储各节点间位置关系,新节点的值为a[l]+a[r]-a[i],若日后选入新节点,意味着实际上选择了i两侧的点,…
https://www.luogu.org/problemnew/show/P3147 此题与上一题完全一样,唯一不一样的就是数据范围; 上一题是248,而这一题是262144; 普通的区间dp表示状态表示法根本存不下, 这时我们就要想另外的状态表示法; #include <bits/stdc++.h> #define read read() #define up(i,l,r) for(int i = (l);i <=(r); i++) using namespace std; int…
1.导弹拦截  (+贪心) 两问:一个导弹拦截系统最多能拦多少导弹 要拦截所有导弹至少需要多少拦截系统 第一问感觉是一个比较巧妙的方法: 维护一个单调递减的序列 length[] 记录的是拦截导弹的高度 当下一个导弹小于 length[] 最后一个数(最小的数)则直接把它加在序列后即可 若大于 则找到序列中比它大的最小的数(二分)然后替换 可以保证最优 第二问 就是贪心啊 当现有的导弹系统的拦截高度都小于当前导弹的高度 则开一个新的系统 否则找到拦截高度比导弹高度高的最小的系统来拦截 这里记录系…
今天想学点动态规划的知识,于是就看了杭电的课件,数塔问题啊,LCS啊都是比较经典的动规了,然后随便看了看就开始做课后练习题... HDOJ 1421 搬寝室 http://acm.hdu.edu.cn/showproblem.php?pid=1421 题目大意:从n(n <= 2000)个数中选出k对数(即2*k个),使它们的差的平方和最小. 例如:从8,1,10,9,9中选出2对数,要使差的平方和最小,则应该选8和9.9和10,这样最小,结果为2 因为知道是dp的题,先建个dp[][]数组,然…
关于 DP 的一些题目 String painter 先区间 DP,\(dp[l][r]\) 表示把一个空串涂成 \(t[l,r]\) 这个子串的最小花费.再考虑 \(s\) 字符串,\(f[i]\) 表示前 \(i\) 个字符相同时的最小花费. Parade 单调队列优化 DP. Free Goodies 对于第一个人,她选择的顺序是固定的.第二个人想要选到全局最优,那么有 \(dp[i][j]\) 表示到第 \(i\) 个数时,选了 \(j\) 个数时的最大值,顺便再记录下第一个人选的最大值…
原题传送门 刚开始我还以为这道题目非常的简单.. 然后随便打了一个DP,直接WA,被zxyer狠狠地D了一顿. 然后发现有好多细节.. 首先假如某横坐标没有管子,那么l[x]=0;h[x]=m+1; 然后DP的时候往上是完全背包,往下是01背包. 由于不能接触到管子,所以0~l[x]和h[x]~m要设值inf方便下面判断. m-max(q)*x[i]~m也要特判,因为有限高.. 最后统计答案也是很醉... 下面贴代码.. #include<iostream> #include<cstdi…
题集见大佬博客 不要62 入门题,检验刚才自己有没有看懂 注意一些细节. 的确挺套路的 #include<bits/stdc++.h> #define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b) for(register int i = (a); i <= (b); i++) using namespace std; ; int a[MAXN], dp[MAXN][MAXN][…
建设中 ... 预防针 : 本蒟蒻代码风格清奇(⊙﹏⊙)b 一.选学霸 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一部分没有,同学们就会抗议.所以老师想请你帮他求出他该选多少学霸,才能既不让同学们抗议,又与原来的M尽可能接近 输入输出格式 输入格式: 第一行,三个正整数N,M,K. 第2...K行,每行2个数,表示一对实力相当的人的编号(编号为1…N) 输出格式: 一行,表示既不让同学们抗议,又与原来的M尽可能接近的选出学霸的数目.(如果有…
POJ 2778 DNA Sequence (1)题意 : 给出m个病毒串,问你由ATGC构成的长度为 n 且不包含这些病毒串的个数有多少个 关键字眼:不包含,个数,长度 DP[i][j] : 表示长度为i,在trie图中j节点,不包含病毒串的个数 状态转移: DP[i+1][k]+=DP[i][j]*G[j][k]  (G[j][k] 表示 在trie图的安全图中j 到 k是否有边) 但是!这题给出n长度特别大,故无法进行正常的DP;   我们在转换下思路 这题无非就是在全图中的0节点到其他节…