题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586

题目大意就是把一段序列里面的数替换成f(x),然后让总和最大。

首先可以计算出初始的总和,以及每一个值换成f(x)的增益a[x]。

那么就是求一段子序列a[x]的最值了,经典的DP。

其实我一开始想到这个思路是因为列了一个式子:

S = sum(n)-sum(rt)+sum’(rt)-sum’(lt)+sum(lt)

=sum(n)+(sum’(rt)-sum’(lt))-(sum(rt)-sum(lt))

于是发现了就是求lt到rt差值和的最值。

最后答案加上初始的总和输出。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <string>
#define LL long long using namespace std; const int maxN = ;
int n, a[maxN];
LL s; void input()
{
s = ;
int k;
for (int i = ; i < n; ++i)
{
scanf("%d", &k);
s += k;
a[i] = (*k+)%-k;
}
} void work()
{
LL ans = , now = ;
for (int i = ; i < n; ++i)
{
if (now >= ) now += a[i];
else now = a[i];
ans = max(ans, now);
}
cout << ans+s << endl;
} int main()
{
//freopen("test.in", "r", stdin);
while (scanf("%d", &n) != EOF)
{
input();
work();
}
return ;
}

最新文章

  1. QML 从无到有 2 (移动适配)
  2. 【小白的CFD之旅】15 四种境界
  3. Dubbo_创建Dubbo服务并在ZooKeeper注册,然后通过Jar包执行
  4. 【转】ViewPager实现一个页面多个Item的显示
  5. Css中光标,DHTML,缩放的使用
  6. ZOJ-3349 Special Subsequence 线段树优化DP
  7. 《通过脚本查看哪些ip被占用》shell笔记
  8. Spring中的创建与销毁
  9. Vue + element-ui
  10. iOS Plist NSUserDefaults 数据存储
  11. Gamma原理及快速实现算法(C/C++)(转)
  12. JS获取网站StatusCode,若存在写入文件
  13. vue-修改vue项目运行端口号
  14. 产品研发团队如何融合OKR与Scrum敏捷开发?
  15. C#使用Linq to Sqlite
  16. B - Moo Volume
  17. 使用sqoop从mysql导入数据到hive
  18. webgl之3d动画
  19. Logistic Regression – Geometric Intuition
  20. C#7.0新增功能点

热门文章

  1. Java 学习 day07
  2. iOS开发之获取系统相册ALAssetLibrary
  3. Orthogonal Least Squares Learning Algorithm for Radial Basis Function Networks
  4. PHP中ob系列函数讲解(浏览器缓存技术) (转)
  5. Android系统字体规范
  6. 解压tar包中的指定文件
  7. frontend-tools
  8. nodejs模块之fs&amp;&amp;stream
  9. inline 元素的特性
  10. Tornado--基于H5图片的上传