二分答案的边界问题还是要注意

double挨着,int+1-1,

此题用到long long,所以初始化ans要足够大,前缀和优化

依然根据check答案大小左右mid,虽然有s,但是有了+1-1加持所以能够自动推出

  1. #include<bits/stdc++.h>
  2. #define int long long
  3. #define rep(i,x,y) for(register int i=x;i<=y;i++)
  4. using namespace std;
  5.  
  6. const int N=2e6+;
  7. int n,m,s,mi,mx,ans,w[N],v[N],l[N],r[N];
  8.  
  9. inline int read(){
  10. int x=,f=;char ch=getchar();
  11. while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
  12. while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
  13. return x*f;}
  14.  
  15. inline int aabs(int x){return x>?x:-x;}
  16.  
  17. int sum[N],cnt[N];
  18.  
  19. bool check(int mid){int y=;
  20. memset(sum,,sizeof sum);
  21. memset(cnt,,sizeof cnt);
  22.  
  23. rep(i,,n){
  24. sum[i]=sum[i-],cnt[i]=cnt[i-];
  25. if(w[i]>=mid)
  26. sum[i]+=v[i],cnt[i]++;
  27. }rep(i,,m)
  28. y+=(cnt[r[i]]-cnt[l[i]-])*(sum[r[i]]-sum[l[i]-]);
  29. ans=min(ans,aabs(y-s));
  30. if(y>s) return ;
  31. else return ;
  32. }
  33.  
  34. signed main(){
  35. n=read(),m=read(),s=read();ans=mi=;
  36. rep(i,,n) w[i]=read(),v[i]=read(),mi=min(mi,w[i]),mx=max(mx,w[i]);
  37. rep(i,,m) l[i]=read(),r[i]=read();
  38. int l=mi,r=mx;
  39. while(l<=r)
  40. {
  41. int mid=(l+r)>>;
  42. bool FG=check(mid);
  43.  
  44. if(FG) l=mid+;
  45. else r=mid-;
  46. }
  47. printf("%lld\n",ans);return ;
  48. }

怀挺

luogu 1314 聪明的质检员的更多相关文章

  1. Luogu 1314 【NOIP2011】聪明的质检员 (二分)

    Luogu 1314 [NOIP2011]聪明的质检员 (二分) Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有 ...

  2. [NOIP 2011] 聪明的质检员

    聪明的质检员 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri ...

  3. luogu P1314 聪明的质监员 x

    P1314 聪明的质监员(至于为什么选择这个题目,可能是我觉得比较好玩呗) 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自 ...

  4. Luogu P1314 聪明的质监员(二分+前缀和)

    P1314 聪明的质监员 题意 题目描述 小\(T\)是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有\(n\)个矿石,从\(1\)到\(n\)逐一编号,每个矿石都有自己的重量\(w_i\) ...

  5. 【luogu P1314 聪明的质监员】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1314 二分答案 但是计算区间贡献的时候 直接暴力会挂 前缀和加速 #include <cstdio&g ...

  6. [NOIP2011] 聪明的质检员(二分答案)

    题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[L ...

  7. NOIP2015聪明的质检员[二分 | 预处理]

    背景 NOIP2011 day2 第二题 描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi .检验矿 ...

  8. Vijos P1740聪明的质检员

    题目 描述 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从1到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是:1.给定m个区间[Li,Ri]:2. ...

  9. 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)

    ###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...

随机推荐

  1. ST算法(倍增)(用于解决RMQ)

    ST算法 在RMQ(区间最值问题)问题中,我了解到一个叫ST的算法,实质是二进制的倍增. ST算法能在O(nlogn)的时间预处理后,用O(1)的时间在线回答区间最值. f[i][j]表示从i位起的2 ...

  2. git init github

    Command line instructions 执行这些命令是在windows 右菜单里面的git bash运行. Git global setup git config --global use ...

  3. 洛谷P3959 宝藏

    去年NOIP第二毒瘤(并不)的题终于被我攻克了,接下来就只剩noip难度巅峰列队了. 首先说一下三种做法:随机化,状压DP和搜索. 前两种做法我都A了,搜索实在是毒瘤,写鬼啊. 有些带DFS的记忆化搜 ...

  4. A1110. Complete Binary Tree

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  5. Mysql 远程连接服务器

    #授权外部访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; #清空mysql缓存 ...

  6. cookie 常用操作

    Cookie:指网站为了辨别用户身份.进行会话跟踪而储存在用户本地的 key/value 型数据(通常经过加密), cookie key/value 型数据可以由服务器端自己定义. Cookie是由服 ...

  7. QT槽函数处理线程

    今天用到QTcpSocket的时候,由于客户端发起请求在一个线程里,当readyRead的信号发出后接收的槽函数是否还会在该线程里处理? 现在看来其实是交给主线程处理的,那么我要实现在线程里处理怎么实 ...

  8. tomcat发布项目,运行不了

    工作中经常出现项目本来运行得好好的,从SVN上面更新代码后就不行了 这个问题有时候是因为编译不成功,处理步骤如下: 1.clean整个项目,重新编译 2.如果还是不行,则把编译中认为是error的设置 ...

  9. mysql全备份脚本速查

    mysql全备份脚本 # 快捷备份方式[root@nb scripts]# cat db.backup.sh #!/bin/bashmysqldump -ubackup -pbackuppwd -P3 ...

  10. 3D转换(位置)+过渡+透视

    效果如图: html代码: <div class="door"> <div class="in"><div> </di ...