弓- Resort Hotel
题目大意:每个房间可以装下不同数量的人出掉给定方位内的房间最大容纳量的单个房间是多少
尝试1:直接暴力如果遇到范围内的就continue 写完不用测试都知道肯定超时,根据挖掉一定范围内的区间想到之前学过的前缀和,但是有和前缀和感觉不太一样所以想到了分割区间,变成前一部分,要挖去的部分,后一部分,分别求出前后的最大值进行比较。
尝试2:分为三部分写竟然也超时
尝试3:因为分三部分也超时但是分三部分这个思路应该没问题所以想哪里可以优化,我之前写的代码把查询带到循环里去了就会导致超时,那我先做一个预处理把每一步的最大时给组成一个数组弄出来,就是i的时候就是最大的人数这样就可以保证循环时不要现场查直接用这个数组就可以了。
靶-梦境巡查
这道题特别眼熟,在贪心板块感觉做过子题,但是一时半会想不出来要怎么做所以我就想尝试一下暴力,准确的说是纯模拟。但是本题的纯模拟也不好做,第一版交上去就是纯照着题目模拟写的判题后是80显示三个测试点超时。
我想优化一下这题然后就想到会不会写一个函数出来会好一点所以我就把函数单独剥离出来了即写一个函数对应的是在k出意外时的能量。我还零向量一个比较巧妙的判定需要多少的方法:
if(i!=k){cur+=b[i];}if(cur<a[i]){need+=a[i]-cur;cur=a[i];}cur-=a[i];我一开始想的是用一个remain和一个cur还有一个pre,这样凑就好麻烦。但是这种新的就完美解决,先加补给的的能源再看比当前的大还是小。这种写法就解决了我昨天晚上一直钻牛角尖但现在也想不出来钻的是什么的问题。
可惜,这种写法只是把循环提出来了并没有节省时间。