DP Training(Updating)♪(^∇^*)
DP Training
DP Training 01
https://vjudge.net/contest/220286 密码 nfls
A 数塔(Easy)
\(f[i][j]\) 表示当前选第 \(i\) 行,第 \(j\) 列的格子,上面的选完了,下面的没选的最大方案
\(f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j]\)
B 数塔(Medium)
不难发现答案一定是交点到四个顶点的最大路径之和,预处理 \(f[4][i][j]\) 表示 \((i,j)\) 到四个定点的最优距离,然后枚举交点计算结果
注意有两种情况:
分别统计答案即可
C 数塔(Hard)
题目坏掉了
写了一个不知道真的假的
我们把来回想象成两个人一起从左上角走到右下角, \(f[i][j][k]\) 表示当前走到第 \(i\) 行,第一个人在第 \(j\) 列,第二个人在第 \(k\) 列,最大收益,转移的时候枚举第一个人是否是从左边来的,第二个人是否是从左边来的(否则就是从上边来的),复杂度 \(O(n^3)\)
D 最大连续和(Easy)
这个好像不用\(\text{dp}\),直接维护一个当前的和以及当前的和对应的左端点
每次如果当前和>=0,那么就加上现在这个数,否则当前和改成现在这个数,左端点改成现在的位置(显然前面的负数没有意义)
rep(i,1,n){
if(nw>=0 && nwl) nw+=a[i];
else nwl=i,nw=a[i];
if(nw>ans){ans=nw;ansl=nwl;ansr=i;}
}
E 最大连续和(Medium)
跟D一样的做法
首先枚举左边界和右边界,然后就把二维问题转化成了一维问题,每一个数就是对应的行的左边界与右边界之间数的和,然后用上面的方法求一下最大连续和即可,复杂度 \(O(n^3)\)
F 最大连续和(Hard)
垃圾题目
一眼看上去不可做,网上翻一下题解,复杂度 \(O(nm)\) ?题目中根本没有说明 \(m\) 的范围,我以为 \(m\) 可以达到\(1\text{e}6\)……
然后就好做了,想怎么做怎么做
先记一个 \(f[i][j]\) 表示当前选到第 \(i\) 个数,当前选了 \(j\) 段,最大的收益
转移就是
\]
然后记录一个前缀MAX就可以做到 \(O(nm)\) 了,注意空间需要滚动数组优化
G 最长上升子序列(Easy)
\(O(n^2)\) 暴力dp。。。
H 最长上升子序列(Medium1)
可以证明答案就是LIS的长度
不过我用的是贪心的做法,维护一个set存储每一个拦截系统的上一个高度,每次把当前导弹赋给大于等于他的最小的那个,如果不存在,则新建一个导弹拦截系统。容易证明正确性。
注意多测。。。
I 最长上升子序列(Medium2)
把第一维排序,第二维跟着变换,求变换后的LIS
注意输出的时候road和roads不一样,而且king的首字母小写,两个test之间有一个换行。。。
J 最长公共子序列(Easy)
为什么HDU的题这么多都没有数据范围啊。。。
直接写显然是 \(O(nm)\) 的,然后把数组开到 \(5000 \times 5000\),就过了。。。
K 最长公共子序列(Medium)
跟上一题基本一样,不过有数据范围(
随机推荐
- Codeforces Round #385 (Div. 2) Hongcow Builds A Nation —— 图论计数
题目链接:http://codeforces.com/contest/745/problem/C C. Hongcow Builds A Nation time limit per test 2 se ...
- js里=、== 和===有什么区别?
说明:该文章是转载后进行修改完善的,望大家有收获. =是赋值运算符,==是关系运算符; ===是全等运算符. ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等.第一个 ...
- 常见的LINUX发行版安装libiconv库方法
今天编译程序,发现程序报错,如下 cannot find -liconv collect2: ld returned 1 exit status 或者 undefined reference to ` ...
- 使用jQuery集成Google翻译
利用jQuery,轻松将google翻译集成到你的web应用中. 1. [代码][JavaScript]代码 1<script src="Scripts/Translator ...
- hdu-5621 KK's Point(dp+数学)
题目链接: KK's Point Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- openssl生成公钥私钥对 加解密
在计算机软件开发世界中,编程语言种类极多,数据在各种语言的表现形式可能有所差异,但数据本身的处理可能,或者说本质上是完全一样的:比如数据在某个算法中的运算过程是一样的.在这里,我以加密与解密来作为例子 ...
- js跳转方式 【转】
第一种: <script language="javascript" type="text/javascript"> wi ...
- 采用个hook技术对writefile函数进行拦截(2)
http://www.cnblogs.com/zhxfl/archive/2011/11/03/2233846.html 这个是笔者之前写过的WriteFile HOOK代码 必须补充对这几个函数的H ...
- 洛谷P4092树——并查集
题目:https://www.luogu.org/problemnew/show/P4092 利用并查集,倒序离线,那么从倒序来看被撤销标记的点就再也不会被标记,所以用并查集跳过: 莫名其妙的WA,调 ...
- JS正则对象 RegExp(有变量的时候使用),用来匹配搜索关键字(标红)
1,平常我们写js正则规则的时候,一般是这样写: var reg = /abc/; 然而,这样写的话,如果abc是一个变量这样就不行,我们需要下面这种写法: var abc = "汉字&qu ...