bzoj 1271 二分
来源:互联网 发布:乌海四中网络选课系统 编辑:程序博客网 时间:2024/06/15 13:40
题意:
首先,数据不保证总人数不大于10^8,所以要开long long(mdzz,被坑了好几个wa)
题目保证最多有且只有一个位置是奇数,所以很显然会想到奇数+偶数=奇数
对于x处的人数维护一个前缀和
那么我们就二分这个奇数的位置,从这个位置往后(包括这个位置)的前缀和都是奇数,这个位置之前(不包含这个位置)的前缀和都是偶数
每个小组贡献的人数为 min(x-s[i],e[i]-s[i]) / d[i] +1
var n,t :longint; i :longint; l,r,mid,ans :int64; s,e,d :array[0..200010] of longint;function min(a,b:longint):longint;begin if a<b then exit(a) else exit(b);end;function get_sum(x:int64):int64;var tt:int64;begin tt:=0; for i:=1 to n do if s[i]<=x then inc(tt,min(x-s[i],e[i]-s[i]) div d[i]+1); exit(tt);end;function check(x:int64):boolean;var tt:int64;begin tt:=get_sum(x); if tt and 1=1 then exit(true) else exit(false);end;begin read(t); while (t>0) do begin dec(t); read(n); for i:=1 to n do read(s[i],e[i],d[i]); l:=0; r:=maxlongint; ans:=0; while (l<=r) do begin mid:=(l+r)>>1; if check(mid) then begin ans:=mid; r:=mid-1; end else l:=mid+1; end; if ans=0 then writeln('Poor QIN Teng:(') else writeln(ans,' ',get_sum(ans)-get_sum(ans-1)); end;end.——by Eilys
0 0
- bzoj 1271 二分
- bzoj 1199 二分暴力
- bzoj 1692 二分+hash
- BZOJ 2821 分块+二分
- bzoj 2016 二分答案
- bzoj 2348 二分
- BZOJ 1196 二分+Kruskal
- bzoj 3412 二分
- BZOJ-5090 (二分答案)
- BZOJ 1271: [BeiJingWc2008]秦腾与教学评估 二分查找
- BZOJ 4025 二分图 LCT
- BZOJ 1082 栅栏 [二分+搜索]
- BZOJ 3761 甄嬛 二分答案
- bzoj 1614(二分+最短路)
- bzoj 2083 (二分查找)
- bzoj 1532(二分+最大流)
- bzoj 4025: 二分图 lct
- BZOJ 1213 Python... 二分+高精度
- modprobe drdb FATAL: Module drdb not found
- APP开发实战158-局部广播(Local Broadcast)
- Android性能优化(一)--关于内存溢出
- How to Run a Shell Script with Mac App Sandbox Enabled
- python3爬虫的编码问题
- bzoj 1271 二分
- CentOS 搭建的Java环境
- JavaScript快速入门
- mykernel实验指导(操作系统是如何工作的)
- [翻译]斯坦福CS 20SI:基于Tensorflow的深度学习研究课程笔记,Lecture note 4: How to structure your model in TensorFlow
- Zipline的安装教程
- TCP/IP基础四
- APP开发实战159-广播的安全性
- 欢迎浏览GitHub+Hexo搭建的博客(有搭建教程)