比赛中我看了一眼题目就觉得是二分的套路,跟miaom说,结果发现miaom开始碎觉

miaom醒来以后表示这是道凸包合并(%%%)

我&wzf2000:那您快写啊

miaom:我不会写啊

莫名其妙的忘记了最初二分的思路

赛后看题解,果然是套路移动右端点

假设要mid能达到,那么一定有一组lr满足d(l,r)/(r-l+1)<=mid (d为区间不同数的种数)

d(l,r)+l*mid<=(r+1)*mid

在右端点右移1的时候只有一个后缀的d会改变,于是能轻松维护所有左端点对应的值

 #include <bits/stdc++.h>
#define mi (l+r>>1)
#define eps 0.00001
#define INF 2000000000
using namespace std;
int n,T;
int a[],b[];
double tr[],flag[];
void add(int now,int l,int r,int x,int y,double z)
{
if(l==x && r==y)
{
tr[now]+=z;
flag[now]+=z;
return;
}
if(x<=mi) add(now<<,l,mi,x,min(mi,y),z);
if(y>mi) add(now<<|,mi+,r,max(mi+,x),y,z);
tr[now]=min(tr[now<<],tr[now<<|])+flag[now];
}
double que(int now,int l,int r,int x,int y)
{
if(l==x && r==y) return tr[now];
double ret=INF;
if(x<=mi) ret=min(ret,que(now<<,l,mi,x,min(mi,y)));
if(y>mi) ret=min(ret,que(now<<|,mi+,r,max(mi+,x),y));
return ret+flag[now];
}
bool check(double mid)
{
for(int i=;i<=n;i++)
b[i]=;
for(int i=;i<=*n;i++)
tr[i]=,flag[i]=;
for(int i=;i<=n;i++)
{
add(,,n,i,i,mid*i);
add(,,n,b[a[i]]+,i,);
b[a[i]]=i;
if(que(,,n,,i)<=mid*(i+))
return ;
}
return ;
}
int main()
{
for(scanf("%d",&T);T;T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
double l=,r=;
for(double mid=(l+r)/;r-l>eps;mid=(l+r)/)
if(check(mid)) r=mid;else l=mid;
printf("%.5f",l);
}
return ;
}

hdu6070Dirt Ratio 多校题 套路二分的更多相关文章

  1. BFS简单题套路_Codevs 1215 迷宫

    BFS 简单题套路 1. 遇到迷宫之类的简单题,有什么行走方向的,先写下面的 声明 ; struct Status { int r, c; Status(, ) : r(r), c(c) {} // ...

  2. 【BZOJ-4590】自动刷题机 二分 + 判定

    4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 156  Solved: 63[Submit][Status ...

  3. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  4. HDU 4768 Flyer (2013长春网络赛1010题,二分)

    Flyer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  5. CodeForces 474B Worms (水题,二分)

    题意:给定 n 堆数,然后有 m 个话询问,问你在哪一堆里. 析:这个题是一个二分题,但是有一个函数,可以代替写二分,lower_bound. 代码如下: #include<bits/stdc+ ...

  6. CDOJ 1277 智商杯考试 每周一题 div2 二分+数学

    智商杯考试 题目连接: http://acm.uestc.edu.cn/#/problem/show/1277 Description 你是一个挂科选手. 你现在正在考试,你很方. 你参加的考试叫做智 ...

  7. 【BZOJ4590】[Shoi2015]自动刷题机 二分

    [BZOJ4590][Shoi2015]自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式 ...

  8. BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案

    二分答案水题. #include <cstdio> #include <cstring> #include <iostream> #include <algo ...

  9. Codeforces Round #499 (Div. 2) D. Rocket_交互题_二分

    第一次作交互题,有点不习惯. 由于序列是循环的,我们可以将一半的机会用于判断当前是否是在说谎,另一半的机会用于二分的判断. 对于判断是否实在说谎,用1判断即可.因为不可能有比1还小的数. 本题虽然非常 ...

随机推荐

  1. css3图书3D动画

    css3图书3D动画,css3,立体特效,旋转效果,3D动画,css3图书3D动画是一款基于css3实现的立体旋转3D图书动画特效. 代码下载页:http://www.huiyi8.com/sc/71 ...

  2. 在CI框架中的配置整合amfphp

    之前做的项目用到CI框架和amfphp的整合,主要用于php与flex的交互,在此做一下记录: 一. 安装CI框架: 1.  搭建PHP运行环境,本人在WIN7下用WAMP作测试,安装目录:d:/wa ...

  3. highChart数据动态更新

    highChart官网上通过ajax加载数据的例子 上面是第一次生成图表的时候使用 我想动态更新,在已经生成的图表上动态更新 chartBS.series[0].setData(sugarListDa ...

  4. 1131 Subway Map(30 分)

    In the big cities, the subway systems always look so complex to the visitors. To give you some sense ...

  5. dsu on tree(无讲解)

    CF741D. Arpa's letter-marked tree and Mehrdad's Dokhtar-kosh paths 分析: 最多有一个字符出现奇数次 维护某个状态下深度的最大值,注意 ...

  6. select查询语句执行顺序

    查询中用到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的 ...

  7. OGG 进程清除、重建

    背景描述:有时候OGG进程同步出现问题,症状某些进程起不来,而且问题一时半会儿解决不了.最简单的办法是:用数据泵初始化数据,OGG进程重建. 1.查看源端.目的端的进程状态. (作者OGG进程是正常的 ...

  8. 物联网项目开发必读 深度分析MQTT协议优缺点

    物联网并不仅仅是一种网络,而是一个新的生态环境,它描述的本质是越来越多的使用物品通过网络连接在一起并可使用单个或者多个的终端设备对它们进行各种控制和使用—当然,工业上的物联网通常连接到的石鼓传感器或者 ...

  9. java的桥接模式

    http://blog.csdn.net/jason0539/article/details/22568865 http://www.cnblogs.com/V1haoge/p/6497919.htm ...

  10. SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别

    RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的.它在任何 时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存 ...