USACO Sabotage, 2014 Mar 破坏阴谋(二分+贪心)
2024-08-25 21:55:49
一开始看完这题就有个想法:
只要把大于整个序列平均数的最大连续序列就是最优?
那把整个序列都减掉平均数 在做最大连续字序列和且记录长度?
仔细思考一下并不太对;
当子序列最大但长度较大 也许也比不上删去一个超过平均数许多的机器;
盲目的贪心是错的;但找对方向问题就解决了;
我们可以发现 若删除机器后平均值越小;超过这平均值的可删除的机器就越多;
满足了单调性 ;就可以二分了;
至于check()就是基于上面的贪心;也是预处理后做最大连续字序列和做判断;
T(nlogn)
#include<cstdio>
#include<cstring>
using namespace std;
double mid,a[100010],maxx,ans,s,l,r;
int n,i,j,k;
bool check(double x)
{
int num=0;double sum=0;
for(i=2;i<n;++i)
{
if(sum+a[i]>0)
sum+=a[i],num++;
else sum=a[i],num=1;
if(sum<a[i])sum=a[i],num=1;
if((ans-1.0*sum-num*x)/(n-num)<=mid)return true;
}
return false;
}
int main()
{
// freopen("xx.in","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%lf",&a[i]);
ans+=a[i];
}
r=1e9;l=1;
while(l+1e-6<r)
{
mid=(l+r)/2;
for(i=2;i<n;++i)a[i]-=mid;
if(check(mid))r=mid;
else l=mid;
for(i=2;i<n;++i)a[i]+=mid;
}
printf("%.3lf",r+5e-6);
}
最新文章
- 在Linux配置Nginx web服务器步骤
- Android调用系统相机功能
- 我的新博客:www.wangyufeng.org
- ORA-12543: TNS:destination host unreachable
- 开源--豆瓣小组UWP,已上架应用商店
- 帝国cms栏目自定义字段首页调用
- 运行Myeclipse发生这事这是怎么回事,大神们
- 图结构练习——最小生成树(kruskal算法(克鲁斯卡尔))
- Gym 100507I	Traffic Jam in Flower Town (模拟)
- Matrix的set,pre,post调用顺序
- 未能加载文件或程序集“Common”或它的某一个依赖项。试图加载格式不正确的程序
- 腾讯云存储专家深度解读基于Ceph对象存储的混合云机制
- install scrapy
- SSH免密远程登陆及详解
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
- xadmin后台分段导出避免timeout
- Codeforces Round #524 (Div. 2) E. Sonya and Matrix Beauty(字符串哈希,马拉车)
- c# windows服务
- windows 2012 R2安装SqlServer2016提示缺少KB2919355
- Hyper-V创建固定大小虚拟机
热门文章
- axis2服务器搭建
- mac os x install redis-3.2.9
- 路飞学城Python-Day117
- jq操作table追加td
- Performance Co-Pilot
- Win 10安装mysql以及常见问题总结
- Vue学习之路第十九篇:按键修饰符的使用
- 一、简介 ELO商户类别推荐有助于了解客户忠诚度
- ubuntu 下jrtplib编译
- rtsp://192.168.1.198:554/PSIA/streaming/channels/101