HDU 6070 线段树
题意:求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 线段树的更多相关文章
- HDU 6070 (线段树)(统计颜色)
HDU 6070 Partition Problem : 给一段长度为n的序列,要求找出一段区间,使得这段区间的数字种类除以区间长度最小.输出最后的答案即可.(n <= 60000)(9s时限) ...
- 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 ...
- hdu 3974 线段树 将树弄到区间上
Assign the task Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 3436 线段树 一顿操作
Queue-jumpers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- hdu 3397 线段树双标记
Sequence operation Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 4578 线段树(标记处理)
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others) ...
- hdu 4533 线段树(问题转化+)
威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- hdu 2871 线段树(各种操作)
Memory Control Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 4052 线段树扫描线、奇特处理
Adding New Machine Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
随机推荐
- Hyda爆破
转载:http://www.cnblogs.com/bmjoker/ 2018,网站的防护(sql,xss...)的安全保护也已经上升了一个等级,但是由于管理员的安全意识薄弱,网站弱口令漏洞依然猖獗, ...
- web服务器架构演化及所其技术知识体系(分布式的由来)
文章标题是我自己取的,内容来着百度百科k5665219的一篇回答,觉得讲的很不错就转载过来了. 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们 ...
- pyspark SparkSession及dataframe基本操作
from pyspark import SparkContext, SparkConf import os from pyspark.sql.session import SparkSession f ...
- oracle 笔记---(五)__内存管理
###查看连接池的信息 select connection_pool,status,maxsize from dba_cpool_info
- maven+springboot+阿里大于
问题:maven仓库无法找到taobao-sdk-java-auto-1.0.jar包 目的:将jar包添加到maven项目中 1.在官网下载jar包 2.将jar包放在d盘 3.mvn instal ...
- PHP jQuery实现上传图片时预览图片的功能实例
在PHP项目开发中,有时候经常需要做添加图片的功能.添加图片时,一般需要即时预览上传的图片.下面这个例子就是简单的预览上传图片功能,代码如下(分两部分): 1.HTML代码: <div clas ...
- cloudemanager安装时出现failed to receive heartbeat from agent问题解决方法(图文详解)
不多说,直接上干货! 安装cdh5到最后报如下错误: 安装失败,无法接受agent发出的检测信号. 确保主机名称正确 确保端口7182可在cloudera manager server上访问(检查防火 ...
- 案例44-crm练习新增客户使用struts2
1 src下配置文件 1 struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP ...
- [linux]解决DNS配置重启丢失
DNS配置重启丢失 每次重启后都修改DNS配置文件 /etc/resolv.conf从网上得知 /etc/resolv.conf中的DNS配置是从/etc/resolvconf/resolv.conf ...
- centos6.5 源码编译 mysql5.6.21
1.yum安装各个依赖包 [root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automa ...