Cutting Bamboos 主席树+二分+前缀和
二分第x次砍的位置,然后用线段树查询小于这个位置的数的个数和值的和。然后判断即可
注意!!!主席树是通过动态开点实现的,本身已经不用再从1开始了,而本题开的范围也应该是0,100000 而不是1,100000(害得我找了很久的错误)
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<math.h>
#define LL long long
using namespace std;
const int maxx = ;
const double eps = 1e-;
struct node{
LL l,r,cnt;
LL w;
}tree[maxx<<];
LL root[maxx];
LL a[maxx];
LL pre[maxx];
LL cnt;
LL num;
LL sumlength;
void inserts(LL l,LL r,LL pre,LL &now,LL pos){
now=++cnt;
tree[now]=tree[pre];
tree[now].cnt++;
tree[now].w=tree[now].w+pos;
if (l==r){
return;
}
LL mid=(l+r)>>;
if (pos<=mid){
inserts(l,mid,tree[pre].l,tree[now].l,pos);
}else {
inserts(mid+,r,tree[pre].r,tree[now].r,pos);
}
}
void query(LL L,LL R,LL l,LL r,LL pos){
// if (l>pos)return;
if (l==r){
num+=(tree[R].cnt-tree[L].cnt);
sumlength+=(tree[R].w-tree[L].w);
return ;
}
LL mid=(l+r)>>;
if (pos<=mid){
query(tree[L].l,tree[R].l,l,mid,pos);
}else{
num+=(tree[tree[R].l].cnt-tree[tree[L].l].cnt);
sumlength+=(tree[tree[R].l].w-tree[tree[L].l].w);
query(tree[L].r,tree[R].r,mid+,r,pos);
}
}
int main(){
LL n,q;
while(~scanf("%lld%lld",&n,&q)){
pre[]=;
cnt=;
for (int i=;i<=n;i++){
scanf("%lld",&a[i]);
pre[i]=pre[i-]+a[i];
inserts(,,root[i-],root[i],a[i]);
}
LL ll,rr;
LL x,y;
while(q--){
scanf("%lld%lld%lld%lld",&ll,&rr,&x,&y);
double l=,r=;
double ans=;
while(fabs(r-l)>eps){
double mid=(l+r)/;
num=;
sumlength=;
LL ss=floor(mid);
query(root[ll-],root[rr],,,ss);
num=(rr-ll+)-num;
double s=num*mid+sumlength;
double step=1.0*(pre[rr]-pre[ll-])/y;
if (s-step*(y-x)>eps){
r=mid;
}else{
l=mid;
}
}
printf("%.10f\n",l);
}
}
return ;
}
Cutting Bamboos 主席树+二分+前缀和的更多相关文章
- 2019牛客多校第⑨场H Cutting Bamboos(主席树+二分)
原题:https://ac.nowcoder.com/acm/contest/889/H 题意: 给你一些竹子,q个询问,问你从第l到第r个竹子,如果你要用y次砍完它,并且每次砍下来的长度是相同的,问 ...
- BZOJ1926 [Sdoi2010]粟粟的书架 【主席树 + 二分 + 前缀和】
题目 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位置都 ...
- BZOJ.1926.[SDOI2010]粟粟的书架(前缀和 主席树 二分)
题目链接 题意: 在给定矩形区域内找出最少的数,满足和>=k.输出数的个数.两种数据范围. 0~50 注意到(真没注意到...)P[i,j]<=1000,我们可以利用前缀和预处理. num ...
- 【BZOJ1926】粟粟的书架(主席树,前缀和)
[BZOJ1926]粟粟的书架(主席树,前缀和) 题面 Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co ...
- 2018湘潭邀请赛C题(主席树+二分)
题目地址:https://www.icpc.camp/contests/6CP5W4knRaIRgU 比赛的时候知道这题是用主席树+二分,可是当时没有学主席树,就连有模板都不敢套,因为代码实在是太长了 ...
- 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)
Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NO ...
- HDU - 4866 主席树 二分
题意:在x轴\([1,X]\)内的上空分布有n个占据空间\([L_i,R_i]\),高度\(D_i\)的线段,射中线段的得分为其高度,每次询问从x轴的\(x\)往上空射的最近k个线段的总得分,具体得分 ...
- POJ 6621: K-th Closest Distance(主席树 + 二分)
K-th Closest Distance Time Limit: 20000/15000 MS (Java/Others) Memory Limit: 524288/524288 K (Jav ...
- HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分)
HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分) 传送门:http://acm.hdu.edu.cn/showproblem.php? ...
随机推荐
- centos6.5 zabbix2.2 亲测安装
因为需要做测试,调试.需要安装zabbix. 然后自己新弄了一个 centos6.5 minimal版本,从头来了一遍. 1.先安装LAMP的环境还有一些基本环境. yum -y install g ...
- 解决git push、pull时总是需要你输入用户名和密码
git config --global credential.helper store之后再次执行git push 或者git pull这时候还需要输入用户名和密码 下次就不需要了
- 模拟4题解 T3奇袭
T3奇袭 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上 要迎来最终的压力测试——魔界入侵. 唯一一个神一般存在的Administrator被消灭了,靠原本 ...
- etcd使用
下载: https://github.com/etcd-io/etcd/releases/tag/v3.3.13 tar -zxvf etcd-v3.3.13-linux-amd64.tar.gz ...
- AJAX(二)-实现验证码异步验证功能
案例实现效果 用户在前端输入验证码,按键收起触发异步验证,验证验证码的对错 前端代码 checkcode.jsp <%-- Created by IntelliJ IDEA. User: cxs ...
- IntelliJ IDEA 下的SVN使用(傻瓜式教学)(转)
第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的 ...
- [运维]Dell R710 raid配置 标签: raid运维 2017-04-15 19:35 581人阅读 评论(16)
Dell R系列的一些服务器,raid的配置都大同小异,公司大部分的服务器,都是Dell R710型号的,这个型号的raid界面配置起来还是很简单的,下面来跟随小编体验一下raid如何配置吧.ps:图 ...
- Leetcode914.X of a Kind in a Deck of Cards卡牌分组
给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X > ...
- 在maven多模块结构中,并且使用overlay的情况下使用jetty热部署
在使用maven多模块的结构的时候,同时有多个web工程使用maven-war-plugin的overlay来组织的时候,本地开发时如何在eclipse里面启动容器并且可以热部署调试是个比较麻烦的问题 ...
- blogbeta1
//html <!DOCTYPE html> blog 身高:170 体重:230 座右铭 再给我吃一口 关于我 微信 微博 标签 SM SP 重金求爹 2019/11/16 本人找爹,带 ...