HDU6070Dirt Ratio
来源:互联网 发布:淘宝客服专用表情包 编辑:程序博客网 时间:2024/05/17 06:28
题目链接
题意
给定一个长度为n的数列,求
分析
赛时真是太菜了。。一直想不到二分加线段树处理,纠结在了主席树上面。。
二分答案,设为mid,则
对于
代码
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define MAXN 60600#define eps 1e-7#define lson rt<<1#define rson rt<<1|1int n;int a[MAXN];double mn[MAXN<<2];int lazy[MAXN<<2];int pre[MAXN];void push_down(int rt){ if(lazy[rt]){ lazy[lson]+=lazy[rt]; lazy[rson]+=lazy[rt]; mn[lson]+=lazy[rt]; mn[rson]+=lazy[rt]; lazy[rt]=0; }}void build(int l,int r,int rt,double m){ lazy[rt]=0; if(l==r){ mn[rt]=l*m; return; } int mid=(l+r)>>1; build(l,mid,lson,m); build(mid+1,r,rson,m); mn[rt]=min(mn[lson],mn[rson]);}void update(int l,int r,int rt,int L,int R){ if(L<=l && r<=R){ mn[rt]+=1; lazy[rt]++; return; } push_down(rt); int mid=(l+r)>>1; if(mid>=L) update(l,mid,lson,L,R); if(mid<R) update(mid+1,r,rson,L,R); mn[rt]=min(mn[lson],mn[rson]);}double query(int l,int r,int rt,int L,int R){ if(L<=l && r<=R) return mn[rt]; push_down(rt); int mid=(l+r)>>1; double ret=1e9; if(mid>=L) ret=min(ret,query(l,mid,lson,L,R)); if(mid<R) ret=min(ret,query(mid+1,r,rson,L,R)); return ret;}void debug(){ for(int i=1;i<=n;++i){ printf("%lf ",query(1,n,1,i,i)); } cout<<endl;}bool judge(double m){ build(1,n,1,m); memset(pre,0,sizeof(pre)); //debug(); for(int i=1;i<=n;++i){ update(1,n,1,pre[a[i]]+1,i); //debug(); if(query(1,n,1,1,i)-m*(i+1)<eps) return true; pre[a[i]]=i; } return false;}int main(){ int T; cin>>T; while(T--){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); double l=0,r=1,mid; while(r-l>eps){ mid=(l+r)/2; if(judge(mid)) r=mid; else l=mid; } printf("%.5lf\n",l); }}
阅读全文
0 0
- HDU6070Dirt Ratio
- HDU6070Dirt Ratio(二分+线段树)
- 2017多校联合四1004/hdu6070Dirt Ratio [二分+线段树]
- ratio
- ratio
- debt ratio
- 1079 Ratio
- english ratio
- Ratio(P1079)
- C++ ratio
- C++ ratio
- stretch ratio
- 会议排名和ratio
- 什么是aspect ratio
- 什么是Aspect Ratio?
- Aspect Ratio转换
- poj 1079 Ratio
- zoj 1439 Area Ratio
- ubuntu16 Intellij Idea Install&config
- MySQL常用命令
- 正则表达式
- 使用 jQuery UI
- 进程控制块、进程上下文
- HDU6070Dirt Ratio
- L2-001. 紧急救援
- TP中的session和cookie
- 数据分析中非常实用的自编函数和代码模块整理
- 几个异常记录
- IO流——装饰和继承的区别
- UVa10129 例题 6-16 单词(Play On Words)
- linux下载安装目录
- tp的命名空间