贪婪算法解决单调问题

Posted ljc20020730

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪婪算法解决单调问题相关的知识,希望对你有一定的参考价值。

 

【题目描述】 
WZK 最近收到了一个任务。 
给出一个 n 个数的序列,为 A0,A1,„„,An-1,循环移动 k 位之后,这个序列就变 成了 Ak,Ak+1,„„,An-1,A0,A1,„„,Ak-1。一种优秀的循环移动是,对于任意的 前 i(1<=i<=n)项和都满足不小于零。请给出这个序列优秀循环移动的个数。 
这道题目当然是很简单啦,但是 WZK 忙着吃小浣熊干脆面,手上油油的写不了程序,于是就麻烦你啦!如果能做到满分,他就会考虑请你吃一包哦~ 
【输入格式】 
第一行一个整数 n(1 <= n <= 10^6),表示有 n 个数。 
第二行 n 个整数,Ai(-1000 <= Ai <= 1000)表示给出的第 i 个数。 
【输出格式】 一行一个整数,表示优秀循环移动的个数。 
【样例输入】 
input#1

3 
2 2 1 

input#2

4 
-3 5 1 2 

【样例输出】 
output1: 

3 

two: 

2

然后luogu出在了月赛题里 
uim在公司里面当秘书,现在有n条消息要告知老板。每条消息有一个好坏度,这会影响老板的心情。告知完一条消息后,老板的心情等于之前老板的心情加上这条消息的好坏度。最开始老板的心情是0,一旦老板心情到了0以下就会勃然大怒,炒了uim的鱿鱼。 
uim为了不被炒,知道了了这些消息(已经按时间的发生顺序进行了排列)的好坏度,希望研究如何不让老板发怒。 
uim必须按照时间的发生顺序逐条将消息告知给老板。不过uim可以使用一种叫“倒叙”的手法,例如有n条消息,小a可以从k,k+1,k+2…n,1,2…k-1这种顺序通报。 
他希望知道,有多少个k,从k开始通报到n然后从1通报到k-1可以让老板不发怒。

 

以上是关于贪婪算法解决单调问题的主要内容,如果未能解决你的问题,请参考以下文章

贪婪算法_找零钱

算法图解-贪婪算法

算法——贪婪算法

8贪婪算法

《算法图解》——第八章 贪婪算法

Python贪婪算法