codeforces 363B round211 div2 B. Fence

69 篇文章 0 订阅
11 篇文章 0 订阅

简单模拟题

一定要细心!!!无语

题目意思是给你两个整数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/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值