简单模拟题
一定要细心!!!无语
题目意思是给你两个整数n, k ( 1<= n <= 15w)( 1<= k <= n)
表示有n个宽度相同的木板 然后给你一行n个整数代表从1到n个木板的高度h ( 1<= h <= 100)
这些木板是有序的 但是不循环
问你要拆除k个连续的木板 而且这k个木板的高度之和为所有可能性中最小时 该k个木板第一个木板的序号
想直接暴力过 先全部读入然后算出所有可能性 再找最小的 超时
然后边读边做读到可以拆除时就是有k个木板的时候开始记其木板总和找最小的
这个时候我加和k个木板的方法是用一个循环来加 也就是说外层为O(N)的复杂度 内层嵌套了O(K)的复杂度
导致整个程序的复杂度变成O(N*K) 又超时了
后来改成每次读入一个高度时 就加上, 然后减去最前面的那个高度 这个时候复杂度就变成了O(N) 然后就过了初测
结果妹的复测的时候悲剧了
就是在初始最小长度的时候我初始的是15w 真不知道想什么来着 复测挂在最后一个测点上了
最小应该初始为1500w 或者直接初始为第一个数据
然后ac
代码
http://paste.ubuntu.com/6399485/