鸣人的查克拉

Time Limit: 1000ms
Memory Limit: 65536KB
64-bit integer IO format:  %lld      Java class name:  Main
Prev  Submit  Status  Statistics  Discuss  Next
Font Size:  +   -
Type:

  • None
  • Graph Theory
  • 2-SAT
  • Articulation/Bridge/Biconnected Component
  • Cycles/Topological Sorting/Strongly Connected Component
  • Shortest Path
  • Bellman Ford
  • Dijkstra/Floyd Warshall
  • Euler Trail/Circuit
  • Heavy-Light Decomposition
  • Minimum Spanning Tree
  • Stable Marriage Problem
  • Trees
  • Directed Minimum Spanning Tree
  • Flow/Matching
  • Graph Matching
  • Bipartite Matching
  • Hopcroft–Karp Bipartite Matching
  • Weighted Bipartite Matching/Hungarian Algorithm
  • Flow
  • Max Flow/Min Cut
  • Min Cost Max Flow
  • DFS-like
  • Backtracking with Pruning/Branch and Bound
  • Basic Recursion
  • IDA* Search
  • Parsing/Grammar
  • Breadth First Search/Depth First Search
  • Advanced Search Techniques
  • Binary Search/Bisection
  • Ternary Search
  • Geometry
  • Basic Geometry
  • Computational Geometry
  • Convex Hull
  • Pick's Theorem
  • Game Theory
  • Green Hackenbush/Colon Principle/Fusion Principle
  • Nim
  • Sprague-Grundy Number
  • Matrix
  • Gaussian Elimination
  • Matrix Exponentiation
  • Data Structures
  • Basic Data Structures
  • Binary Indexed Tree
  • Binary Search Tree
  • Hashing
  • Orthogonal Range Search
  • Range Minimum Query/Lowest Common Ancestor
  • Segment Tree/Interval Tree
  • Trie Tree
  • Sorting
  • Disjoint Set
  • String
  • Aho Corasick
  • Knuth-Morris-Pratt
  • Suffix Array/Suffix Tree
  • Math
  • Basic Math
  • Big Integer Arithmetic
  • Number Theory
  • Chinese Remainder Theorem
  • Extended Euclid
  • Inclusion/Exclusion
  • Modular Arithmetic
  • Combinatorics
  • Group Theory/Burnside's lemma
  • Counting
  • Probability/Expected Value
  • Others
  • Tricky
  • Hardest
  • Unusual
  • Brute Force
  • Implementation
  • Constructive Algorithms
  • Two Pointer
  • Bitmask
  • Beginner
  • Discrete Logarithm/Shank's Baby-step Giant-step Algorithm
  • Greedy
  • Divide and Conquer
  • Dynamic Programming
  • Tag it!

《火影忍者》中,在忍者们使用忍术的时候,需要一定的查克拉(可以看成是一种体力值)。在战斗前,大家都希望提高自己的查克拉。

鸣人发明了一种忍术,可以在短时间内提高查克拉。

在使用忍术前,鸣人需要做一个仪式,这个仪式决定之后每个时刻的一个查克拉值。这些值的使用规则是:如果在某个时刻发动这个忍术,鸣人需要先消耗该时刻的查克拉值;在某个时候结束这个忍术,鸣人能获得该时刻的查克拉值(忍术必须先发动才能结束)。当然,如果某时刻鸣人具有的查克拉值少于该时刻的查克拉值,那么鸣人是不能发动该忍术的。

由于鸣人对这个忍术还不能很好地控制,所以他最多只能发动两次该忍术,并且两次忍术不能同时发动,也就是说必须结束一次忍术才能发动下一次(第一次结束时可以立即发动第二次)。

现在仪式已经做完了,鸣人知道了自己的查克拉的初始值,以及各个时刻的查克拉值,如果他最多可以发动两次该忍术(他也可以选择发动一次或者不发动),那么他最多能达到的查克拉值是多少?

Input

输入数据只有一组,第一行包括两个整数C(0<=C<=100,000)和N(N<=10,000),表示鸣人的初始查克拉值以及仪式决定的时刻的个数。

接下来有N行,第i行包含一个整数Ai (0<=ai<=100,000),表示第i个时刻的查克拉值。

Output

输出一个整数,表示鸣人在使用忍术后能到达的最大的查克拉值。

Sample Input

Sample Input1
10 5
1
2
3
2
5Sample Input2
10 2
11
13

Sample Output

Sample Output1
15Sample Output2
10

Source

第十一届北京师范大学程序设计竞赛决赛

Author

