您的位置:首页 > Web前端

codeforces 363B round211 div2 B. Fence

2013-11-11 20:37 363 查看
简单模拟题

一定要细心!!!无语

题目意思是给你两个整数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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 acm codeforces 模拟