【BZOJ5090】组题 分数规划
【BZOJ5090】组题
Description
Input
第一行包含两个整数n,k(1<=n<=100000,1<=k<=n),分别表示题目的总量和题数的下界。
Output
输出一个既约分数p/q或-p/q,即平均难度系数的最大值。
Sample Input
1 4 -2 -3 6
Sample Output
5/4
题解:傻题,直接二分答案,然后就变成问你有没有一段区间长度>=K且和>0。直接将区间和变成前缀相减,然后维护个前缀最小值即可。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const int maxn=100010;
double b[maxn];
int a[maxn],sb[maxn];
ll sa[maxn];
int n,k;
ll P,Q,g;
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-') f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+(gc^'0'),gc=getchar();
return ret*f;
}
ll gcd(ll a,ll b)
{
return !b?a:gcd(b,a%b);
}
bool check(double mid)
{
int i;
for(i=1;i<=n;i++) b[i]=b[i-1]+a[i]-mid,sb[i]=(b[i]<b[sb[i-1]])?i:sb[i-1];
for(i=k;i<=n;i++)
{
if(b[i]-b[sb[i-k]]>0)
{
P=sa[i]-sa[sb[i-k]],Q=i-sb[i-k];
return 1;
}
}
return 0;
}
int main()
{
n=rd(),k=rd();
int i;
for(i=1;i<=n;i++) a[i]=rd(),sa[i]=sa[i-1]+a[i];
double l=-1e8,r=1e8,mid;
for(i=1;i<=100;i++)
{
mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
}
g=gcd(P,Q);
g=g>0?g:-g;
if(g) P/=g,Q/=g;
printf("%lld/%lld",P,Q);
return 0;
}
【BZOJ5090】组题 分数规划的更多相关文章
- bzoj5090组题 分数规划
组题 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 542 Solved: 114[Submit][Status][Discuss] Descript ...
- bzoj5090 [Lydsy1711月赛]组题 分数规划
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5090 题解 令 \(s_i\) 表示 \(a_i\) 的前缀和. 那么平均难度系数就是 \[ ...
- BZOJ5090 组题 BZOJ2017年11月月赛 二分答案 单调队列
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5090 11月月赛A题 题意概括 给出n个数. 求连续区间(长度大于等于k)最大平均值. 题解 这题 ...
- BZOJ5090: [Lydsy1711月赛]组题(01分数规划)
5090: [Lydsy1711月赛]组题 Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 785 Solved: 186[Submit][Status ...
- Yougth的最大化(好题,二分查找 0 1分数规划)
Yougth的最大化 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价 ...
- 【poj 2976】Dropping tests(算法效率--01分数规划 模版题+二分){附【转】01分数规划问题}
P.S.又是一个抽时间学了2个小时的新东西......讲解在上半部分,题解在下半部分. 先说一下转的原文:http://www.cnblogs.com/perseawe/archive/2012/05 ...
- bzoj5090[lydsy11月赛]组题
裸的01分数规划,二分答案,没了. #include<cstdio> #include<algorithm> using namespace std; const int ma ...
- POJ2976 题解 0/1分数规划入门题 二分
题目链接:http://poj.org/problem?id=2976 关于 0/1分数规划 参见 这篇博客 实现代码如下: #include <cstdio> #include < ...
- 【转】[Algorithm]01分数规划
因为搜索关于CFRound277.5E题的题解时发现了这篇文章,很多地方都有值得借鉴的东西,因此转了过来 原文:http://www.cnblogs.com/perseawe/archive/2012 ...
随机推荐
- 在ABBYY中如何修正倾斜的PDF页面
作为一名文案工作者,每天都要跟各种PDF文件打交道,合同.报价单.协议书等等等,通常提供给客户的都是扫描之后的PDF文档,虽说都是机器扫描,但毕竟是人为放置的,难免位置放置不齐,导致扫描出来的文档出现 ...
- Openlayers 3计算长度和面积
1.比较粗糙的计算方式 计算长度 var length = lineFeature.getGeometry().getLength(); if (length > 1000) { length ...
- PHP 使用redis
<?php /*从平台获取数据库名*/ $dbname = ""; /*从环境变量里取host,port,user,pwd*/ $host = ''; $port = ''; ...
- MTK 时区修改
1.修改packages/apps/Settings/res/xml-xx-xx/timezones.xml (xx-xx表示不同的语言和区域),添加下面的内容: <!-- timezo ...
- JSP面试知识
JSP方面 1. JSP四种范围是什么?区别是什么? Page:指单单一页jsp page的范围: Request:的范围只在一jsp页发出请求到另一页之间,随后这个属性失效: Session:范围是 ...
- [转]Struts2多个文件上传
转载至:http://blog.csdn.net/hanxiaoshuang123/article/details/7342091 Struts2多个文件上传多个文件上传分为List集合和数组,下面我 ...
- Python中的类(下)
本文将介绍一下类的构造函数和初始化函数,以及如何通过"魔术方法"定制一个类. 类构造和初始化 在前面的文章中,经常使用初始化函数"__init__",下面看看& ...
- Linux ping 命令
ping命令用来测试与目标主机的连通性,常见用法如下: [root@localhost ~]$ ping www.baidu.com # 对目标主机域名进行连通性测试 [root@localhost ...
- Ansible的Playbook的编写
在Ansible中,将各个模块组合起来成为一个YAML格式的配置文件,这个配置文件叫做Playbook, Playbook和模块的关系类似于shell脚本和Linux命令之间的关系. Playbook ...
- Unity3D Shader官方教程翻译(十九)----Shader语法,编写表面着色器
Writing Surface Shaders Writing shaders that interact with lighting is complex. There are different ...