dp
AAAAAAAC——
.。。。。。。。。。。。。
展开
-
2020-11-08小明的打工计划(dp)
普普通通dp,树状数组维护????。#include<bits/stdc++.h>using namespace std;typedef long long ll;ll dp[1000005][2];int a[1001000];///树状数组对 任务的 结束日期进行统计。int lowbit(int i){ return i&(-i); }int sum(int i){///计算 结束日期<i的任务数量。 int s=0; while(i>0)..原创 2020-11-08 17:13:37 · 685 阅读 · 3 评论 -
2020-11-05 递增序列(dp)
注意:要输出数列,前导0可以存在。由于没有注意到细节,所以代码写的很乱。写了改 改了写,,,其实dp的i从s首位下标为0开始存也可以,而且写代码会舒服很多,因为读题不仔细,所以我的dp是以首位下标为1算的,导致后面 比较和输出的时候 还要多转弯。。因为要输出数列,并要求字典序最大的答案。所以dp要从后往前。(一开始就是没注意到这。从前往后dp的。。然后又大改,就改的很乱。)#include<bits/stdc++.h>using namespace std;in...原创 2020-11-05 13:30:03 · 220 阅读 · 0 评论 -
魔力数
当一个人不想学数学时,连一年没用过的数位dp也能想起来。。虽然题简单,虽然WA很多,但就是开心。(感谢大可爱深夜陪伴交题)代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;long long POW[12];long long ORZ(int n,int d,int m,int mod){long long dp[11][16][1005];dp[0][0][0]=1;for(...原创 2020-10-18 01:34:16 · 425 阅读 · 0 评论 -
POJ1276----Cash Machine 多重背包
http://poj.org/problem?id=1276 Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The machine...原创 2018-12-11 16:40:30 · 152 阅读 · 0 评论 -
2018中国大学生程序设计竞赛 - 网络选拔赛
1001.Buy and Resell思路:贪心,以前见过不少类型的,队友做的,直接上代码了;代码:#include<bits/stdc++.h>using namespace std;struct sell{ long long int val; bool operator<(const sell &aa)const ...原创 2018-08-26 16:35:59 · 3960 阅读 · 0 评论 -
2015 Multi-University Training Contest 9-- Expression(区间dp+组合数)
题意:n个数字,中间n-1个计算符号,任意决定计算顺序,求所有结果的和。思路:要求所有的和,一种一种的肯定不行,只能进行区间的问题转化,就可以从小区间转化成大区间的值,暴力枚举计算位置即可。其关系需要结合组合数计算。再就是还要处理组合数的问题。从小到大枚举区间,左右端点,再枚举区间内部最后的计算位置,求和又须知,当最后一个是*时,与区间内的其他计算组合仍是*,不受影响,若是+-,左...原创 2018-08-18 20:57:12 · 174 阅读 · 0 评论 -
求回文串的Manacher算法(O(n))
例如:Hotaru's problem思路:很巧妙的将字符串中间加字符,可以转化成求奇数长度的回文串的问题,然后类似dp的推理过程,模板如下:直接用了例题的代码代码:#include<bits/stdc++.h>using namespace std;const int N = 100005;const int inf = 1000000000;int p[N*2...原创 2018-08-08 09:44:01 · 166 阅读 · 0 评论 -
2018 HDU多校---Problem C. Dynamic Graph Matching(状压dp)
昨天的那个dp题。。。时间卡的很紧,一定要dp,并且是最优的,多10000层循环都不可以。。代码还是放标称吧,这个标称能看懂,,而且目前也就这一种解法。。大佬昨天直播讲题的时候也说这个题,算的话爆搜能过,但是不知道为何T,dp能过也是玄学。。题意:n个点,m次操作,每次操作加一条边或者减一条边,每次操作后输出1,2,,,n/2的匹配k的匹配定义:选择图中k条不包含公共点的边构成的匹配思...原创 2018-07-31 10:06:54 · 311 阅读 · 0 评论 -
牛客 2018 暑假多校训练第二场
https://www.nowcoder.com/acm/contest/140#questionA题意:白云可以走[L,R]米,每秒只有两种走法,走1米或者k米。求有几种走法。思路:简单dp,很像以前那个入门dp,走台阶的问题,求出dp[i][j]:走到i位置前一步走了1米(j==0)前一步走了k米(j==1).的种类数,很简单,注意long long就行代码:#inc...原创 2018-07-22 09:22:46 · 246 阅读 · 0 评论 -
牛客 2018多校训练 暑假第一场
https://www.nowcoder.com/acm/contest/139#questionA题意:对于矩阵【n,m】,每个位置的元素<=其右、下的元素。思路:比赛完全想错思路,赛后看题解,,终于摸懂,就是转换思路,0,1之间可用一条线分隔开,1,2之间也可以用一条直线分隔开,而每条直线,从起点到终点,一共需要经过(n+m)条边,即(n+m)次选择行方向还是列方向,一定要选...原创 2018-07-19 21:27:52 · 386 阅读 · 0 评论 -
UVA 11766 -- Racing Car Computer (dp)
题意:电脑记录了某一时刻每个赛车的前面和后面个有多少辆车(多个车并排时在别的车那只算一辆),问最少有多少个不合理的数据。思路:这题只要想通一点就很简单了。对于每个人而言,他的位置可能的区间为[a + 1, n - b]。那么对于两个人而言,如果他们可能区间相交,那么肯定矛盾,反之则不矛盾。证明:如果区间[l1, r1]和[l2, r2]相交,说明l2 >= r2。第2个人前面有l2 - 1个...原创 2018-06-26 19:31:45 · 122 阅读 · 0 评论 -
UVA 11400--Lighting System Design(dp)
代码:#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define mod 1000000007int n,ans,dp[1005],num[1005];struct AA{ int v,k,c,l; bool operator<(const AA& aa)c...原创 2018-06-26 19:24:22 · 155 阅读 · 0 评论 -
CF--1000D - Yet Another Problem On a Subsequence
http://codeforces.com/contest/1000/problem/D题意:定义好数组是【a0,a1,,,an】且n==a0;或者一个数组能正好分成好数组,再就是通过样例可以看出不必选择连续的思路:一开始我理解的是推得排列组合公式+递推。。。但是因为要取余,要用到逆元,比赛的时候时间也不太够,就没有做出来,,,赛后了解了一下除法取余的做法。。然后看了一下别人的代码,竟然发...原创 2018-06-30 17:33:40 · 334 阅读 · 2 评论 -
UVA 1336-- Fixing the Great Wall (区间dp+dfs+思维)
这个周末跟舍友青岛约起,免费旅游了一波、周末回来赶紧做题,但是发现dp4好难。。。题意:有n个缺口,维修机器人速度v,机器人起点x,接着给了n个缺口的位置、初始花费,单位时间增长花费,求维修n个缺口的最小花费思路:这个题感觉是个区间dp了,但是怎么做都超时!看了题解真是涨知识~~dp[l][r][op]:区间[l,r]维修好了,最后停在l(op==0)或r(op==1)的最小花费。然后记忆化搜索、...原创 2018-06-10 22:32:45 · 218 阅读 · 0 评论 -
UVA 12170--Easy Climb(dp+优先队列)
题意:给了n个堆的高度,要求改变堆的高度,首位不可变,使得队列的任意相邻的两数之差<=d,求最小代价思路:一开始完全没有思路,比较难,然后看题解,看题解看了半天才看懂,还要加预处理,再就是转化成优先队列的问题,还有就是用到了滚动数组。通过枚举可以发觉每个数字只能变成h[i]+k*d这种形式的数字,每个数的状态只有n^2个了,不过转移的话代价比较高,因为对于d(i,x)需要枚举d(i-1,y)...原创 2018-06-14 22:13:27 · 221 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛
A:直接输出n-1.。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll MAXN=1e5+5;ll n;int main(){ int T; scanf("%d",&T); while(T--) { scan...原创 2018-09-02 18:41:57 · 344 阅读 · 0 评论 -
C. Multiplicity (CF 523 Div.2)
https://mp.csdn.net/postedit/84366147简单dp题,公式是很好推的就是暴力超时呀,其实每次找的都是第i个数的不超过i的因子x,dp的s数组统计的是左边到当前位置长度为x的个数,所以当前位置截至的长度为x的个数就是左面长度为x-1的个数,这个很好推,那么对于第i个数,就不要直接O(a[i])的循环了,用O(sqrt(a[i])),找因子,然后因为是跟左面的有关,...原创 2018-11-23 08:37:04 · 333 阅读 · 0 评论 -
uva 12034 ---- Race(dp)
Disky and Sooma, two of the biggest mega minds of Bangladesh went to a far country. They ate, coded and wandered around, even in their holidays. They passed several months in this way. But everything ...原创 2019-03-26 14:33:38 · 149 阅读 · 0 评论 -
hdu --- 4283 You Are the One (区间DP)
题意:n个人,依次选择进入黑屋,还是直接上场,进入黑屋(先进后出),每人有一个di,第x个进场,产生怒气(x-1)*di,求所有人可能的最小的怒气和。思路:一看数据范围是100,就比较容易想到区间dp,也比较显然,但是一开始考虑错了,方程写错了。。一开始想的是,枚举区间[l,r],中间k,比较先[l,k]所有进完场,还是[k+1,r]先所有进完场,dp[i][j]=min{dp[i][...原创 2019-03-16 18:09:38 · 116 阅读 · 0 评论 -
状压dp
状压dp题意:To build a machine, a lot of parts need to be produced. A question is how to arrange the processing order to minimize the total delay time of the parts.InputThe input consists of no more ...原创 2019-03-16 15:28:27 · 120 阅读 · 0 评论 -
HDU --- 4745 Two Rabbits(最长回文子序列 区间DP)
HDU --- 4745 最长回文子序列 区间dp题意:Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon, they planned to play a game with some stones. There were n stones on the ground and they were arranged as...原创 2019-03-15 15:11:54 · 191 阅读 · 0 评论 -
POJ--3666 Making the Grade(dp)(数据有问题)
题意:A straight dirt road connects two fields on FJ's farm, but it changes elevation more than FJ would like. His cows do not mind climbing up or down a single slope, but they are not fond of an alter...原创 2019-03-14 18:03:17 · 187 阅读 · 0 评论 -
ZOJ 3623 - Battle Ships(完全背包)(数据弱
题意:Battle Shipsis a new game which is similar toStar Craft. In this game, the enemy builds a defense tower, which hasLlongevity. The player has a military factory, which can produceNkinds of b...原创 2019-03-14 17:39:08 · 205 阅读 · 0 评论 -
HDU 5501 The Highest Mark(01背包)
http://acm.hdu.edu.cn/showproblem.php?pid=5501思路:对于每个题,就是考虑做和不做,对于做的,又是有顺序关系最后分数,做同样的题,用的总时间一定相同,就是顺序关系减少的分数。详见代码注释代码:#include<bits/stdc++.h>#define ll long longusing namespace std;l...原创 2019-01-15 20:07:09 · 144 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1(题解)
F是个最短路,随便搞搞就可以B 吃豆豆题目描述 wls在玩一个游戏。wls有一个n行m列的棋盘,对于第ii行第jj列的格子,每过T[i][j]秒会在上面出现一个糖果,第一次糖果出现在第T[i][j]秒,糖果仅会在出现的那一秒存在,下一秒就会消失。假如wls第k秒在第i行第j列的格子上,满足T[i][j]∣k,则wls会得到一个糖果。假如当前wls在第i行第j列的格子上,...原创 2019-01-21 13:22:33 · 745 阅读 · 0 评论 -
CCPC 2016 Hangzhou I & HDU 5941 Inequality(dp)
Little Ruins is a studious boy, recently he learned inequation! As homework, his teacher gives him a problem of inequation: give you an array a with length N−1N−1, please find an array xx with length...原创 2019-01-17 17:01:59 · 295 阅读 · 0 评论 -
E-求长度--牛客 spfa+状压dp
题目链接:https://ac.nowcoder.com/acm/contest/109/E?&headNav=www题意:给定一幅n个点m条边的图和S个一定要经过的点,问从0号点出发,经过这S个点再回到0号点的最短路径长度是多少。输入:第一行一个整数T(T <= 2)表示数据组数。对于每组数据,第一行两个整数n,m表示点数和边数(1 <= n, m <=...原创 2019-01-02 19:54:23 · 171 阅读 · 0 评论 -
openjudge 4976---硬币(01背包,容斥?)
http://noi.openjudge.cn/ch0207/4976/描述宇航员Bob有一天来到火星上,他有收集硬币的习惯。于是他将火星上所有面值的硬币都收集起来了,一共有n种,每种只有一个:面值分别为a1,a2… an。 Bob在机场看到了一个特别喜欢的礼物,想买来送给朋友Alice,这个礼物的价格是X元。Bob很想知道为了买这个礼物他的哪些硬币是必须被使用的,即Bob必须放弃收集好的...原创 2018-12-11 17:30:44 · 508 阅读 · 0 评论 -
POJ 1159---Palindrome (dp+滚动数组)
DescriptionA palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the...原创 2018-12-13 13:04:27 · 173 阅读 · 0 评论 -
2018.6.6 周中练习2
本场比赛A了三个题。。B题卡了很长时间,导致C题会做但是没有时间敲,比赛结束10分钟后A了C。先做的A题,XOR-pyramid 题意:数组b的f运算是f(b1,b2,b3,,,bn)=f(b1^b2,b2^b3,,,b(n-1)^bn);当n==1时,f(b1)=b1;给定数组b,q组询问,求[l,r]区间子区间的f运算结果的最大值思路:画个形成图,发现规律,然后由于n的的数据量比较小,所以可以...原创 2018-06-06 22:29:47 · 179 阅读 · 0 评论 -
UVA 10559 Blocks --区间dp
题意:给出n个木块的颜色,每次可以消除相邻的同一颜色的k个色块,价值是(k*k),求最大价值思路:因为在dp专项内,区间dp是比较明确的,然而又是一个深搜dp+记忆化搜索,代码是比较简单,也算是比较好理解的吧,但是不太容易想到这种解法。。代码:#include<bits/stdc++.h>using namespace std;int dp[205][205][205];///先消...原创 2018-06-11 13:16:09 · 183 阅读 · 0 评论 -
[ZJOI2006]物流运输(最短路+dp)
题目地址题目大意:N天,M个码头,从1到M点的最短路径,给出连通路径及运输成本,不过有时码头禁止通过,可能要改变路线,每次改变路线要K元成本,求N天运输最低成本思路:一开始对于题意的理解有点问题。是每天从1-M走一趟,相邻两天不能走同一条路的话就加K元,看了题解的解释,是最短路径+dp问题,处理过程有点麻烦,但是因为数据量小,所以并不是很难,可以先求出假如从i天到第j天走的是同一条路的原创 2017-12-11 10:58:35 · 289 阅读 · 0 评论 -
状压dp Corn Fields
题目地址题目大意:在N*M的矩形上种草 ,1的地方可以种,0的地方不可以种,有草的地方可以放牛,而且任意两头牛不相邻,问放牛的方法(0头牛算一种)思路:先找出任一行0到1细节是滚动dp数组,因为只考虑与前一行间的关系,可以看成单双行之间的关系,及时更新,很省内存!再就是注意求余即可代码:#include#include#include#include#inclu原创 2017-12-01 21:17:29 · 146 阅读 · 0 评论 -
状压dp Mondriaan's Dream
题目地址题目大意:h*w的矩形,用1*2的矩形铺满,求不同的铺法思路:乍一看的时候感觉跟楼梯的那个递归的题很像,但是这个是二维的。。又是状压dp。。就搜了题解做的,也不是很难理解吧。。一行一行的往上放,记录对下一行的影响dp[N][1代码:#include#include#include#include#include#include#includeusing原创 2017-12-01 21:01:06 · 128 阅读 · 0 评论 -
状压dp Most Powerful
题目地址题目大意:有N个原子,下面输入w[N][N]矩阵 i 行 j 列任意两个原子碰撞产生的能量,j消失,求产生的最大的能量思路:dp[1这算是一个比较简单状压dp题,只有1维,状态转移方程也很简单,也是在老师给的课件上的原题、代码:#include#include#include#include#include#include#includeusing n原创 2017-12-01 20:41:03 · 196 阅读 · 0 评论 -
动态规划练习一—1最长上升子序列
1、题意:对于输入的数组,输出其上升子序列最长的长度2、思路:对开始到结束,储存当前位置为子序列最后一位时最长的长度,当其位置最长长度为前一个比当前位置数值小的位置的长度+1;3、感想:此题老师上课讲过,但是自己做的动态规划第一题,是思维打开的开端,比较易接受。4、代码:#includeusing namespace std;int main(){ int n原创 2017-04-17 21:14:48 · 266 阅读 · 0 评论 -
动态规划练习一—2最大子矩阵
1、题意:对于给予的矩阵,输出其子矩阵中最大的和2、思路:先确定行数,再将选中行的所有列的和分别储存起来,在寻找此序列的最大连续字段和。比较保存最大值。3、感想:此题上课老师也讲过,新的思路,解两个自变量的最大值,先确定其中一个,再计算另一个。4、代码:#includeusing namespace std;int f(int b[101],int n){原创 2017-04-17 21:21:10 · 236 阅读 · 0 评论 -
动态规划练习一—3采药
1、题意:在规定的时间内,采集草药,使其价值最大。2、思路:类似于01背包问题,f[i][j]=max(f[i-1][j-a[i]],f[i-1][j]) f[i][j]为前I株草药用时j的价值。3、感想:类似于老师上课讲的背包问题,再用一步优化,二维数组换成一维的,现在,也可以用贪心算法,更方便。4、代码:#includeusing namespace std;int m原创 2017-04-17 21:26:53 · 363 阅读 · 0 评论 -
动态规划练习一—5吃糖果
1、题意:每天吃一块或两块糖果,求n块糖果有多少种吃法2、思路:类似于新生赛的走台阶问题,a[n]=a[n-1]+a[n-1],最后一次要么吃一块,要么吃两块。3、感想:标准动态规划问题,比较简单4、代码:#includeusing namespace std;int main(){ int n,i,j,a[21]; a[0]=0; a[1原创 2017-04-17 21:36:37 · 453 阅读 · 0 评论 -
动态规划练习一—9移动路线
1、题意:输出从起点到目的地的走法,只能向右或向上走2、思路:a[i][j]=a[i-1][j]+a[i][j-1]当前位置的路线走法=左面位置的路线走法+下面位置的路线走法3、感想:类似于糖果问题,题意范围较小,可以全部算出储存起来,随用随取4、代码:#includeusing namespace std;int a[21][21];int main(){原创 2017-04-17 21:40:51 · 401 阅读 · 0 评论