摘要:
可以转换成二分答案求最大连续子段和来做。每次在a[i]的基础上减去二分出来的答案。求出长度不小于f的最大连续子段和。如果大于0,则调整下边界,否则调整上边界。求长度不小于f的最大连续子段和需要一些小技巧,比如说判断以i为终点的连续子段和,就可以看sum[i]-sum[i-f]+dp[i-f]的正负。其中dp[i]表以i为终点的最大连续子段和。具体见代码。Program cowfnc;//By_ThispoetConst maxn=100005;Var i,j,k,m,n,f,ans :Longint; l,r,mid :Longint; a,dp,sum,b :A... 阅读全文