Sum-(最大子序列和)
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=652&pid=1003
题目大意:
给你一个序列,你随便找一个区间,让这个区间的所有数都变成f(x)=(1890*x+143)%10007
然后在求和 问最大的和是多少
分析:
可以把每一个x的f[x]都求出来让他们的差保存到b[N]中 求b[N]的最大子序列和
然后让刚开始序列的总和加上这个最大子序列和 就是最大的和
补充:
求最大子序列和
int maxsublinear(const int a[], int n)
{
int i;
int curSum = ; /* 当前序列和 */
int maxSum = ; /* 最大序列和 */
int begin = end = ; /* 开始循环求子序列和 */
for (i = ; i < n; i++)
{
curSum = curSum + a[i]; /* 与最大子序列和比较,更新最大子序列和 */
if (curSum > maxSum)
{
maxSum = curSum;
end = i;
} /* 动态规划部分,舍弃当前和为负的子序列 */
if (curSum < )
{
curSum = ;
begin = i + >= n ? i : i + ;
}
}
return maxSum;
}
上代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream> using namespace std;
#define N 110010
int n,a[N],i,f[N],b[N];
int main()
{ while(scanf("%d",&n)!=EOF)
{
memset(a,,sizeof(a));
memset(f,,sizeof(f));
memset(b,,sizeof(b));
int s=;
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
s+=a[i];
f[i]=(*a[i]+)%;
b[i]=f[i]-a[i];
}
int Max=,sum=;
for(i=;i<n;i++)
{
sum+=b[i];
if(Max<sum)
{
Max=sum;
}
if(sum<)
sum=;
}
printf("%d\n",s+Max);
}
return ;
}
Sum-(最大子序列和)的更多相关文章
- PAT Maximum Subsequence Sum[最大子序列和,简单dp]
1007 Maximum Subsequence Sum (25)(25 分) Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A ...
- Maximum Subsequence Sum 最大子序列和的进击之路
本文解决最大子序列和问题,有两个题目组成,第二个题目比第一个要求多一些(其实就是要求输出子序列首尾元素). 01-复杂度1 最大子列和问题 (20分) 给定KK个整数组成的序列{ N1, N2 ...
- [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
17.8 You are given an array of integers (both positive and negative). Find the contiguous sequence w ...
- HDU——1003Max Sum(子序列最大和)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- codeforces Round#381 div2
第一题: 按余数分类,1,2,3分别由哪些基数组成 1->[1][2+3][3+3+3] 2->[1+1][2][3+3] 3->[1+1+1][1+2][3] #include&l ...
- 洛谷.2042.[NOI2005]维护数列(Splay)
题目链接 2017.12.24 第一次写: 时间: 2316ms (1268ms) 空间: 19.42MB (19.5MB)(O2) 注:洛谷测的时间浮动比较大 /* 插入一段数:将这些数先单独建一棵 ...
- LeetCode practice
子集和问题:给定一组数和一个值,从这组数中选出若干个数使其和为给定的值.这是个NPC问题. 1.https://leetcode.com/problems/counting-bits/#/soluti ...
- 回溯算法 DFS深度优先搜索 (递归与非递归实现)
回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题.通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量). 基本思想 将n元问题P的状态空间E表示成 ...
- Comet OJ - Contest #3 题解
传送门 太菜了连\(D\)都做不出来没有小裙子\(QAQ\) \(A\) 暴力把所有的数对都算出来,然后\(sort\)一下就行了 const int N=505; int a[N],st[N*N], ...
- Binary Indexed Tree
我借鉴了这个视频中的讲解的填坑法,我认为非常易于理解.有FQ能力和基本英语听力能力请直接去看视频,并不需要继续阅读. naive 算法 考虑一个这样的场景: 给定一个int数组, 我们想知道它的连续子 ...
随机推荐
- C#过时方法标记
1.当遇到过时或废弃的方式 函数怎么办 [Obsolete]特性解决你的困惑 1.1:当方法已经完成相关兼容 可以保留时
- serialize可以获取form表单里面的数值
serialize属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- iTOP4418开发板7寸屏幕Android系统下横竖屏设置
Android系统屏幕旋转设置 平台: iTOP4418开发板+7寸屏幕 1. Androd4.4源码可以编译成手机模式和平板模式,讯为iTop4418 开发平台的Android系统默认编译为平板模式 ...
- Bootstrap modal使用及点击外部不消失的解决方法
这篇文章主要为大家详细介绍了Bootstrap modal使用及点击外部不消失的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Bootstrap modal使用及点击 ...
- MySQL_将ubuntu18.04上的数据库导出并导入windows10下
1.使用:mysqldump -uroot -p databasename>filename.sql databasename:要导出的数据库名. filename:指定导出sql文件的文件名. ...
- Java软件开发不同薪资级别-技术要求
15~20万 WEB应用服务器(Tomcat.Weblogic.Jetty.JBoss.WebSphere) NoSQL(Redis.MongoDB.HBase.Memcache) 消息中间件(Kaf ...
- windos快捷键
F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 SHIFT+DELE ...
- h5编写帧动画
var requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame; var ...
- 拦截导弹问题(Noip1999)
1322:[例6.4]拦截导弹问题(Noip1999) 时间限制: 1000 ms 内存限制: 65536 KB提交数: 3843 通过数: 1373 [题目描述] 某国为了防 ...
- adb 设备命令
一.adb 设备命令1.查看机型时,可以使用以下命令$ adb shell getprop ro.product.model 2.如果我们忘记具体系统属性的名字$ adb shell getprop ...