自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

转载 2017北京ICPC Pangu and Stones(区间DP)

题意:n个石子堆排成一排,每次可以将连续的最少L堆,最多R堆石子合并在一起,消耗的代价为要合并的石子总数求合并成1堆的最小代价,如果无法做到输出0、分析:关键在于二维数组无法通过枚举解决了,所以要多开一维,用三维数组来做。表示的状态为从第 i 堆,到第 j 堆,合并为 x 堆,最小需要的代价。时间复杂度为O(n^4)。 状态的转移就在于先枚举长度,再枚举起点,因而...

2019-09-30 23:48:00 169

转载 Comet OJ - Contest #11 B usiness 背包预处理+背包状态新形式+完全背包

题意:你要计算如下模型能得到的最大钱数:有n天,初始时你的钱数为0,有m种可能操作,第i种会使你当前失去ai​的钱数并在n天结束后返还bi​的钱数。每一天可以执行任意多种操作,每种任意次(但每次操作后你的钱数不能为负)。每天结束时你会获得一个与当前持有钱数x相关的收入f(x),而f(x)单调不增。分析:首先显然是动态规划,并且状态可分解为 前 ...

2019-09-25 22:39:00 163

转载 2019牛客多校训练营第四场补题

J题: Free https://blog.csdn.net/canxuezhinuanyang/article/details/97671247题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价思路:据说是分层图最短路经典裸题:https://www.cnblogs.com/wizarde...

2019-09-17 12:38:00 79

转载 2019牛客多校训练营第五场补题

G题:subsequence题意:给定两个由数字字符组成的字符串s , t ,计算将 s 的子序列看成正整数后比 t 大的子序列的数量。分析:s 的子序列长度大于 t 的一定比 t 大(排除0开头的),通过组合数预处理就能够求得,那么重点算s子序列长度等于t 的有几个是大于t 的。这里显然要用dp的做法,用s、t从右往左的位置标记dp的状态, dp[ i ][ j ] 表示状...

2019-09-17 12:31:00 83

转载 2017CCPC哈尔滨 B:K-th Number(二分+尺取)

题意:给你n个数,之后求出所有连续区间的第k大并把他们排成一排,之后再求出这一排中第m大的数分析:二分答案x,对于当前x,可以用类似于尺取的方法可以得出有多少个区间满足第k大的数>=x(即是对每个head,有n-tail+1个区间都满足第k大数>=x),然后通过这个区间数量与m的大小关系来决定二分的方向#include <cstdio>#in...

2019-09-17 11:00:00 160

转载 启发式分治入门 Non-boring sequences UVA - 1608

参考自:https://blog.csdn.net/XY20130630/article/details/50635756题意:一个序列被称为是不无聊的,仅当它的每个连续子序列存在一个独一无二的数字,即每个子序列里至少存在一个数字只出现一次。给定一个整数序列,请你判断它是不是不无聊的。分析:预处理每个元素上一次出现位置和下一个出现位置,  我们发现对于一个子序列[L,R]来说, ...

2019-09-16 01:16:00 114

转载 2019牛客多校训练营第三场补题

B题:Crazy Binary String把0看成-1,前缀和,pos[ 0+n ] = 0#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+3;int a[maxn]; int pos[maxn<<1];string s;int...

2019-09-16 01:11:00 92

转载 2019牛客多校训练营第二场补题

https://ac.nowcoder.com/acm/contest/882/FF题 Partition Problem题意:有两个队,n 个人,每个人和其他 n-1 有个竞技值,当处于不同队时,就能增加这个值,求最大的总竞技值。分析:因为 N 最大只有14,所以可以暴力DFS回溯搞组合数。对于这个问题,就得先构造一个初始状态入手,初始状态也就是全都在B队,由于关键在于...

2019-09-11 01:19:00 55

转载 bitset 优化01背包 处理集合

好博客:https://www.cnblogs.com/cjjsb/p/9751384.html例题1:Newcoder 132C 简单瞎搞题题目链接:https://www.nowcoder.com/acm/contest/132/C题意:分析:核心就在于看作01背包的形式,枚举种类n,每个范围(L-R+1),以及所有的可能值 1~1e6,然后直接做的话...

2019-09-09 01:33:00 861

转载 三维递推dp Logo Turtle CodeForces - 132C

