动态规划就是寻找最优解的过程

最重要的是找到关系式

hdu 1003

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003

题目大意:求最大字序列和,其实就是分成

以0结尾的序列

以1结尾的序列

以2结尾的序列

...

以n结尾的序列

所以以n结尾的序列的最大值就是以n-1结尾的序列的最大值+n的值

或最大值是n的值

关系式: d[i]=max(d[i-1]+a[i],a[i]) d[i]为以i结尾的序列和的最大值,a[i]为第i个数的值

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
long long a[];
long long d[];
int t[];
int main()
{
int T,k=,mi;
long long maxi=-,m=;
cin>>T;
while(T--)
{
int flag=;
int x=;
maxi=-;
m=;
int n,p;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
d[]=;
for(int i=;i<=n;i++)
{ if(d[i-]+a[i]>=a[i])
d[i]=d[i-]+a[i];
else
d[i]=a[i];
}
for(int i=;i<=n;i++)
{
if(d[i]>maxi)
{
maxi=d[i];
p=i;
} }
for(int j=p;j!=;j--)
{
m=m+a[j]; if(m==maxi)
{
t[x]=j;
}
}
sort(t,t+x);
mi=t[];
while(a[mi-]==&&mi!=)
{
mi--;
if(mi==)
break;
} cout<<"Case "<<k++<<":"<<endl;
cout<<maxi<<" "<<mi<<" "<<p<<endl;
if(T!=)
cout<<endl;
}
return ;
}

hdu 1087

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087

题目大意:找出最大字序列和,其中字序列不一定是相邻的数,但需满足v[i]<v[j] 其中i<j

题解: 与上题一样,都是以d[n]结尾的字序列,不同的是它不能只根据d[n-1]就得到,需要从0~n-1的d[]值依次与d[n]判断,求最大值

关系式:d[i]=max{d[j]+v[i],v[i]}

#include<iostream>
using namespace std;
int v[];
int d[];
int main()
{
int n,i,j,max;
while(cin>>n)
{
if(n==)
break;
for(i=;i<n;i++)
cin>>v[i];
max=v[];
d[]=v[];
for(i=;i<n;i++)
{
d[i]=v[i];
for(j=;j<i;j++)
{
if(v[i]>v[j])
{
if(d[i]<d[j]+v[i])
d[i]=d[j]+v[i];
}
}
if(d[i]>max) //注意一直更新最大值
max=d[i];
} cout<<max<<endl; }
return ;
}

dp 动态规划 hdu 1003 1087的更多相关文章

  1. (DP)HDU - 1003 Max Sum

    这是一道DP入门题目,知识点是“最大连续子序列” 题目大意:给你一个长度为n的数字序列,取其中一段连续的序列,要求和最大: 分析:这是一道裸题,没有什么花里胡哨的东西,主要是写出状态转移方程 dp[i ...

  2. HDOJ(HDU).1003 Max Sum (DP)

    HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...

  3. hdu 1003 MAX SUM 简单的dp,测试样例之间输出空行

    测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...

  4. HDU 1003 Max Sum --- 经典DP

    HDU 1003    相关链接   HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...

  5. hdu 1003 hdu 1231 最大连续子序列【dp】

    HDU1003 HDU1231 题意自明.可能是真的进步了点,记得刚开始研究这个问题时还想了好长时间,hdu 1231还手推了很长时间,今天重新写干净利落就AC了. #include<iostr ...

  6. (转)dp动态规划分类详解

    dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...

  7. 【ToReadList】六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)(转载)

    问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个. 比如例如给定序列: { -2, 11, -4, 13, -5, -2 } 其最大连续子序列为{ 11, ...

  8. HDU 1003(A - 最大子段和)

    HDU   1003(A - 最大子段和) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/A 题目: ...

  9. DP动态规划练习

    先来看一下经典的背包问题吧 http://www.cnblogs.com/Kalix/p/7617856.html  01背包问题 https://www.cnblogs.com/Kalix/p/76 ...

随机推荐

  1. xcopy /r /y "$(TargetPath)" "$(ProjectDir)"..\CMSAdmin\DLL\

    作用:1.所有都生成这里容易管理 2.tfs获取的时候不会有出问题 3.如果都是引用项目 会存在先后顺序 也会导致生成代码的时候出问题

  2. java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: x

    我的x值是2 我的SQL语句采用的是预编译的形式,我先单独把SQL语句提出来在数据库里运行正常,值也传输正常.仔细查了一下预编译的代码,发现当时粘贴复制 忘把序号修改了,改正后

  3. scoi 2008 && bzoj 1076 奖励关

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 思路:15?好,状压,OK. 这是转移方程 if((s[k]&j)==s[k] ...

  4. lua 和 c/c++ 交互 (持续更新)

    参考: http://blog.csdn.net/xiaohuh421/article/details/7476485 http://blog.csdn.net/shun_fzll/article/d ...

  5. 启动tomcat时,报错:IOException while loading persisted sessions: java.io.EOFException解决方法

    报错原因:加载持久化session错误,tomcat加载时读取的文件是是*.ser,session序列化文件,文件的位置是tomcat\work\Catalina\localhost,找到sessio ...

  6. divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句

    #!/usr/bin/env python a = 10/3 print(a) #divmod计算商与余数 r = divmod(10001,20) print(r) #eval可以执行一个字符串形式 ...

  7. TomTom (16Q3)数据协议基础

    title: TomTom数据协议介绍 title: TomTom数据协议介绍TomTom公司介绍主要经营的业务TomTom数据特点数据内容概述数据表命名特点数据关联特点数据的基本信息 TomTom公 ...

  8. python os模块(2)

    os模块主要用于:目录.文件(删除.判断.分割文件名和后缀) 目录 (1)获取当前目录(2)修改目录(3)生成目录(4)删除目录(5)查看目录下的内容(6)重命名目录(7)修改时间属性(8)链接目录( ...

  9. 界面布局之表格布局TableLayout+TableRow

    一.基础知识: TableLayout置底,TableRow在TableLayout的上面,而Button.TextView等控件就在TableRow之上, 另外,TableLayout之上也可以单独 ...

  10. [git] git代理及常用命令,远程桌面代理

     1.代理 公司只能内网,上外网只能用代理,坑货! 2. 更新代码命令    1)下载代码:git clone ------------    2) 指定目录: cd 文件名    3)git add ...