zhanyu
#include<stdio.h>
#define N 10100
int main()
{int C,n,a[N],dp[2][N],min,max,ans;scanf("%d%d",&C,&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);min=a[0];dp[0][0]=0; ans=0;for(int i=1;i<n;i++)//从前往后,第i个位结束if(min<=C){if(min>a[i])min=a[i];dp[0][i]=a[i]-min;if(ans<dp[0][i])ans=dp[0][i];dp[0][i]=ans;}else{if(min>a[i])min=a[i];dp[0][i]=ans;}int sum=dp[0][n-1]+C;max=a[n-1]; dp[1][n-1]=0; ans=0;for(int i=n-2;i>0;i--)//从后往前,第i个位开始if(dp[0][i-1]+C>=a[i]){if(max<a[i])max=a[i];dp[1][i]=max-a[i];if(ans<dp[1][i])ans=dp[1][i];dp[1][i]=ans;if(sum<dp[0][i-1]+C+dp[1][i])sum=dp[0][i-1]+C+dp[1][i];}else{if(max<a[i])max=a[i];dp[1][i]=ans;if(sum<dp[0][i-1]+C+dp[1][i])sum=dp[0][i-1]+C+dp[1][i];}printf("%d\n",sum);
}

BNUOJ29065鸣人的查克拉相关推荐

  1. bnuoj 29065 鸣人的查克拉

    鸣人的查克拉 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format:  %lld      Java class name ...

  2. ssl1016 OJ8467-数的划分 鸣人的影分身【各种dp之8 7】

    数的划分 Description 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3 (6<n<=200,2<=k<=6),下面三种分法被 ...

  3. 鸣人的影分身(信息学奥赛一本通-T1303)

    [题目描述] 在火影忍者的世界里,令敌人捉摸不透是非常关键的.我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好的例子. 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造 ...

  4. 1303:鸣人的影分身

    [题目描述] 在火影忍者的世界里,令敌人捉摸不透是非常关键的.我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好的例子. 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造 ...

  5. 鸣人的影分身(动态规划)

    题目描述: 在火影忍者的世界里,令敌人捉摸不透是非常关键的.我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好的例子. 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出 ...

  6. 003:鸣人的影分身

    003:鸣人的影分身 总时间限制: 1000ms 内存限制: 65536kB 描述 在火影忍者的世界里,令敌人捉摸不透是非常关键的.我们的主角漩涡鸣人所拥有的一个招数--多重影分身之术--就是一个很好 ...

  7. T29389 中忍考试:宁次VS鸣人-白眼!

    题目背景 赛时答疑:https://www.luogu.org/discuss/show/47581 在进入中忍考试的最后阶段,鸣人进行了自己修炼,为的就是迎战"天才忍者"--日向 ...

  8. 机器人鸣人是哪一集_火影里的五个机器人,第一个比鸣人还厉害,机器丁次你都没见过...

    火影虽然是一部讲述众多忍者们的热血故事,但是火影里的时代并不是和古代一样,里面的生活是和现在的我们一样,在动漫里的忍者也是住的高楼,随时打电话,生病了也要去医院,也会肚子饿,也要一天三顿饭.只是火影里 ...

  9. 机器人鸣人是哪一集_火影忍者:四个机器人,机器丁次,机械鸣人,你见过哪个...

    众所周知,火影忍者陪伴了我们15年!15年间,它一直陪伴着我们的青春,陪伴着我们的热血.作为一部讲述忍者的热血动漫,他们在我们的记忆里,可是不可或缺的,优秀的作品自然有优秀的粉丝,身为粉丝,即使火影早 ...

最新文章

  1. 【深度学习】新的深度学习优化器探索(协同优化)
  2. HBase应用笔记:通过Java Api与HBase交互(转自 Taobao QA Team)
  3. 记某CMS漏洞getshell
  4. thinkphp模板常用的方法
  5. #Pragma Pack(n)与内存分配 pragma pack(push,1)与#pragma pack(1)的区别
  6. Xcode 12: building for iOS Simulator, but linking in object file built fo... for architecture arm64
  7. 【TSP】基于matlab遗传算法求解13城市旅行商问题【含Matlab源码 1255期】
  8. 《Java小游戏实现》:贪吃蛇
  9. IOMMU简述-上篇
  10. vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园
  11. HBase 官方文档中文版
  12. 1024程序员节:心疼被段子手黑得最惨的他们
  13. python绘制聚类树状图
  14. Linux中etc目录etc是什么单词的缩写
  15. Adobe是什么软件?
  16. java画板中画直线_画图板(画直线)
  17. Unity VR学习:第一人称射击游戏(1)
  18. 使用 matplotlib绘制简单图形,保存图片的方法
  19. 骏马淘金~~网赚不走弯路
  20. vConsole:H5控制台调试工具

热门文章

  1. Win11控制面板快捷键 Win11打开控制面板的多种方法
  2. 怎么设置计算机显示列表格式,(怎样显示excel的文件后缀名)excle后缀格式怎么显示...
  3. A 大吉大利,今晚吃鸡--枪械篇
  4. Android适配全面屏/刘海屏
  5. 现代医院智能化系统方案及其难点探讨
  6. 《云计算》-MySqlXmind-一张图看懂MySql知识结构
  7. pip install时报错超时(pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnec)解决方案
  8. Excel表格自动化办公(持续更新)
  9. android 系统 优化设置,优化设置 让你的Android手机快人一步
  10. 华为云sql工程师评测答题[青铜+白银]