【集训笔记】动态规划【HDOJ1159【HDOJ1003
终于开始DP了】
HDOJ_1159 Common Subsequence
Sample Input
abcfbc abfcab
programming contest
abcd mnp
Sample Output
4
2
0
子结构特征:
max(f(i-1,j),f(i,j-1)) (a[i]!=b[j])
由于f(i,j)只和f(i-1,j-1), f(i-1,j)和f(i,j-1)有关, 而在计算f(i,j)时,
只要选择一个合适的顺序, 就可以保证这三项都已经计算出来了,
这样就可以计算出f(i,j). 这样一直推到f(len(a),len(b))就得到所要求的解了.
#include <stdio.h>
#include <string.h>
int main() {
int t,i,j,lena,lenb;
char a[],b[];
int map[][];
while(EOF != scanf("%s %s",a,b)){
lena=strlen(a);
lenb=strlen(b);
memset(map , ,sizeof(map));
for(i=;i<=lena;i++){
for(j=;j<=lenb;j++){
if(a[i-] == b[j-])
map[i][j] = map[i-][j-] + ;
else if(a[i-] != b[j-]){
int temp = map[i-][j];
if(map[i][j-] > temp)
temp = map[i][j-];
map[i][j] = temp;
}
}
}
printf("%d\n",map[lena][lenb]);
}
return ;
}
HDOJ1003
#include <stdio.h>
#define MAX 100005
int nNum[MAX];
int start, end;
//算法思路:用sum和max来记录临时最大和最终最大
//而start end ts te 分别用来记录起点 终点 临时起始点 终点
int cal(int len){
int max, i, sum, ts, te;
sum = max = -; //让max和sum开始置于无限小
for(i = ; i < len; i++){
if(sum < ){
if(nNum[i] > sum){
sum = nNum[i];
ts = te = i;
if(max < sum){
max= sum;
start = ts;
end = te;
}
}
}else{
sum += nNum[i];
te = i;
if(sum > max){
max = sum;
start = ts;
end = te;
}
}
}
return max;
}
int main(){
int t, i, n, j;
while(EOF != scanf("%d", &t)){
for(i = ; i <= t; i++){
scanf("%d", &n);
for(j = ; j < n; j++)
scanf("%d", &nNum[j]);
int max = cal(n);
printf("Case %d:\n", i);
printf("%d %d %d\n", max, start + , end + );
if(i != t)
printf("\n");
}
}
return ;
}
【集训笔记】动态规划【HDOJ1159【HDOJ1003的更多相关文章
- 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...
- leetcode笔记 动态规划在字符串匹配中的应用
目录 leetcode笔记 动态规划在字符串匹配中的应用 0 参考文献 1. [10. Regular Expression Matching] 1.1 题目 1.2 思路 && 解题 ...
- 2019暑期金华集训 Day7 动态规划
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...
- 【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546
http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.zju.edu.cn/onlinejudge/showContestProblem. ...
- QDEZ集训笔记【更新中】
这是一个绝妙的比喻,如果青岛二中的台阶上每级站一只平度一中的猫,差不多站满了吧 自己的理解 [2016-12-31] [主席树] http://www.cnblogs.com/candy99/p/61 ...
- [英语学习]微软面试前英语集训笔记-day 1
最近有机会参加微软面试前的英语集训. 第一天是由wendy老师主讲.热场题目是介绍你自己.包括你的姓名,家庭hobby,爱好,专业,学校,工作经历等等. 接下来的主题是friendship.给我印象较 ...
- [笔记]动态规划(dynamic programming)
动态规划与分治方法都是通过组合子问题的解来求解原问题,区别在于:分治方法将问题划分为互不相交的子问题,递归求解子问题,再将它们的解组合起来,求出原问题的解.分治算法可能反复的求解某些公共子问题,从而使 ...
- 【集训笔记】博弈论相关知识【HDOJ 1850【HDOJ2147
以下资料来自:http://blog.csdn.net/Dinosoft/article/details/6795700 http://qianmacao.blog.163.com/blog/stat ...
- 【集训笔记】母函数【母函数模板】【HDOJ1028【HDOJ1085
以下资料摘自 http://www.cnblogs.com/wally/archive/2012/07/13/hdu1028_1085_1171_.html 生成函数是说,构造这么一个多项式函数g(x ...
随机推荐
- 阿里云ECS每天一件事D2:配置防火墙
在linux中配置防火墙是一件比较有风险的事情,尤其是在ECS中,一个不当心的操作,可能就会需要重置服务器. 包括阿里云的官方建议,不要配置防火墙,没有必要什么的吧啦吧啦…… (http://bbs. ...
- Scrambled Polygon(凸多边形,斜率)
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7805 Accepted: 3712 ...
- IOS文件沙盒
在进行IPhone开发的时候,常常需要将简单的数据保存到文件中,以便下次再重新打开的时候能够读取文件中保存的数据. 下面就来做一个简单的demo: 步骤: 1.创建一个SingleView项目,带有x ...
- 各浏览器对 window.open() 的窗口特征 sFeatures 参数支持程度存在差异
标准参考 无. 问题描述 使用 window.open 方法可以弹出一个新窗口,其中 open 方法的 sFeatures 参数选项在各浏览器中支持程度不一,这有可能导致同样的代码使各浏览器中弹出窗口 ...
- Ext JS学习第九天 Ext基础之 扩展原生的javascript对象
此文来记录学习笔记: •Ext对于原生的javascript对象进行了一系列的扩展,我们把他们掌握好,更能深刻的体会Ext的架构,从而对我们的web开发更好的服务, 源码位置,我们可以从开发包的这个位 ...
- CSS3属性之border-radius
一.语法: 代码如下: border-radius : none | <length>{1,4} [/ <length>{1,4} ]? 二.取值: <length& ...
- Servlet的学习笔记
一.Servlet生命周期 init(ServletConfig config) ----->初始化 service(ServletRequest req, ServletResponse r ...
- 【转载】Google Analytics 使用图文全攻略
转载自:Google Analytics 使用图文全攻略 最近一段时间,因为工作的需要,小励使用GA(GA是Google Analytics的简称)比较频繁,所以花时间研究了一下,从不太了解到会使用( ...
- Python:爬取乌云厂商列表,使用BeautifulSoup解析
在SSS论坛看到有人写的Python爬取乌云厂商,想练一下手,就照着重新写了一遍 原帖:http://bbs.sssie.com/thread-965-1-1.html #coding:utf- im ...
- r语言之生成规则序列,规则序列函数及用法
在生成序列时,“:”的优先级最高 (1)从1到20的整数序列: > 1:20 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (2) ...