2017.11.2 – Day 25
T1:安排活动….一道加强了一点数据范围的题,代码还是不变…排序貪心即可。
T2:這是一道纯暴力的題(表示自己打的是O(N^3),膜拜大佬)…
附图如下↓(暴力の代码@天卍龍)
暴力:
for(register int i=1;i<=n;++i)
cin>>Line[i],sum+=Line[i],Line[i]=sum;
for(register int i=l;i<=min(2*l,r);++i)
for(register int j=i;j<=n;++j)
ans=max(ans,double(Line[j]-Line[j-i])/double(i));
标算:(G老师标算实在是快…)
inline bool check(double mid)
{
for(int i=1;i<=n;++i)
b[i]=a[i]-mid;
for(int i=1;i<=n;++i)
b[i]+=b[i-1];
deque<int>q;
for(int i=l;i<=n;++i)
{
while(!q.empty()&&b[q.back()]>b[i-l])q.pop_back();
q.push_back(i-l);
if(b[i]>b[q.front()])return true;
while(!q.empty()&&q.front()<=i-r)
q.pop_front();
}
return false;
}
int main()
{
n=getint(),l=getint(),r=getint();
for(int i=1;i<=n;++i)
a[i]=getint();
double lo=0,hi=1000000;
while(hi-lo>1e-6)
{
double mid=(hi+lo)/2;
if(check(mid)) lo=mid;
else hi=mid;
}
printf("%.4f",(lo+hi)/2);
return 0;
}
T3: Mr.G的四维DP+SPFA更新真心666….