题意:求AC率,x/y 的最小值,x是区间数字的种类数,y是区间的长度。

分析:

二分答案比率。ans,

动态插入结点,一些区间的size会发生变化,是那些前面暂时没有新的结点的区间 size + 1。

ans*l,每一个区间只有一个ans*l,只与 l 相关,线段树单点更新。

用线段树维护区间的最小值。最小值小于 ans,二分左移。

#include <bits/stdc++.h>
using namespace std; const int maxn = ;
const int eps = 1e-;
int a[maxn]; int last[maxn]; double tree[maxn<<],add[maxn<<]; void pushdown(int root)
{
tree[root<<]+=add[root];
tree[root<<|]+=add[root];
add[root<<]+=add[root];
add[root<<|]+=add[root];
add[root]=;
} void update(int l,int r,int L,int R,int root,double k)
{
if(l<=L&&R<=r)
{
tree[root]+=k;
add[root]+=k;
return ;
}
if(add[root]>eps)pushdown(root);
int mid=L+R>>;
if(r<=mid)update(l,r,L,mid,root<<,k);
else if(l>mid)update(l,r,mid+,R,root<<|,k);
else
{
update(l,mid,L,mid,root<<,k);
update(mid+,r,mid+,R,root<<|,k);
}
tree[root]=min(tree[root<<],tree[root<<|]);
} double query(int l,int r,int L,int R,int root)
{
if(l<=L&&R<=r)
return tree[root];
if(add[root]>eps)pushdown(root);
int mid=L+R>>;
if(r<=mid)return query(l,r,L,mid,root<<);
else if(l>mid)return query(l,r,mid+,R,root<<|);
else return min(query(l,mid,L,mid,root<<),query(mid+,r,mid+,R,root<<|));
tree[root]=min(tree[root<<],tree[root<<|]);
} int main()
{
//freopen("in.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n); for(int i=; i<=n; i++)
scanf("%d",&a[i]);
double l = ,r=1.0; for(int g=; g<; g++)
{ double mid = (l+r)/2.0;
memset(tree,,sizeof(tree));
memset(add,,sizeof(add));
memset(last,,sizeof(last)); int flag = ;
for(int i=; i<=n; i++)
{
update(last[a[i]]+,i,,n,,);
update(i,i,,n,,mid*i);
last[a[i]] = i;
double k = query(,i,,n,);
if(k<=(double)mid*(i+))
{
flag=;
break;
}
} if(flag!=) l = mid;
else r = mid;
} printf("%.10lf\n",l); }
return ;
}

HDU 6070 线段树的更多相关文章

  1. HDU 6070 (线段树)(统计颜色)

    HDU 6070 Partition Problem : 给一段长度为n的序列,要求找出一段区间,使得这段区间的数字种类除以区间长度最小.输出最后的答案即可.(n <= 60000)(9s时限) ...

  2. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  3. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. hdu 3436 线段树 一顿操作

    Queue-jumpers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. hdu 3397 线段树双标记

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  6. hdu 4578 线段树(标记处理)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others) ...

  7. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  8. hdu 2871 线段树(各种操作)

    Memory Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

随机推荐

  1. 网络编程api bind函数细节 select 细节

    struct sockaddr_in bindaddr; bindaddr.sin_family = AF_INET; bindaddr.sin_addr.s_addr = htonl(INADDR_ ...

  2. select简单示例,有注释

    全部都在代码中: import select import socket import queue """ 简单的select 实现echo server 个人理解: s ...

  3. linux文件夹权限问题

    linux下 ls 某文件夹需要文件夹有 r 读权限. cd 某文件夹 需要文件夹有 x 运行权限 参考: http://www.linuxidc.com/Linux/2016-11/136959.h ...

  4. 周记1——WebSocket入门

    一周复一周,时间过得飞快,每个周末都是很开心却又很彷徨.开心的是不用工作,彷徨的是自己这周学到了什么.自身的技能有没有提高.如何应对这个日新月异的社会... 本周的工作的开发IM(即时聊天)模块,要用 ...

  5. Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name

    添加一下依赖 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop- ...

  6. 关于日常使用Azure MySQL中遇到的连接问题以及排查方法分享

    由于防火墙问题,TCP keep alive 问题,以及 MySQL 自身的参数问题这三个在使用中比较常见,所以今天就分享下自己找到的排查方法. 今天先聊一聊防火墙问题 大多数人在第一次创建 MySQ ...

  7. CMS API Overview - 翻译

    source: http://activemq.apache.org/cms/cms-api-overview.html 1. CMS是啥? C++版本的API,用于收发消息(JMS). 如果您已熟悉 ...

  8. 梁宇轩 mysql 语句学习一 对表的操作

    1.SHOW TABLES;           -- 查询库中所有的表 2 .CREATE TABLE test(id INT(20) PRIMARY KEY NOT NULL AUTO_INCRE ...

  9. Linux ARP代理 与 NAT

    有时候我们会在一个已有网络(10.10.10.0/24)内组建一个实验网络(192.168.1.0/24),网络结构如上图所示. 假设我们不能控制(修改)A网络内除D主机以外的系统配置,但可以完全控制 ...

  10. querySelector()与querySelectorAll()的区别及NodeList和HTMLCollection对象的区别

    querySelector().Document.Element类型均可调用该方法. 当用Document类型调用querySelector()方法时,会在文档元素范围内查找匹配的元素:而当用Elem ...