复习一下一直不太懂的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. python opencv3 给图片加中文

    转自:https://www.cnblogs.com/arkenstone/p/6961453.html opencv3.2将中文输出到图片上 opencv自带的putText函数无法输出utf8类型 ...

  2. python基础学习 Day19 面向对象的三大特性之多态、封装

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  3. hibernate ID

            一:主键生成策略大体分类: 1:hibernate 负责对主键ID赋值  2:应用程序自己为主键ID赋值(不推荐使用) 3:底层数据库为主键ID赋值         二:具体用法    ...

  4. KADEMLIA算法学习

    在上一篇文章中<P2P技术是什么>,我们介绍了P2P技术的特点以及发展历史.在本篇文章中,我们来介绍某一个具体的算法. 如今很多P2P网络的实现都采用DHT的方式实现查找,其中Kademl ...

  5. SAP自开发程序

    1.显示/查找SAP所有可执行程序清单,双击事务码执行. *&----------------------------------------------------------------- ...

  6. springboot 集成 redis

    导入maven依赖 <!-- springboot整合 redis --> <dependency> <groupId>org.springframework.bo ...

  7. 1.5.4、CDH 搭建Hadoop在安装之前(定制安装解决方案---配置自定义Java主目录位置)

    配置自定义Java主目录位置 注意: Cloudera强烈建议安装JDK/ usr / java / jdk-version,允许Cloudera Manager自动检测并使用正确的JDK版本.如果在 ...

  8. select字符串

    [select字符串] select通常用于选择某中的某一列.如有表Download: 通常用select选择某一列,如: 当select一个字符串时,则会返回如下值: 结论:select中传递一个字 ...

  9. 求值器本质--eval&apply

    最近跟着(How to Write a (Lisp) Interpreter (in Python))使用python实现了一个简易的scheme解释器.不得不说使用python这类动态语言实现不要太 ...

  10. PHP伪原创同义词替代代码示意

    PHP伪原创同义词替代代码示意很多网站后台都是支持PHP,虽然用同义词百度能够识别,但至少比原封不动好些,没有AI原创NLP原创度高,但也有一定的效果.下面就是PHP代码实例: <?phpreq ...