https://vjudge.net/problem/CodeForces-132C题意: F表示向前走,T表示向后转,有N次修改字符的机会,问最多能走多远思路:dp[ i ][ j ][ d ]表示前i个字符修改了j次,走了k长度,当前朝向是d的状态的最大长度所以就可以递推一个关系式,分第i个字符为‘F‘or‘T‘时然后多维递推dp就是当前 i、j都是由 老i、...

2019-09-08 20:55:00 60

转载 矩阵快速幂 优化dp 模板

相关博客 :https://blog.csdn.net/china_xyc/article/details/89819376#commentBox关于能用矩阵乘法优化的DP题目,有如下几个要求:转移式只有加法,清零,减法etc.,max和min运算不允许转移式中关于前几位dp结果得到的系数必须是常量转移次数一般超级多由于转移次数多,一般都要模一个int范围内的数...

2019-09-07 21:39:00 100

转载 floyd 传递闭包 POJ - 3660

https://vjudge.net/problem/POJ-3660传递闭包 ,就是把具有传递性的关系传递开,通过一些已知的连边求出点与点之间的关系。设f[i][j]表示i 与 j 是否联通,f[i][j]=f[i][k]&&f[k][j]再分析每个点,如果能确定 n-1 个关系,那就可以确定他的排名。时间复杂度O(N^3)#include...

2019-09-05 22:58:00 91

转载 带权并查集 模板 HDU - 3038

https://vjudge.net/problem/HDU-3038TT 写一串数字,对 FF 不可见FF 选择一个区间(会重复操作), TT 把这个区间的和告诉 FF,然后,一些和是不正确的,所以,有一些答案是矛盾的,根据这些矛盾求出答案错误的个数。注意两点:1、TT 给的一个 和 是正确的,如果它与之前给的 和 不矛盾。2、FF 发现一个与之前矛盾的 和 之后,该 和 不再参与...

2019-09-05 21:08:00 66

转载 线段树模板

