入门OJ 3792: [Noip模拟题]发射站 (单调栈)
题目
Description
有N
个能量发射站排成一行,每个发射站i
都有不相同的高度
Hi
,并能向两边(当然两端的只能向一边)同时发射能量值为Vi
的能量,并且发出的能量只被两边最近的且比它高的发射站接收。显然每个发射站发来的能量有可能被0
或1
或2
个其它发射站接收,特别是为了安全,它受到的能量总和是我们很关心的。由于数据很多,请你帮助我们计算出接受了最多能量的发射站接受的能量是多少。
有N
个能量发射站排成一行,每个发射站i
都有不相同的高度
Hi
,并能向两边(当然两端的只能向一边)同时发射能量值为Vi
的能量,并且发出的能量只被两边最近的且比它高的发射站接收。显然每个发射站发来的能量有可能被0
或1
或2
个其它发射站接收,特别是为了安全,它受到的能量总和是我们很关心的。由于数据很多,请你帮助我们计算出接受了最多能量的发射站接受的能量是多少。
给定一个数字字符串,用最少次数的加法让字符串等于一个给定的目标数字。每次加法就是在字符串的某个位置插入一个加号。在需要的所有加号都插入后,就象做普通加法那样来求值。例如,考虑字符串"12"
,做0
次加法,我们得到数字12
。如果插入1
个加号,我们得到3
。因此,这个例子中,最少用1
次加法就得到数字3
。再举一例,考虑字符串"303"
和目标数字6
,最佳方法不是3+0+3
,而是3+03
。能这样做是因为1
个数的前导0
不会改变它的大小。写一个程序来实现这个算法。
Sylvia 是一个热爱学习的女孩子。
前段时间,Sylvia 参加了学校的军训。众所周知,军训的时候需要站方阵。
Sylvia
所在的方阵中有n*m
名学生,方阵的行数为n
,列数为m
。
为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从1
到n*m
编上了号码(参见后面的样例)。即:初始时,第i
行第j
列
的学生的编号是(i - 1) * m + j
。
您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:
翻转一个区间,例如原有序序列是5 4 3 2 1
,翻转区间是[2,4]
的话,结果是5 2 3 4 1
方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。
这排玉米一共有N
株,它们的高度参差不齐。
方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。
方伯伯可以选择一个区间,把这个区间的玉米全部拔高1单位高度,他可以进行最多K次这样的操作。拔玉米则可以随意选择一个集合的玉米拔掉。
问能最多剩多少株玉米,来构成一排美丽的玉米。
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6. 求x的后继(后继定义为大于x,且最小的数)
Hello World