【优美的暴力------dp】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
HDU1257--POJ2533--最长递增子序列(LIS)模板
动态规划写法---时间复杂度:O(n^2)不知道max_element函数的请点击这里表示以结尾的最长递增子序列的长度。#include <stdio.h> #include <algorithm> #include <string.h> using namespace std;int a[1005],dp[1005],n; ...原创 2018-06-11 11:08:58 · 760 阅读 · 5 评论 -
HDU2639 - Bone Collector II(01背包第k优解)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2639题意:01背包的第k个最大价值。注意,两种不同方法得到相同价值是算作同一个种。这意味着,可以得到的价值序列将是一个严格递减的序列,从第1个最大值,第2个最大值.....第k个最大值。如果不同值的总数小于K,就输出"0"(不带引号)。思路:求第K优解问题:首先看01背包求最优解的状态转移方...原创 2019-03-30 17:24:22 · 299 阅读 · 0 评论 -
HDU - 3466(01背包理解)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466题意:给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品价格P价值V还有一个很特别的属性Q,Q指你如过想买这件物品,你的手中至少有Q钱。虽然你只要花费钱P ,但你的手中至少有钱Q,如果不足Q ,不能买。问给你钱M ,列出N件物品,最多能获得多少价值的东西。思路:如果没...原创 2019-04-15 20:51:36 · 464 阅读 · 0 评论 -
“卓见杯”第五届CCPC中国大学生程序设计竞赛河南省赛 - A - 最大下降矩阵(最长递减子序列)
题目链接:http://acm.zzuli.edu.cn/problem.php?id=2518思路:把每一行看成一个元素,然后求最长递减子序列即可。#include<bits/stdc++.h>using namespace std;const int N = 305;int a[N][N], n, m;int dp[N]; int check(int j,in...原创 2019-04-16 18:02:58 · 330 阅读 · 0 评论 -
ZZULIOJ - 1551 - icebound的商店(完全背包求方案数)
题目链接:http://acm.zzuli.edu.cn/problem.php?id=1551思路:表示状态为时的方案数,那么,然后就类似完全背包。#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fconst int mod = 1e9+9;const int N = 1e5+7;in...原创 2019-04-16 18:32:22 · 355 阅读 · 0 评论 -
UVA - 624 - CD(01背包路径输出)
题目链接:https://cn.vjudge.net/problem/UVA-624#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#include<vector>using namesp...原创 2019-04-14 14:06:29 · 154 阅读 · 0 评论 -
HDU - 1024 - Max Sum Plus Plus(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024题意:让你找m个不相交子段,并求出这m个子段累加和的最大值。思路:定义表示前 个数字分成 段的最大值,那么对于第个数字有两种情况,要么第 个数字归为第段,要么第 个数字独立成一段(也就是成一段数字的第一个数),状态转移方程就是:,表示前个数字分成段的最大值。由于数据范围比较大,所以...原创 2019-05-05 20:54:56 · 166 阅读 · 0 评论 -
P5020 货币系统(背包思想)
题目链接:https://www.luogu.org/problemnew/show/P5020思路:将a数组从小到大排序,因为最小的数必须要选,然后利用完全背包的思想,从ai到最大值筛选一遍,将可以组成的打上标记,再判断后面的数字时,如果已经被标记过了,就不再选,没有被标记过就标记一下,再筛选一次数(即一次完全背包)。#include <bits/stdc++.h>us...原创 2019-05-13 21:35:44 · 210 阅读 · 0 评论 -
HDU - 2191(多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191#include<bits/stdc++.h>using namespace std;#define debug(x) cerr<<#x<<'='<<(x)<<endl;#define debugp(x) cerr<...原创 2019-05-09 18:19:04 · 128 阅读 · 0 评论 -
P1077 摆花(DP)
题目链接:https://www.luogu.org/problemnew/show/P1077思路:表示前种花摆放盆时的方案数,那么,状态是怎样转移的呢,对于这个状态,它可能是从这些状态转移过来,也就是对于第种花可能放0,1,2,3...盆,那么转态转移方程也就出来了:,表示放盆第种花,指的就是考虑了前种花摆放盆时的方案数,也是相当于为第种花腾出了的空间。(仔细...原创 2019-05-11 15:08:05 · 237 阅读 · 0 评论 -
BZOJ - 5488 - Teamwork(RMQ + dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=5488思路:可以直接也可以。思路:定义表示前个数分组的最优解,明显可以从转移到,其中区间最值用RMQ求出即可。#include <bits/stdc++.h>using namespace std;#define ll long longconst in...原创 2019-06-08 19:21:03 · 437 阅读 · 0 评论 -
第五届新疆省ACM-ICPC程序设计竞赛(重现赛)H - 虚无的后缀(DP or 贪心)
题目链接:https://ac.nowcoder.com/acm/contest/911/H思路:两个数乘积末尾0的个数只和两个书数中2和5因子的个数有关,统计每一个数中2和5的个数,我们用表示前个数字中选个数字,其中有个5因子时(表示总的因子),2因子的个数。方程就是:。由于数据范围,要用滚动数组优化:优化后就是:。#include <bits/stdc++.h>...原创 2019-06-04 16:58:51 · 430 阅读 · 0 评论 -
牛客假日团队赛2 - L - The Fewest Coins(完全背包+多重背包)
题目链接:https://ac.nowcoder.com/acm/contest/924/L题意:顾客来老板那买东西,价值M元,有N种钱,每种钱顾客有一定数量,而老板有无限数量。求最少用多少张钞票可以满足交易,比如样例,顾客出50+25元,老板找5元,即可满足,需要3张。思路:顾客用多重背包转移状态,老板用完全背包。这里的背包求得是最小价值,且要恰好装满。故初始化数组时应将初始化为,。背包...原创 2019-06-16 18:24:43 · 299 阅读 · 0 评论 -
POJ2184 - Cow Exhibition(01背包+负数处理 )
题目链接:http://poj.org/problem?id=2184题意:给你n头奶牛,每头奶牛都有一个智商和情商,在选出的x头奶牛智商和与情商和都大于等于0的情况下求智商总和与情商总和的最大值。思路:以智商或者情商为价值,另一个为重量,就是典型的01背包问题,首先重量为正数时就是正常的01背包,但重量为负数时由于下标不能为负,我们需要增加数组长度。也就是把坐标0向正方向移动:0。。。B...原创 2019-03-30 16:54:01 · 857 阅读 · 0 评论 -
牛客练习赛41-B-666RPG(计数dp)
题目链接:https://ac.nowcoder.com/acm/contest/373/B思路:我们可以用表示前 i 个数中当前数为 j 的方案数有多少。则可以得状态转移方程为,我们发现有负数我们可以加上一个base把区间转移一下,也就是把负数区间转化成[0, base],正数转化成[base, base+666*300],也就是在x轴上向右平移区间。但是太大了,我们发现每一个状态都...原创 2019-03-02 19:13:51 · 326 阅读 · 0 评论 -
牛客寒假算法基础集训营2-G- 处女座与复读机(最小编辑距离dp)
题目链接:https://ac.nowcoder.com/acm/contest/327/G#include<bits/stdc++.h>using namespace std;const int N = 1e3 + 5;int T, cas = 0;int n, m;int dp[N][N];char s[N], t[N];int main(){ whi...原创 2019-03-02 15:23:53 · 177 阅读 · 0 评论 -
HDU 1176 免费馅饼 (动态规划)
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝...原创 2018-06-11 11:19:36 · 428 阅读 · 0 评论 -
POJ1458---最长公共子序列(LCS + 滚动优化)模板
表示以和结尾的最长公共子序列的最大长度。#include<iostream>#include<cstring>#include<cmath>#include<cstdio>using namespace std;char s1[1000],s2[1000];int dp[1000][1000];int main(){...原创 2018-06-15 17:45:39 · 241 阅读 · 0 评论 -
最长回文子序列(LPS + 滚动优化)模板
问题描述回文序列(Palindromic sequence, Palindrome)是指正向遍历和反向遍历完全相同的序列,例如字符串“AAAAA”显然是一个回文序列,又如字符串“ABC@CBA”也是一个回文序列。现在,我们要在一个(字符)序列中找出最长回文子序列的长度。例如字符序列"BBABCBCAB",最长回文子序列是“BACBCAB”(可能不唯一),它的长度是7;子序列"BBBBB"...原创 2018-06-19 11:07:02 · 2184 阅读 · 2 评论 -
最长回文子串(LPS)Manacher(马拉车)算法--模板
manacher是高效处理回文串的算法,不过因为只限求回文串,manacher的思想就是从左到右求出以每个位置为中心的最长字符串(由于回文串很明显的包含和对称性质,以同一位置为中心的字符串自然是包含在最长回文串里),利用回文串的对称性质,对每一个位置利用之前的信息来快速得到答案。近似于扫一遍,时间复杂度o(n)p[ i ]:代表以i为中点的回文串长度。mx:当前回文串的最右端点的位置。id:当前最...原创 2018-06-19 11:16:13 · 507 阅读 · 0 评论 -
最长公共子串(DP + 滚动优化)模板
表示以和结尾的最长公共子串。 假设两个字符串分别为s和t,s[i]和t[j]分别表示其第i和第j个字符(字符顺序从0开始),再令L[i, j]表示以s[i]和s[j]为结尾的相同子串的最大长度。应该不难递推出L[i, j]和L[i+1,j+1]之间的关系,因为两者其实只差s[i+1]和t[j+1]这一对字符。若s[i+1]和t[j+1]不同,那么L[i+1, j+1]自然...原创 2018-06-19 11:31:56 · 517 阅读 · 2 评论 -
牛客练习赛21:B. 黑妹的游戏II(博弈DP)
题目描述 黑妹和黑弟又聚在一起玩游戏了,这次他们选择在一个n*m的棋盘上玩游戏,棋盘上的每个方格都有一个非负的分数,游戏从左上角开始右下角结束,双方交替的选择一个方格并获得方格上相应的分数,一方选择的方格必须在上一步另一方选择的方格的右边或者下面,黑妹先开始。现在黑妹想知道,如果双方都采取最优策略(最优策略是指双方都希望最终自己的总分数减去对方的总分数最大),她的总分数减去黑弟的总分数会是多少?输...转载 2018-06-30 18:24:29 · 292 阅读 · 0 评论 -
牛客练习赛20 A-礼物(组合数学 or 完全背包求方案数)
题目链接:https://ac.nowcoder.com/acm/contest/128/A?&headNav=www题目描述如果不想读故事的話,可以直接跳到最后一段...大一开学第一天,在学校的超市里,我遇见了她——那个站在摆满饼干的架子前蓝色裙子的长发女孩,她微微俯下身子挑选着奥利奥,似乎在为选哪种口味发愁着。那时的我很怂,只敢远远地看着,也不忍心凑近,...原创 2018-07-29 22:02:58 · 341 阅读 · 0 评论 -
牛客小白月赛7 G - CSL分苹果(dp)
----------------------------------------------------传送门----------------------------------------------------思路:dp[j]来表示当最多可容纳 j 质量的质量,则dp方程:#include<bits/stdc++.h>using namespace std;#de...原创 2018-09-16 16:32:53 · 442 阅读 · 0 评论 -
牛客练习赛26 B.烟花(概率DP)
----------------------------------------------------传送门----------------------------------------------------题目描述小a有个烟花,每个烟花代表着互不相同的颜色,对于第个烟花,它有的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生种颜色的概率输入描...原创 2018-09-13 17:12:35 · 292 阅读 · 2 评论 -
牛客练习赛36-B-Rabbit的工作(1)(dp)
题目链接:https://ac.nowcoder.com/acm/contest/328/B思路:dp[i][j]表示在 i 天里面工作 j 天所消耗的最小体力,dp[i][j] = dp[i-1][j],然后维护最小体力值就行了。#include<bits/stdc++.h>using namespace std;int n , t;char s[405];int ...原创 2019-01-05 17:47:04 · 346 阅读 · 3 评论 -
牛客练习赛36-C-Rabbit的工作(2)(完全背包)
题目链接:https://ac.nowcoder.com/acm/contest/328/C思路: 这题我们可以转化成完全背包,由于有k个任务限制,所以我们转化一下,重新划分a[i],就是一个裸的完全背包了。虽然能AC但3 2 5 1 6 7这组数据过不去.....#include<bits/stdc++.h>using namespace std;const int...原创 2019-01-05 17:54:43 · 357 阅读 · 3 评论 -
2019牛客暑期多校训练营(第一场)E - ABBA(dp)
题目链接:https://ac.nowcoder.com/acm/contest/881/E题意:有多少个长度为的AB序列,可以划分为n个AB子序列,m个BA子序列。思路:数据范围和题型可以看出是dp,对于空字符串要么先放A要么先放B,对于先放A,每一个满足条件的字符串都必然满足前n个A与B匹配,后m个A与B匹配的这种分配情况。对于先放B与此类似。定义,表示 i 个A,j 个B时合法字...原创 2019-07-19 14:39:33 · 304 阅读 · 0 评论