[USACO14MAR] Sabotage 二分答案 分数规划
[USACO14MAR] Sabotage 二分答案 分数规划
最终答案的式子:
\]
转换一下:
\sum (a[j]-ans)\le 0 \\
(j\in[1,l-1],[r+1,n])
\]
这里我们先都减去\(ans\),然后求一个前缀和、后缀和、在\(i\)点最小的前缀和,在\(i\)点最小的后缀和,\(O(n)\)枚举断点(也不算断点)如果存在则return 1
#include <cstdio>
#include <algorithm>
#define MAXN 100010
using namespace std;
int n;
int m[MAXN];
double psum[MAXN],lsum[MAXN],psum_min[MAXN],lsum_min[MAXN],a[MAXN];
const double eps=1e-6;
inline bool check(double x){
for(int i=0;i<=n+1;++i) psum_min[i]=lsum_min[i]=1e9;
for(int i=1;i<=n;++i) a[i]=(double)m[i]-x;
for(int i=1;i<=n;++i) psum[i]=psum[i-1]+a[i], psum_min[i]=min(psum_min[i-1], psum[i]);
for(int i=n;i;--i) lsum[i]=lsum[i+1]+a[i], lsum_min[i]=min(lsum_min[i+1], lsum[i]);
for(int i=1;i<n-1;++i)
if(psum_min[i]+lsum_min[i+2]<=0) return 1;
return 0;
}
int main(){
scanf("%d", &n);
for(int i=1;i<=n;++i) scanf("%d", &m[i]);
double l=1,r=10000,ans=-1;
while(r-l>eps){
double mid=(l+r)/2;
if(check(mid)) r=mid,ans=mid;
else l=mid;
}
printf("%.3lf", ans);
}
[USACO14MAR] Sabotage 二分答案 分数规划的更多相关文章
- [USACO14MAR] 破坏Sabotage(二分答案,分数规划)
题目链接 Solution 去掉中间一段区间 \([l,r]\) 后剩下的平均值可以表示为 : \[\frac{\sum^{n}_{i=1}{v_i}-\sum^{r}_{i=l}{v_i}}{n-( ...
- [USACO14MAR]破坏Sabotage 二分答案
题目描述 Farmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer John's milking equipmen ...
- BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)
现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...
- BZOJ 3477: [Usaco2014 Mar]Sabotage( 二分答案 )
先二分答案m, 然后对于原序列 A[i] = A[i] - m, 然后O(n)找最大连续子序列和, 那么此时序列由 L + mx + R组成. L + mx + R = sum - n * m, s ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- 【Luogu】P3705新生舞会(费用流+分数规划+二分答案)
题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2} ...
- [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这 ...
- [SDOI2017] 新生舞会 - 二分图最大权匹配,分数规划,二分答案
有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二 ...
- 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...
随机推荐
- [BZOJ5197] [CERC2017]Gambling Guide
[BZOJ5197] [CERC2017]Gambling Guide 题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5197 Solut ...
- java之mybatis之缓存
1.mybatis自带缓存功能.分为一级缓存,二级缓存. 2.一级缓存为 session 缓存,在一个 session中 ,一个查询的 select 语句只会执行一次,根据 <select&g ...
- vue动态循环出的多个select出现过的变为disabled
<template> <div class="artcle"> <el-form label-width="100px" :mod ...
- Vue学习之npm常用命令及参数小结(十四)
NPM几个常用命令和参数的意思: npm install packagename 安装模块如不指定版本号 默认会安装最新的版本 npm install packagename 0.0.1 安装指定版本 ...
- React Native 开发豆瓣评分(七)首页组件开发
首页内容拆分 看效果图,首页由热门影院.豆瓣热门.热门影视等列表组成,每个列表又由头加横向滑动的 电影海报列表构成. 所以可以先把页面的电影海报.评分.列表头做成组件,然后在使用 ScrollView ...
- VLC祥解
功能部份: VLC媒體播放器的核心是libvlc ,它提供了界面,應用處理功能,如播放列表管理,音頻和視頻解碼和輸出,線程系統.所有libvlc源文件設在的/src目錄及其子目錄: # con ...
- unity 用LineRender画四边形并测面积
作为一个菜鸡,这个高中数学题差不多废了我两个上午...好了,废话不多说,直接上代码... using System.Collections.Generic; using UnityEngine; pu ...
- scrapy文件管道
安装scrapy pip install scrapy 新建项目 (python36) E:\www>scrapy startproject fileDownload New Scrapy pr ...
- sublime text3常用的一些快捷键
--------------------------------下面的内容可以打印出来贴在电脑旁提醒自己-------------------- Ctrl + Shift + D 快速复制当前的一行 ...
- python测试开发django-42.xadmin自定义菜单项
前言 xadmin后台的菜单项是放到一个app下的,并且里面的排序是按字母a-z排序,有时候我们需要划分多个项,需要自定义菜单列表,可以通过重写CommAdminView类实现.xadmin后台提供了 ...