这次的两道题目都是跟数组有关,暴力求解肯定能解出来,但会超时
路灯亮度
有一条长度为n米的街道,上面分布着一些亮度不等的路灯。每离开某盏路灯1米,该位置受该盏路灯影响的亮度就比该盏路灯的原始亮度减少1个单位,而某个特定位置的最终亮度则等于所有影响该位置的路灯亮度的最大值,而亮度的最小值为0。
输入描述:第一行输入两个正整数n和m分别表示街道长度和路灯数量,从第二行开始的m行每行两个正整数p和l分别表示路灯的位置和光亮程度(1<=p<=n)。再随后的q行每行都有一个正整数i,表示一个位置。
输出描述:输出q行表示所有的i对应的位置的亮度值
输入样例:
10 2
1 5
4 3
1
3
10
输出样例:
5
3
0
一开始的方法,初始化长度为n的数字。
依次读取路灯的位置及亮度并赋值
第一次:1 5
数据:5 4 3 2 1 0 0 0 0 0
第二次:4 3
数据:5 4 3 3 2 1 0 0 0 0
//4号位3比2大更新为3
//5号位2比1大更新为2
每次都更新一下数组,最后直接打印对应位置上的数字就行
但是跑超时了
然后换了个思路,不再更新路的位置,只记录路灯信息,然后读取一个位置,对所有路灯进行遍历
如1号位,第一个路灯影响值是5(5-abs(1-1))
第二个路灯影响值是0(3-abs(4-1))
取最大值5
剩下的依次遍历即可
这样就不超时了
其实想想
n>m,q
方法1 mn 肯定大于 mq 的遍历次数
池塘水量
某地有n个池塘,编号为i的池塘最大容积为i(从1开始编号),一开始都没有水。每天的天气状况决定了所有水池同时的水量变化,如果某天下了容积为v的雨表示所有池塘都会增加容积v的水,当然池塘满了的话水就会溢出而流走,不会影响到次日以后。如果某天天气炎热而蒸发了容积为v的水表示所有池塘都会减少容积v的水,当然池塘最多把所有水蒸发干而变成容积为0,也不会影响到次日以后。
输入描述:第一行输入两个正整数n和m分别表示池塘数量n和天气的天数m,接下来的m行每行一个数表示每天天气导致的水容积的变化,正数表示增加、负数表示减少,0表示没有变化。
输出描述:m行,每行表示当天池塘的总水容积。
输入样例:
5 3
1
3
-2
输出样例:
5
14
5
暴力方法,初始化长度为n的数组,然后依次遍历降雨量并计算输出即可。
但会超时
这里遍历到一定数值后就退出,这样采用分数