LA 4726 斜率DP

来源:互联网 发布:渐变颜色搭配的数据 编辑:程序博客网 时间:2024/05/18 07:57
#include<cstdio>#include<cstring>using namespace std;int d[100100],q[100100];char str[100100];double cal(int a,int b){return 1.0*(d[b]-d[a])/(1.0*b-a);}int main(){int T,n,len;scanf("%d",&T);while(T--){int t=0;scanf("%d%d",&n,&len);scanf("%s",str);d[0]=0;for(int i=1;i<=n;i++)if(str[i-1]=='1')d[i]=d[i-1]+1;elsed[i]=d[i-1];double res=-1;int l=1,r=0,resl,resr;for(int i=len;i<=n;i++){while(l<r&&cal(q[r],i-len)<=cal(q[r-1],q[r]))r--;q[++r]=i-len;while(l<r&&cal(q[l],i)<=cal(q[l+1],i))l++;double t=cal(q[l],i);if(t>res){res=t;resl=q[l];resr=i;}}printf("%d %d\n",resl+1,resr);}}

原创粉丝点击