简单DP入门四连发
复习一下一直不太懂的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入门四连发的更多相关文章
- HDU 2084 数塔(简单DP入门)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 简单DP入门(一) 数字三角形
数字三角形
- 简单DP入门(二) 最长上升子序列及其优化
最长上升子序列解决问题: 有N个数,求出它最长的上升子序列并输出长度. 在题里不会讲的这么直白,这个算法往往会与其他的算法混在一起使用. 在这篇文章中不会出现其他的例题,为了让大家更好的理解,我只会对 ...
- 微服务(入门四):identityServer的简单使用(客户端授权)
IdentityServer简介(摘自Identity官网) IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序的中间件 ...
- hdu3555 Bomb 数位DP入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...
- 【专章】dp入门
动态规划(简称dp),可以说是各种程序设计中遇到的第一个坎吧,这篇博文是我对dp的一点点理解,希望可以帮助更多人dp入门. ***实践是检验真理的唯一标准,看再多文章不如自己动手做几道!!!*** 先 ...
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...
- 树形dp 入门
今天学了树形dp,发现树形dp就是入门难一些,于是好心的我便立志要发一篇树形dp入门的博客了. 树形dp的概念什么的,相信大家都已经明白,这里就不再多说.直接上例题. 一.常规树形DP P1352 没 ...
随机推荐
- 吴裕雄 python 机器学习-KNN算法(1)
import numpy as np import operator as op from os import listdir def classify0(inX, dataSet, labels, ...
- CMake Error at cmake/OpenCVModule.cmake:295 (message): No extra modules found in folder:Please provide path to 'opencv_contrib/modules' folder
其实,我们使用的opencv中要用的contrib/modules 是需要额外下载并在cmakelists.txt中指定的 git clone https://github.com/opencv/ ...
- UVA11572-Unique Snowflakes-(最长不同连续子序列)
题意:给n个数,求最长不同连续子序列.n<=1e6. 解题过程: 1.记录数据存于数组 2.用左右指针l和r指向这段连续区间 3.右指针往右走,如果遇到没有存在于set集合的数就插入集合 否则左 ...
- python错题整理
1.列表list去重 l1 = [1,1,2,3,5,5,4,4,4,5,6] set1 = set(l1) # print(set1) # set是集合 l2 = list(set1) # 将集合转 ...
- yii2.0 添加组件baidu ueditor
下载uditor git clone https://github.com/BigKuCha/yii2-ueditor-widget.git 将下载的项目放到 common/wdigets目录上 修改 ...
- maven(二)基于intellij idea搭建ssm的maven项目结构
项目配置文件整合步骤 1.这里使用maven来引入项目所需要的jar包,所以也就不需要手动来管理jar包了. pom.xml 配置模板如下: <project xmlns="http: ...
- 02_数据库基础之(二)sql语句入门
1.基本增删改查操作 #一. 数据类型 常用的3中 # .字符串 例如:你的名字 我是中国人 在数据库中要使用 ‘’引起来 '苹果手机' # .整数类型 例如: 你的年龄 ,办公室的人数 个 ,直接使 ...
- 外购半成品回写PR时将同一供应商同一编码的PR合并数量回写
'); --PR 净需求 '); ---加上PR回写逻辑后 '); ---加上PR回写逻辑后 ') order by item; ---最终回写去SAP的数据 ) as LGORT ,'SAPRFC' ...
- Jmeter(十九) Md5加密操作之-------BeanShell PreProcessor(转载)
转载自 http://www.cnblogs.com/yangxia-test 背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码 ...
- 在window下搭建Vue.Js开发环境(转)
nodejs官网http://nodejs.cn/下载安装包,无特殊要求可本地傻瓜式安装,这里选择2017-5-2发布的 v6.10.3 cmd命令行: node -v //显示node版本 v6.1 ...