[HDU1003]最长子序列和

http://acm.hdu.edu.cn/showproblem.php?pid=1003

解题关键:1、最大连续子序列和模板

    2、max、end不能使用,在oj中会显示编译错误

    3、注意模板中没有else if

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cstdlib>
 5 #define INF 10000000
 6 using namespace std;
 7 typedef long long ll;
 8 int n,a[1000002],st,end1;
 9 int max_sub(){
10     int max1=-INF,temp_sum=0,k=0;
11     for(int i=0;i<n;i++){
12         temp_sum+=a[i];
13         if(temp_sum>max1){ max1=temp_sum;st=k;end1=i;}
14         if(temp_sum<0){ temp_sum=0;k=i+1;}
15     }
16     return max1;
17 }
18 int main(){
19     int t;
20     scanf("%d",&t);
21     for(int i=1;i<=t;i++){
22         scanf("%d",&n);
23         for(int j=0;j<n;j++){
24             scanf("%d",a+j);
25         }
26         int ans=max_sub();
27         printf("Case %d:\n%d %d %d\n",i,ans,st+1,end1+1);
28         if(i!=t) printf("\n");
29     }
30     return 0;
31 }
时间: 2024-08-01 06:25:43

[HDU1003]最长子序列和的相关文章

nyoj 题目17 单调递增最长子序列

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 复习了利用二分搜索和额外空间解决最长递增子序列问题,最重要的是二分搜索的

单调递增最长子序列(南阳oj17)(经典dp)

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 来源 经典题目 上传者 iphxer #include<std

NYOJ 17 单调递增最长子序列

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 动归,不多说,看代码: #include<stdio.h>

算法实验--最长子序列

一.实验目的: 熟悉掌握动态规划法设计技术 二.实验要求: 1.按教材所授内容要求,完成“最长公共子序列问题”算法.得到一个完整正确的程序. 2.问题规模:不少于100 3.输出最终结果. 三.实验设备: PC机一台 Vc++6.0编译软件一套 四.问题描述: 若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij.例如,序列Z={B,C,D,B}是序列X={A

最长子序列问题 最详细的解题报告

最长子序列之和问题 算法一:暴力法(时间复杂度:O(N^2)) 算法描述:依次求从j到i中最大的和,并将最大的和记录在maxValue中,容易理解但是效率低. 1 static int MaxSum1(int[] arr) { 2 int maxValue = Integer.MIN_VALUE; 3 for (int i = 0; i < arr.length; i++) { 4 int curSum = 0; 5 for (int j = 0; j <= i; j++) { 6 curSu

erlang 小程序:整数序列,搜索和为正的最长子序列

最近学习了一下erlang, 编了个小程序 算法如下: 把参数分为三个 当前位置的前子序列(Save)(比如 -5, 1,2,-1, _, ... ) 前位置为_时, 前子序列就是 1,2,-1 以及此子序列的和(CurSum) ( 1,2,-1的 CurSum 是 2) 剩余的数 Rest:  剩余的数也可以表示为 [H|T] ,H是第一元素,T为剩余的元素是列表 处理过程如下: 如果 Rest 为空,说明处理完毕,打印 CurSum和Save 如果,还剩一个元素(Rest只有一个元素) 如果

【动态规划】单调递增最长子序列

问题 D: [动态规划]单调递增最长子序列 时间限制: 1 Sec  内存限制: 128 MB提交: 36  解决: 25[提交][状态][讨论版] 题目描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 解题思

NYOJ-17-单调递增最长子序列【动态规划】

单调递增最长子序列 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 来源 经典题目 上传者 iphxer #include<stdio

HDU 1160 FatMouse&#39;s Speed--dP--(元素1递增元素2递降的最长子序列)

题意:找到体重递增速度递降的最长序列 分析:和最长递增子序列一样,不过这里先做处理:先把体重按递增排序,然后找最长递降子序列即可 代码: #include<iostream> #include<algorithm> #include<cstdio> using namespace std; struct node{ int w,s; int t; }a[2000]; int n,i; struct h{ int x; int pre; }dp[2000]; int an