题目链接:http://codeforces.com/problemset/problem/460/C
二分一个高度,检查时考虑这样一种贪心策略:扫描数组,如果遇到高度小于二分值的就把它和它后面连续w个数加上a[i]-mid,如果能让所有的数大于mid,则二分值是满足条件的。
这题直接暴力会超时,线段树会卡常数,建树时必须是O(n)的复杂度,我尝试一开始建立一颗线段树并把它保存起来,每次重新建树时直接memcpy,卡过了这道题。
1 |
|
题目链接:http://codeforces.com/problemset/problem/460/C
二分一个高度,检查时考虑这样一种贪心策略:扫描数组,如果遇到高度小于二分值的就把它和它后面连续w个数加上a[i]-mid,如果能让所有的数大于mid,则二分值是满足条件的。
这题直接暴力会超时,线段树会卡常数,建树时必须是O(n)的复杂度,我尝试一开始建立一颗线段树并把它保存起来,每次重新建树时直接memcpy,卡过了这道题。
1 | #include <cstdio> |