不要当线段树都不会敲的菜鸡了。线段树所要提供的是查询一个区间内的信息,并允许修改操作。节点数据向上更新对于区间求和:void push_up(int rt){ tree[rt] = tree[rt<<1] + tree[rt<<1|1];}对于区间求最值:void push_up(int rt){ ...

2019-09-04 23:56:00 97

转载 基础dp Max Subsring Plus HDU-1024 最大字串升级版之最大多字串(滚动数组中的倒序细节)...

http://acm.hdu.edu.cn/showproblem.php?pid=1024题意:有一个含n个数的序列,找到m个子序列,使这m个子序列的和最大。1 ≤ x ≤ n ≤ 1,000,000, -32768 ≤ Sx≤ 32767分析:先用状态 dp[ i ][ j ] 表示前 j 个数取出 i 段所得到的最大值。 可以知道,对于下一个数,有以下三种操作:1、不...

2019-09-01 00:51:00 83

转载 组合数 (选定思想) dp cf1000D - Yet Another Problem On a Subsequence

http://codeforces.com/problemset/problem/1000/D参考自:https://www.cnblogs.com/hua-dong/p/9238795.html题意:给定序列,问有多少子序列(不一定连续),满足可以划分为若干个组,给个组的第一个等于区间长度-1;思路:关键就在于区间的开头,由此我们从后往前考虑,dp[ i ] 表示以 i 开...

2019-08-29 00:36:00 102

转载 状压dp CodeForces - 580D Kefa and Dishes

题意:共有 N 道菜,每道菜有一个满意值,小明要吃 M 道菜,其中有 K 种组合可以让小明连续吃下他们后获得额外的满意值,求最大满意值。分析:因为菜的数量只有18,而且要考虑先后连续的顺序和吃 M 道菜停止 ,就要想到要明确表示出小明吃菜的状态,就可以用状压DP来做。状态用总的状态(二进制的state )和正在吃的菜( i )表示。状态转移方程:dp[sta | tmp2][ j...

2019-08-27 11:14:00 91

转载 线性dp+离散化 POJ - 3666 Making the Grade

https://vjudge.net/problem/POJ-3666题意:将一条路上的坑坑洼洼修补成单调的,求最小费用。分析:明显是线性dp,如图,但 j 的数据太大, 就sort 一下用坐标表示达到离散化,并且每次找所有小于 j 的 k 的最小值,时间复杂度会变成三次方,所以要用Min 在 j 循环下记录最小值可以让复杂度变成平方。最后还可以用滚动数组节约空间。可以参...

2019-08-27 11:10:00 121

转载 状压dp (记录路径) 做家庭作业 HDU - 1074

题意:有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小。分析:只有15门课,可以通过状压,暴力枚举每一种情况,并且在DP的时候要记录路径,方便之后的输出。一维状压dp的写法:先枚举所有状态,再枚举每门课,如果这门课可以构成这个状态,就用状态转移,记录最小值,(因为还有字典序要求,所以 j要从n-1到...

2019-08-27 10:46:00 175

转载 折半枚举(超大背包)2019牛客多校第九场 D题 组合总和为sum

https://ac.nowcoder.com/login?callBack=%2Facm%2Fcontest%2F889%2FD%3F%26headNav%3Dacm题意:给定长度为n的数组{ai}和总和sum。请找到{ai}的子集,使得子集的总和为sum,输出选取方案的01序列。分析:可以看成超大背包,当成普通背包做的话时间复杂度是n*a[ i ] (max) ...

2019-08-27 10:28:00 166

转载 数位dp HDU - 5898 odd-even number

http://acm.hdu.edu.cn/showproblem.php?pid=5898题意:求两个数中间的满足连续位是奇数的长度是偶数,连续位上是偶数的长度位奇数的数量。分析:就是数位dp基本写法,dfs 的参数多加了个 a 表示连续位数的长度,flag表示上一位是否为奇数。 这里当奇偶改变时,a 就要变成1 ,并且可以用 a=0 来表示区分是前导0 。然后 记忆化搜索的...

2019-08-27 10:16:00 134

转载 数位dp CodeForces - 55D 美丽数字

Beautiful numbers CodeForces - 55D题意:定义能被自己所有位数整除的数字为美丽,给定一个区间,求区间内的美丽数字个数。分析:首先,可以把限制条件转化为之前所有位数的最大公倍数,将pos,sum,lcm,up当作 dfs的条件和dp下标,然后dp[ pos ][ sum ][ lca ][ up ] 就代表着 pos 之后的位置全部遍历...

2019-08-27 01:03:00 144

转载 数位dp HDU - 2089 不要62

https://cn.vjudge.net/problem/HDU-2089题意:题意:给定一个区间,求区间中不包含4、连续的62的数字有几个。分析:基础的数位dp,利用开多维的dp数组和 dfs 的多个参数来实现各种限制条件,从高位到低位dfs,并且多用 if 判断,结尾 return 1。 ( 用dig[] 保存数位,ans 基本框架为sol(m) - sol(n ...

2019-08-27 00:24:00 93

转载 有依赖的背包 洛谷P1064 金明的预算方案 (不是分组背包)

题意:买附件的前提是买了主件,问给定金额获得的最大价值。分析:有依赖的背包模板题,注意有依赖的背包不是分组背包的那种三个for的顺序,而是枚举一个主件后,不断的枚举附件,而购买多个不同的附件。同时,在写法上,用 f 数组表示答案数组,f 的每个 j 都是对应最优的决策,而每次枚举都在 t 数组上操作,再判断f 数组上哪些需要更新。 *分组背包是将物品分组,...

2019-08-27 00:07:00 115

转载 多重背包+二进制拆分 POJ1014

题意:有权值分别为1,2,3,4,5,6的大理石,每种都有若干块,能否把它们分成权值相等的2份。大理石的总数量不超过20000。(多重背包)分析:判断dp[ V/2 ] ==V/2 即可,但过程如果用普通做法会超时,即多重背包当成01背包做效率很低,这时候要用二进制拆分优化,将复杂度变为二进制拆分原理:这里是指一个大数11101111 ,只要每一位上的1我们都有一个数,...

2019-08-27 00:04:00 231

转载 单调队列优化dp 入门 洛谷P2627 修剪草坪

https://www.luogu.org/problem/P2627题意:给一个长度为nn的数组。现在让你选一些数,并且选的数中不能有在数组中长度超过kk的连续段。求选出的数的和的最大值。分析:共三种解决方案。SolutionOne顺推.令dp[i][0]表示在前i头奶牛中,选了第i头奶牛能获得的最大效率dp[i][1]表示在前i头奶牛中,不...

2019-08-25 23:20:00 164

转载 01背包 + 排序 (记忆化搜索) 骄傲的商人(HDU - 3466)

01背包 + 排序题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3466题目大意:n中商品,m元钱,每种商品都有p,q,v属性,p价格,q表示买这种商品你需要带q元老板才愿意和你交易,v这种商品的实际价值,求问最多可以获得多少价值。这题是有先决条件的dp,会导致没达到限制条件的 j 在 i+1 后达到,但没法正确更新,没法直接解...

2019-08-25 21:36:00 248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除