单行dp复习hdu1087】的更多相关文章

我写的想法是每个dp[i]都是前dp[i]的最大值 dp[i]就等于前全部dp[0...i-1]的最大值加上dp[i] 最大值是一个中间变量 最大值得选取条件就是序列的值大小都是递增的,也就是a[i]>a[前面的] #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long LL; LL a[1000+100]; LL dp[1100];…
区间DP复习 (难度排序:(A,B),(F,G,E,D,H,I,K),(C),(J,L)) 这是一个基本全在bzoj上的复习专题 没有什么可以说的,都是一些基本的dp思想 A [BZOJ1996] [Hnoi2010] chorus 合唱队 裸题 \(dp[i][j][2]\)表示区间\(i,j\)最后放的是\(i\)还是\(j\)的方案数 int n; int a[N]; ll dp[N][N][2]; int main(){ rep(i,1,n=rd()) a[i]=rd(); rep(i,…
DP复习 集训%你赛2:测绘(审题DP) 经过2000+个小时的努力终于把这道题做出来的蒟蒻通 分析: 这道题我一直没做出来的原因就是因为我太蒟了题面看不懂,题面读懂了,其实不是特别难. 题目翻译: 你从1~n中选k个数,使得误差值小于E.求最少的k. 这里的k都是1~n之间的数字,什么M[]的S[]的先忽略不管他. 现在就是你有n天的数据,你从中选k天,使得这些天的数据与总数据的误差值小于E,找最少的k. 然后通过一些奇怪的方法求出你选的k天的误差值,就ok了. 然后我们开始定义DP数组 dp…
深感自己姿势水平之蒻……一直都不是很会状压DP,NOIP又特别喜欢考,就来复习一发…… 题目来源 Orz sqzmz T1 [BZOJ4197][NOI2015]寿司晚宴 (做过)质因数分解最大的质因子独自处理,$\sqrt{500}$以内的质数只有八个,因此可以用$2^{16}$的状态来表示一种方案: 然后有同样因子的两个数不能同时出现,排序然后随便搞搞就行了…… #include<algorithm> #include<iostream> #include<cstring…
前言 复习笔记第4篇.CSP RP++. 引用部分为总结性内容. 0--P1433 吃奶酪 题目链接 luogu 题意 房间里放着 \(n\) 块奶酪,要把它们都吃掉,问至少要跑多少距离?一开始在 \((0,0)\) 点处. \(n\leq 15\) ,保留两位小数. 思路 为啥状压第一题是绿题啊.这么水了吗,为啥我还不会( 令 \(f[i][s]\) 表示从点 \(i\) 出发,遍历集合为 \(S\) 的最小值,枚举其他点进行转移.预处理边界 \(f[i][s]=0\) (\(S\) 为除了第…
前言 复习笔记2nd. Warning:鉴于摆渡车是普及组题目,本文的难度定位在普及+至省选-. 参照洛谷的题目难度评分(不过感觉部分有虚高,提高组建议全部掌握,普及组可以选择性阅读.) 引用部分(如这个文本)为总结性内容,建议即使是跳过部分也进行阅读. 0--P3195[HNOI2008]玩具装箱 题目链接 怎么一上来就是紫题啊 题意 给定 \(C_i\) 表示每个物体长度,把 \(i\sim j\) 的物品放入一个容器中,容器的长度为 \(x=j-i+\sum_{k=i}^j C_k.\)…
前言 最近做毒瘤做多了--联赛难度的东西也该复习复习了. Warning:本文较长,难度分界线在"中场休息"部分,如果只想看普及难度的可以从第五部分直接到注意事项qwq 文中用(比如现在这个文本)引用文本书写的部分为总结性内容,即使是跳过部分也建议阅读awa 没事,最难也就NOI2020的签到题,不怕( 0--P1962 斐波那契数列 题目链接 题意 \[n\leq 2,F(n)=1. \\ n>2,F(n)=F(n-1)+F(n-2). \] 对于上述递推式,求 \(F(n)\…
前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于半路换题,中间耽搁了一天等原因,所以此文的阅读体验不一定和前5篇相当,见谅. 注:此文大部分建议结合代码阅读,便于解释 0--HDU 3555 Bomb link 题意 求 \(1\sim N\) 中包含子串 49 的个数.\(N\leq 2^{63}-1.\) 思路 设 \(f[i][0]\) 表…
POJ 2533 最长不降子序列 #include <cstdio> ; int a[Maxn],Pos[Maxn],F[Maxn],n,Ans; inline int Max(int x,int y) {return x>y?x:y;} inline int Find(int x) { ,r=Ans,Res; while (l<=r) { ; ; ; } return Res; } int main() { scanf("%d",&n); ;i<…
树形DP 树形DP:建立在树上的动态规划 一般有两种传递方式:根→叶或叶→根 前者出现在换根DP中,一般操作是求出某一个点的最优解,再通过这一个点推知其他点的最优解. 后者是树形DP的常见形式,一般树形DP都是在叶子向根转移上. 一般状态都是f[x][...]表示x的子树中如何如何 POJ_3342_Party at Hali-Bula_树形DP 题目大意:没有上司的舞会,不存在选了连续两个点的情况,求最多选多少人. 题解:最裸的树形DP,直接状态,f[i][0]表示没选这个点,子树中最多选了多…
转载请注明原文地址http://www.cnblogs.com/LadyLex/p/8490222.html 之前学数位dp的时候底子没打扎实 虚的要死 这次正好有时间……刷了刷之前没做的题目 感觉自己脑洞不太够……比较经典的题或者见过的类似模型就能自己推出来,但是没有见过的模型就虚的要死(比如二进制数位DP) 感谢WQ的帮助,让我对数位DP的理解逐渐加深 那么我们总结一下这次做的题目…… bzoj4521 记忆化搜索即可,水爆 #include <cstring> #include <…
[问题描述]人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想知道当他花一定钱数后剩余钱数无法再购买任何一件剩余物品(每种物品他最多买一个)时有多少种方案,两种方案不同,当且仅当两种方案中至少有一件品不同,可是由于他忙着准备泡下一个妹纸(chi),因此麻烦聪明的你帮帮忙.[输入格式]输入第一行 n 和 m, n 表示妹纸喜欢的礼物数目, m 表示现有的钱数,第二行 n个数,表示 n 个物品的价格.[输出格式…
题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移方程为: dp[i]=max(dp[i],dp[j]+); 如果a[j]<a[i],那么dp[i]就应该取dp[i]和dp[j]+1的最大值,由于是正序,j<i保证了dp[j]已经是j时的最优解 #include <iostream> #include<cstring> u…
最大连续和:给出一段序列,选出其中连续且非空的一段使得这段和最大. stdin: 7 2 -4 3 -1 2 -4 3 stdout: 4 状态转移方程:dp[i]=max(dp[i-1]+a[i],a[i]) 如果dp(i-1)已经为负数,那么前i-1段就没有意义了,我们直接从a[i]重新开始取. #include<iostream>using namespace std;int n;long long a[200005],dp[200005];long long total=-99999;…
01背包和完全背包都是dp入门的经典,我的dp学的十分的水,借此更新博客的机会回顾一下 01背包:给定总容量为maxv的背包,有n件物品,第i件物品的的体积为w[i],价值为v[i],问如何选取才能是背包内的物品价值总和最大. stdin: 5 1 2 3 4 5 5 4 3 2 1 stdout: 14 设dp[i][j]为取前i件物品时容量为j的最优解. 状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]); 压缩后:dp[j]=max(d…
总结 下午的突击练习完全不在状态 A.拦截导弹简单版 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导…
题目描述 一个\(n*m\)矩阵由\(n\)行\(m\)列共\(n*m\)个数排列而成.两个矩阵\(A\)和\(B\)可以相乘当且仅当\(A\)的列数等于\(B\)的行数.一个\(N*M\)的矩阵乘以一个\(M*P\)的矩阵等于一个\(N*P\)的矩阵,运算量为\(nmp\). 矩阵乘法满足结合律,\(A*B*C\)可以表示成\((A*B)*C\)或者是\(A*(B*C)\),两者的运算量却不同.例如当\(A=2*3\),\(B=3*4\),\(C=4*5\)时,\((A*B)*C=64\)而\…
题目描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时会有以…
选课 今天又看了一下这道题,竟然AC不了了 自己的学习效率有点低下 要明白本质,搞透彻 #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; + ; struct Edge{ int to, next;…
第一天 基础算法&&数学 day1难度测试 如果要用一个词来形容上午的测试,那真是体无完肤.  成绩: 题目 成绩 评价 T1 50 一般 T2 10 大失所望 T3 0 差 基础算法 递推 :指通过观察.归纳,发现较大规模问题和较小规模问题之间的关系,用一些数学公式表达出来,在一些教材中,也称为计数DP.递推的模型最主要有:斐波那契数列,卡特兰数,bell数,错排等等. 递归 :所谓递归,是指函数"自己调用自己"的一种编程方法,在解决一个问题时,如果发现问题能拆解为一…
数位dp 复习数位dp 数位dp一般用记忆化搜索来解决 观察需要满足的条件,然后计入状态 状态还要记录是否达到上线,以及前导零 比如说这道题 dfs(bit,a4,a8,cnt,last,limit) 由于这道题枚举的时候不可能有前导零,所以就不记录前导零 bit表示当前考虑第bit位,从高到低 a4表示是否有4 a8表示是否有8 cnt记录最多连续出现次数,最大为3,limit记录是否卡上界 枚举这位选什么,如果卡上界,那么从0->st[bit],否则从0->9 然后判断状态是否更改 如果不…
还有一年的时间,没人能挡住我前进的脚步 以后不打算写游记了,补完这篇再写就等退役吧,不太想传播什么负能量,走这条路,希望能得到自己想要的东西 Day-n 上了一个月文化课,班主任突然催我搞竞赛??? 初赛Day-1 换了个考点,有点不习惯,也不知道以后竞赛会发展成啥样子qwq 莫名担心退役,抄了好多知识点,听说根据机位分名额,跑去看了会运动会,\(rp--\) 晚上到处D人,\(rp--\) 初赛Day-0 奶了几口,竟然考了诶,大力分类讨论[数据删除]题 为啥泥萌啥问 选择题:有个小清新的dp…
一. 最短路算法复习 ★1.Dijkstra: 2. SPFA: 3. Floyd: 二. DP 复习 ★1.背包问题: 2.区间 DP: 3.状压 DP: 三. 数据结构 ★1. 线段树: 2. 树桩数组: ★ 3. 树链剖分: 4. Splay: ★ 5. Trie 树: 四. 博弈论 我也不知道有啥题,甚至不知考不考,有时间看看吧: ★五. 数学数论 ★1. 扩展欧几里得算法: ★2. 矩阵加速: ★3. 逆元: ★4. 组合数问题: ★5. 扩展卢卡斯定理: ★6. 素数筛法: ★六.…
luogu P3959(2017noipTG D2T2 不知道为什么,这两天见了好多伪装成图的dp题,这道也是. 最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp. solution: 题意就是找到一种连接方法,使这些点在同一连通块中且代价最小. 因为n<=12,所以dfs+状压dp去做. 具体操作见注释. AC码: #include<cstdio> #include<cstring> #include<algorithm> using na…
DP 复习. 参考 redbag 博客 提供的题表. P2858 [USACO06FEB] Treats for the Cows 区间 DP. 转换思路,题面从外往里递推,我们采用从里往外递推,权值逐级递减的反向实现方式. 选择区间左端点或右端点更新答案. int n, a[2003], f[2003][2003]; int main() { scanf("%d", &n); for (int i=1; i<=n; ++i) scanf("%d",…
搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可以的2333).查找的话请自行 F3,菜鸡作者不会搞目录链接. 置顶(常用网站) 查询 OI Wiki OEIS cpp reference 中文站 c++官网 工具 剪贴板 图床(imgbb) 图床(路过) Vjudge 镜像站 udebug Tool Dictionary-Merriam Web…
[复习]动态dp 你还是可以认为我原来写的动态dp就是在扯蛋. [Luogu4719][模板]动态dp 首先作为一个\(dp\)题,我们显然可以每次修改之后都进行暴力\(dp\),设\(f[i][0/1]\)表示当前考虑\(i\)及其子树内的点,当前这个点是选还是不选时能够得到的最大权值,那么我们可以得到转移:\(f[i][0]+=\max\{f[v][0],f[v][1]\},f[i][1]+=f[v][0]\),其中\(v\)是\(i\)的一个儿子. 那么这样子的复杂度就是\(O(qn)\)…
区间\(dp\)提升复习 不得不说这波题真的不简单... 技巧总结: 1.有时候转移可以利用背包累和 2.如果遇到类似区间添加限制的题可以直接把限制扔在区间上,每次只考虑\([l,r]\)被\([i,j]\)完全包含的情况 [BZOJ4897] [Thu Summer Camp2016] 成绩单 典型的利用背包转移,\(dp[i][j]\)表示处理完这段\([i,j]\)区间的答案 转移时一段区间可以被先处理掉或者直接从已经处理完的\(dp[i][j]\)中取过来,这个可以用一个背包维护 con…
状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难的题,以至于我卡了很久 可以看出,所有会互相直接造成影响的数之间构成一张\(DAG\),边就是\(i->i*2,i->i*3\) 取出每一个连通块之后,就是一个独立集个数的问题 \(DAG\)还可以求独立集? 我们其实可以惊人得发现,这张\(DAG\)过于整齐,就是一个网格图,就是一张网格图上相邻…
题意:给定一串数字,要求选取一个严格递增的子序列,使序列和最大. dp[i] 表示以 i 为结尾的子序列的最大和,dp[i] = max{dp[j]+a[i]}(j 从 0 到 i-1),dp[0]是0: #include<stdio.h> #include<string.h> #define max(a,b) a>b?a:b ]; ]; int main(){ int n; ){ int q,i,j; ; ;q<=n;q++){ scanf("%d"…