题意:有n个试管,有高度为hi的水银。操作1:将试管x中的水银高度改成y。操作2:将体积为v的水注入试管,求水位的高度?n,q<=1e5。

标程:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+;
int n,q,x,y,h[N],sc,rt,ls[N*],rs[N*],num[N*];
ll sum[N*],v;
void add(int &k,int l,int r,int x,int y)
{
if (!k) k=++sc;
if (l==r) {num[k]+=y;sum[k]+=x*y;return;}
int mid=(l+r)>>;
if (x<=mid) add(ls[k],l,mid,x,y);
else add(rs[k],mid+,r,x,y);
sum[k]=sum[ls[k]]+sum[rs[k]];
num[k]=num[ls[k]]+num[rs[k]];
}
double qry(int k,int l,int r,ll Num,ll Sum)
{
if (!k||l==r) return (double)(v+Sum+sum[k])/(Num+num[k]);
int mid=(l+r)>>;
if ((ll)(mid+)*(Num+num[ls[k]])-(Sum+sum[ls[k]])>=v) return qry(ls[k],l,mid,Num,Sum);
else return qry(rs[k],mid+,r,Num+num[ls[k]],Sum+sum[ls[k]]);
}
int main()
{
scanf("%d%d",&n,&q);
for (int i=;i<=n;i++) scanf("%d",&h[i]),add(rt,,1e9,h[i],);
while (q--)
{
int op;scanf("%d",&op);
if (op==)
{
scanf("%d%d",&x,&y);
add(rt,,1e9,h[x],-);
add(rt,,1e9,y,);
h[x]=y;
}else {
scanf("%lld",&v);
printf("%.8lf\n",qry(rt,,1e9,,));
}
}
return ;
}

易错点:1.写得太急又忘记ll了啊。

2.注意把水银和水分清楚啊。

题解:线段树+二分

考虑二分高度hi,当hi*num(高度<hi的试管数量)-sum(这些试管中已有水银的高度之和)<v,那么说明高度太小,还可以再倒水。放在线段树上也是一样的哈。注意是要小数,但是给你的所有高度都是整数,那么就统计水盖过的最上一个试管高度,从而计算出实际的h。

权值线段树维护某高度区间的水银数量,以及这些水银高度的和。

最新文章

  1. [Idea] idea打不开项目,原因很莫名
  2. mui jquery 同时使用
  3. python 2.7 rsa 离线安装 和使用示例
  4. AppStore 内购验证的方法
  5. AngularJS学习--- AngularJS中模板链接和图像 ng-src step6
  6. &ldquo;锁定&rdquo;语句 lock(C# 参考)
  7. C#电脑自动关机代码指令
  8. 用Hexo搭建属于自己的Blog
  9. 解决错误 fatal error C1010: unexpected end of file while looking for precompiled head
  10. EasyUI中, datagrid用loadData方法绑定数据。
  11. PhpStorm代码提示(省电模式)的设置与使用
  12. 【Linux基础】查看硬件信息-CPU
  13. FineUIPro v5.1.0 发布了!
  14. ubuntu16.04安装anaconda、环境配置
  15. linux系统自签发免费ssl证书,为nginx生成自签名ssl证书
  16. C#连接oracle连接字符串
  17. 20165228 2017-2018-2 《Java程序设计》第7周学习总结
  18. 关于ip判断
  19. 移动的调试工具vConsole
  20. 当滚动列表的时候,让input框失去焦点(移动端会收起键盘)

热门文章

  1. javascript 学习犯错记录
  2. GetModuleHandleW 分析
  3. css3 鼠标悬停图片动画
  4. python的magic methods
  5. zipinfo - 列出关于某个ZIP压缩包的详细信息
  6. 记录一次工作中jvm被linux杀死的调查
  7. 带你彻底理解RSA算法原理,很简单的
  8. Aria2 Centos8 安装配置
  9. Keepalived+LVS+nginx搭建nginx高可用集群
  10. 泛型(Generic)接口