题意:求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. VI设计对于企业文化建设的重要性

    VI设计对于企业文化建设非常重要,包括企业品牌形象塑造.企业价值提炼.企业文化建设等有着非常重要的作用.VI设计的发展趋势是什么? 第一 从静态到动态 中国过去一段时间以来的VI设计,也是以一种静止和 ...

  2. nodejs基础知识查缺补漏

    1. 单线程.异步I/O.对比php nodejs是单线程的,但是是异步I/O,对于高并发时,它也能够快速的处理请求,100万个请求也可以承担,但是缺点是非常的耗内存,但是我们可以加大内存, 所以能用 ...

  3. filter get乱码 全站编码解决 包装模式

    包装模式简介: package com.itheima.test; import java.io.BufferedReader; import java.io.IOException; import ...

  4. 我的博客已经迁移到csdn

    博客已经迁移csdnhttp://blog.csdn.net/u013372900 博客园我很喜欢是源于他的可扩展性,可以自己去改,但遗憾的是博客园的速度似乎不是很给力.IT能有今天的 发展是源于无数 ...

  5. VS2010中VC++目录和C/C++之间的区别。VC++ Directories和C/C++的区别。

    首先,这是个历史遗留问题,说起来比较复杂.其次,这个问题在微软的MSDN博客上已经专门被说起过了,英文好的请直接移步到原文:<VC++ Directories>.另外,stack over ...

  6. pat02-线性结构3. 求前缀表达式的值(25)

    02-线性结构3. 求前缀表达式的值(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 算术表达式有前缀表示法.中缀表示法和后缀表示法 ...

  7. 从函数作用域和块级作用域看javascript的作用域链

    在ES6之前,javascript只有全局作用域和函数作用域.所谓作用域就是一个变量定义并能够被访问到的范围.也就是说如果一个变量定义在全局(window)上,那么在任何地方都能访问到这个变量,如果这 ...

  8. 获取全球dns统计信息

    # -*- coding:UTF-8 -*- import requests, time import json from bs4 import BeautifulSoup as bp t3 = ti ...

  9. [转]Debugging into .NET Core源代码的两种方式

    本文转自:http://www.cnblogs.com/maxzhang1985/p/6015719.html 阅读目录 一.前言 二.符号服务器 三.项目中添加ASP.NET Core源代码 四.写 ...

  10. mysql主从复制报错 :Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

    在配置mysql主从复制时,想通过 grant replication slave on bbs.* to 'bbs'@'192.168.1.3' identified by '123456'; 来限 ...