HDU - 6070 线段树 + 分数规划
即最小的【L,R】/(R-L+1)。
#include <bits/stdc++.h>
#define eps 0.00001
#define MAXN 60010
#define INF 999999999
using namespace std ;
double sum[MAXN<<2],add[MAXN<<2];
int n,last[MAXN],pre[MAXN];
void pushup(int rt)
{sum[rt]=min(sum[rt<<1],sum[rt<<1|1]);
}
void build(int rt,int l,int r,double mid)
{add[rt]=0;if(l==r){sum[rt]=1.0*mid*l;return ;}int m=(l+r)>>1;build(rt<<1,l,m,mid);build(rt<<1|1,m+1,r,mid);pushup(rt);
}
void pushdown(int rt)
{if(add[rt]!=0){sum[rt<<1|1]+=add[rt];sum[rt<<1]+=add[rt];add[rt<<1|1]+=add[rt];add[rt<<1]+=add[rt];add[rt]=0;}
}
void update(int L,int R,int c,int l,int r,int rt)
{if(L<=l&&R>=r){sum[rt]+=c;add[rt]+=c;return ;}pushdown(rt);int m=(l+r)>>1;if(L<=m) update(L,R,c,l,m,rt<<1);if(R>m) update(L,R,c,m+1,r,rt<<1|1);pushup(rt);
}
double query(int L,int R,int l,int r,int rt)
{if(L<=l&&R>=r){return sum[rt];}pushdown(rt);int m=(l+r)>>1;double ans=INF;if(L<=m) ans=min(ans,query(L,R,l,m,rt<<1));if(R>m) ans=min(ans,query(L,R,m+1,r,rt<<1|1));return ans;
}
bool solve(double mid)
{build(1,1,n,mid);for(int i=1;i<=n;i++){update(pre[i]+1,i,1,1,n,1);if(query(1,i,1,n,1)<=1.0*mid*(i+1.0)) return 1;}return 0;
}
int main()
{int t,x;scanf("%d",&t);while(t--){memset(last,-1,sizeof(last));memset(pre,0,sizeof(pre));scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);if(last[x]!=-1)pre[i]=last[x];last[x]=i;}double l=0,r=1.0,mid;while(r-l>eps){mid=(l+r)/2;if(solve(mid)) r=mid-eps;else l=mid;}printf("%.6f\n",r);}return 0;
}
HDU - 6070 线段树 + 分数规划相关推荐
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
直接将这3题 放一起了 今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...
- hdu 5367(线段树+区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5367 官方题解: 对于求"高山脉"长度,可以利用线段树.树节点中保存左高度连续长度 ...
- hdu 5266(线段树+LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266 解题思路: 考虑dfs序,通过在简单的证明可知L~R的LCA为L ~R 中dfs序较小的那个位置 ...
- hdu 5124(线段树区间更新+lazy思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...
- HDU - 4578Transformation——线段树+区间加法修改+区间乘法修改+区间置数+区间和查询+区间平方和查询+区间立方和查询
[题目描述] HDU - 4578Transformation Problem Description Yuanfang is puzzled with the question below: The ...
- poj 2777 AND hdu 5316 线段树
区间染色问题,用线段树可以解决.颜色总类不多,故考虑用二进制数的每一位表示一种颜色,然后父节点的颜色就是孩子节点颜色"或"起来,加上lazy标记,轻松AC. poj 2777: 1 ...
- HDU 5238 线段树+数论
原题:http://acm.hdu.edu.cn/showproblem.php?pid=5238. 题解:给你长度为n的操作序列,和m组操作求每组操作的模29393的值.这道题直接显然是没有前途的, ...
- poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化
第一次听到离散化是今年省赛的时候,一道矩形并的题,很水,就两个矩形... 今天再去做线段树已经发现离散化忘得差不多了...水逼的悲哀啊... 先看简单点的hdu 1698 http://acm.hdu ...
- HDU 1166(线段树)
线段树 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 #define N 200010 ...
- hdu 4417(线段树OR树状数组)
题意:输入一个长度为n的序列,然后m个询问,询问区间[a,b]中比h小的数的个数. 思路:树状数组或线段树离线处理. 树状数组1 View Code 1 #include<cstdio> ...
最新文章
- 模型量化--TBN:Convolutional Neural Network with Ternary Inputs and Binary Weights
- 资源 | 来自独秀同学的深度网络数学笔记,还不快收藏?
- 使用reveal.js制作PPT,并部署至GitHub
- 三、Go语言控制语句
- 图片安全保护(未启动)
- 【转】Wireshark网络抓包(三)——网络协议
- ZJU期末考试记录(研究生)——数据挖掘
- java 获取继承字段_java – 从类中获取所有字段(甚至是私有的和继承的)
- Linux学习笔记9
- 理解 Android 消息机制
- 【蓝桥杯嵌入式】【STM32】10_InputCaputer之输入捕获
- 点广告才可以下载的代码
- Old ST-LINK firmware detected.do you want to upgrade it?已解决,stlink升级
- 【QT】QT从零入门教程(十四):标准颜色对话框类QColorDialog
- NODE_ENV跨平台设置
- 3.Docker技术入门与实战 --- 使用Docker镜像
- Atitit 项目风险管理 目录 1. 技术分险	2 1.1. 全面跟随大公司解决方案	2 1.2. 过度设计	2 1.3. 可读性 扩展性不足	2 1.4. 教条僵化	2 1.5. 技术方案超出了
- 新浪 java sdk_新浪微博Java SDK开发
- What?模电比数电难学?
- 大二文本分词过滤分类实验总结
热门文章
- 【C语言】pow函数的模拟实现(递归)
- 关于雅虎邮箱的Foxmail,outlook设置。
- 四川大学计算机徐教授,我院举行“BIM实验室开放+徐教授专题讲座”活动
- [转]采购订单或采购申请审批状态为IN PROCESS的解决方法
- 苹果11触屏不灵敏_苹果iPhone11Pro屏幕失灵怎么办
- CSS3:boder-radius
- html怎么偏左居中,word文档偏左怎么调到中间
- winxp网络找不到计算机,WinXP系统电脑打开WiFi搜索不到无线网络的解决方法
- PyCharm中 Django导入views时出现报错红线
- java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况...