复习一下一直不太懂的dp.

dp博大精深,路还长着呢

第一题;http://acm.hdu.edu.cn/showproblem.php?pid=2084

从下往上就是水题

 #include<cstdio>
using namespace std;
int max(int x,int y)
{
if (x<y) return y;
else return x;
}
int main()
{
int t,n,yj[][],i,j;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (i=;i<=n;i++)
{
for (j=;j<=i;j++)
scanf("%d",&yj[i][j]);
}
for (i=n-;i>=;i--){
for (j=;j<=i;j++)
yj[i][j]+=max(yj[i+][j],yj[i+][j+]);
}
printf("%d\n",yj[][]);
}
return ;
}

第二题;http://acm.hdu.edu.cn/showproblem.php?pid=1231

与贪心有点像,样例能过基本就能A

 #include<cstdio>
using namespace std;
int a[];
int main()
{
int n,sum,mn,sx,sy,x,i;
while (~scanf("%d",&n))
{
if (!n) break;
int flag=;
for (i=;i<=n;i++)
{
scanf("%d",&a[i]);
if (a[i]>=) flag=;
}
if (!flag)
{
printf("0 %d %d\n",a[],a[n]);
continue;
}
sum=,mn=-;
sx=sy=x=;
for (i=;i<=n;i++)
{
sum+=a[i];
if (sum<)
{
while (a[i]<&&i<=n)
i++;
if (i<=n)
{
x=i;sum=a[i];
}
else break;
}
if (sum>mn)
{
sy=i;
sx=x;
mn=sum;
}
}
printf("%d %d %d\n",mn,a[sx],a[sy]);
}
return ;
}

第三题;http://acm.hdu.edu.cn/showproblem.php?pid=1003

和第二题差不多,只不过变成了输出头和尾的序号,注意这题对都是负数没有特别输出了,要求不同

 #include<cstdio>
using namespace std;
int a[];
int main()
{
int t,ans=,i,n,sum,sx,sy,x;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
int flag=,mx=-;
for (i=;i<=n;i++)
{
scanf("%d",&a[i]);
if (mx<a[i]) mx=a[i],sx=sy=i;
if (a[i]>=) flag=;
}
printf("Case %d:\n",ans++);
if (flag==)
{
printf("%d %d %d\n",mx,sx,sy);
if (t!=) printf("\n");
continue;
}
sum=,sx=,sy=,x=;
int mn=-;
for (i=;i<=n;i++)
{
sum+=a[i];
if (sum<)
{
while (a[i]<&&i<=n)
i++;
if (i<=n)
{
x=i;sum=a[i];
}
else break;
}
if (mn<sum)
{
sx=x;
sy=i;
mn=sum;
}
}
printf("%d %d %d\n",mn,sx,sy);
if (t!=) printf("\n");
}
return ;
}

第四题;http://acm.hdu.edu.cn/showproblem.php?pid=1087

求递增序列的最大和,有个题意设置的坑就是这个递增序列可以不连续

 #include<stdio.h>
int main()
{
int i,j,n,max,t;
int a[];
int sum[];
while(~scanf("%d",&n))
{
if (n==)
break;
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
sum[i]=a[i];
}
t=;
for(j=;j<n;j++)
{
max=;
for(i=;i<=j;i++)
{
if(a[i]<a[j])
{
if(sum[i]>max)
max=sum[i];
}
}
sum[j]=max+a[j];
if (sum[j]>t)
t=sum[j];
}
printf("%d\n",t);
}
return ;
}

简单DP入门四连发的更多相关文章

  1. HDU 2084 数塔(简单DP入门)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  2. 简单DP入门(一) 数字三角形

    数字三角形

  3. 简单DP入门(二) 最长上升子序列及其优化

    最长上升子序列解决问题: 有N个数,求出它最长的上升子序列并输出长度. 在题里不会讲的这么直白,这个算法往往会与其他的算法混在一起使用. 在这篇文章中不会出现其他的例题,为了让大家更好的理解,我只会对 ...

  4. 微服务(入门四):identityServer的简单使用(客户端授权)

    IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...

  5. hdu3555 Bomb 数位DP入门

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...

  6. 【专章】dp入门

    动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. ***实践是检验真理的唯一标准,看再多文章不如自己动手做几道!!!*** 先 ...

  7. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  8. 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...

  9. 树形dp 入门

    今天学了树形dp,发现树形dp就是入门难一些,于是好心的我便立志要发一篇树形dp入门的博客了. 树形dp的概念什么的,相信大家都已经明白,这里就不再多说.直接上例题. 一.常规树形DP P1352 没 ...

随机推荐

  1. 启用Flash Player 11.3的全屏键盘输入注意事项

    启用Flash Player 11.3的全屏键盘输入,注意以下事项: 1. HTML代码<param name=”allowFullScreenInteractive” value=”true” ...

  2. linux基本命令练习

    1. 熟悉linux命令并且练习用法以及应用场景. 初学者完成Linux系统分区及安装之后,需熟练掌握Linux系统管理必备命令,命令包括:cd.ls.pwd.clear. chmod.chown.c ...

  3. java 方法引用(method reference)

    it -> it != null等价于Objects::nonNull

  4. “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排

    “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排1. 图形界面事件处理技术是Java GUI编程核心技术,要求同学们掌握其基本原理和基本编程模型:2. 本周四理论课 ...

  5. sudo su到root或到其它用户报这种错

    一般不会出现这种情况,除非你进入的这个目录已经被删了.然后切换用户就找不到这个目录,所以报错. 这种情况下我们只要去到一个正常的目录就好了,比如:cd ~ 然后再切换,ok.

  6. enum-枚举当做key-value业务使用

    1.枚举当做key-value业务使用 package com.uwillbe.pad.enums; import java.util.ArrayList; import java.util.List ...

  7. Using promises

    [Using promises] 过去,异步方法这样写: function successCallback(result) { console.log("It succeeded with ...

  8. 七、Builder 建造器模式

    需求:需要组装复杂结构的实例 代码清单: Builder 接口: public abstract class Builder { public abstract void makeTitle(Stri ...

  9. spark streaming集成kafka接收数据的方式

    spark streaming是以batch的方式来消费,strom是准实时一条一条的消费.当然也可以使用trident和tick的方式来实现batch消费(官方叫做mini batch).效率嘛,有 ...

  10. AS不能真机调试 (转)

    经常遇到这种问题 现总结一下原因 打开手机的开发人员选项,允许USB调试 AS--->tools--->android-->Enable ADB Interation选项 勾上. A ...