CH0805 防线 (二分值域,前缀和,特殊性质)
$ CH~0805~ $ 防线 (二分值域,前缀和,特殊性质)
$ solution: $
注意博主所给题面的输出和原题有些不同
这道题当时想了很久很久,就是想不到怎么写。果然还是太 $ vegetable $ 了。首先我们可以肯定的是,我们不能暴力枚举,复杂度太高,数据范围太大!所以我们需要从题目中寻找性质!
题目说了要寻找一个数目为奇数的点,本来以为自己在二进制是与否这方面已经很有经验,但是这道题反手打脸。奇偶数是一个以二进制很有关的东西:(奇数+奇数=偶数)类似( 1 异或 1 = 0 ),(奇数+偶数=奇数)类似( 1 异或 0 = 1 ),所以这道题我们可以用前缀和来判断。题目给了一条很不起眼的条件:最多只有一个奇数位置!
这个条件让我可以二分值域,搞个前缀和,如果前面有奇数存在那么前缀和一定是奇数,反之为偶数。所以我们二分值域,算前缀和即可找到那个位置!
$ code: $
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>#define ll long long
#define db double
#define rg register intusing namespace std;ll ans;
int t,n;
int a[200005];
int b[200005];
int v[200005];inline int qr(){register char ch; register bool sign=0; rg res=0;while(!isdigit(ch=getchar()))if(ch=='-')sign=1;while(isdigit(ch))res=res*10+(ch^48),ch=getchar();if(sign)return -res; else return res;
}inline ll ask(ll x){ll res=0;for(rg i=1;i<=n;++i){if(a[i]>x)continue;if(b[i]<x) res+=1+(ll)(b[i]-a[i])/v[i];else res+=1+(ll)(x-a[i])/v[i];}return res;
}int main(){//freopen(".in","r",stdin);//freopen(".out","w",stdout);t=qr();while(t--){ n=qr();rg l=2147483647,r=0; ans=0;for(rg i=1;i<=n;++i){a[i]=qr(),b[i]=qr(),v[i]=qr();l=min(l,a[i]); r=max(r,b[i]);ans+=(b[i]-a[i])/v[i]+1;}if(ans%2==0){puts("Poor QIN Teng:(");continue;} ll mid;while(l<=r){mid=((ll)l+r)>>1;if(!(ask(mid)%2))l=mid+1;else r=mid-1;}printf("%d %lld\n",l,ask(l)-ask(l-1));}return 0;
}
转载于:https://www.cnblogs.com/812-xiao-wen/p/11250602.html
CH0805 防线 (二分值域,前缀和,特殊性质)相关推荐
- A. Sasha and a Bit of Relax(异或的性质 + 前缀和的性质)
Problem - 1109A - Codeforces Sasha喜欢编程.有一次,在一场很长时间的比赛中,萨沙觉得他有点累了,需要放松一下.他照做了.但由于萨沙不是一个普通人,他更喜欢不同寻常地放 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 102. 最佳牛围栏:浮点数二分、前缀和、双指针
文章目录 题目 题解 题目 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内 ...
- 第二章:二分和前缀和 【完结】
基本熟练掌握了. 目录 789. 数的范围 [整数二分 板子题] 790. 数的三次方根 [实数二分] 795. 前缀和 [一维前缀和 板子题] 796. 子矩阵的和 [二维前缀和 板子题] 730. ...
- 蓝桥杯C++ AB组辅导课 第二讲 二分与前缀和 Acwing
例题 AcWing 789. 数的范围 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询. 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数). 如果数组中不存 ...
- CH - 0805 防线(二分+思维)
题目链接:点击查看 题目大意:假设现在有一个数轴,一共有n组防具,每组防具给出的形式为S,D,E,在数轴上的分布为:S,S+D,S+2D....S+KD,保证S+KD<=E 现在规定数轴上某个点 ...
- D. Salary Changing(二分,前缀和,贪心,瞎搞)
Salary Changing Thinking 这道题第一思路就是二分,模拟了一下样例,感觉好像行于是就开始写. 对于二分,我们一定是二分中位数是什么,二分的边界对我们来说是非常重要的,所以我们在二 ...
- P1314,jzoj3028-聪明的质监员【二分答案,前缀和】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1314 题目大意 有nnn个石头,mmm个区间,对于每个WWW有一个 ...
- poj3179 Corral the Cows(二分, 前缀和, 离散化, 双指针)
题目描述 农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单位的三叶草,来当做它们的下午茶. 畜栏的边缘必须与X,Y轴平行. 约翰的土地里一共包含N单位的 ...
- 【WC2008】【BZOJ1271】秦腾与教学评估(二分,前缀和,奇偶性乱搞)
problem 一条路上有n个教学评估团,对于每个评估团从s开始每d个站一个人直到e结束 现在要找到一个站的人数是奇数的点,这个点可能没有,且至多只有一个 问这个点在哪以及这个点站了多少人 solut ...
最新文章
- 高并发IM系统架构优化实践
- 基于Java的Selenium学习笔记——Assert
- 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
- 【报告分享】2020情趣用品线上消费趋势报告.pdf(附下载链接)
- 【转】用Microsoft Ajax Minifier帮你的Javascript瘦身
- Visio是一个很好的UML建模软件和一个很好的制图软件
- php中的钩子理解及应用
- 拓端tecdat|R语言是否对二分连续变量执行逻辑回归
- POP模式,提示密码错误的问题(密码是对的)
- 中国传统色彩十六进制颜色码图片大全
- 51单片机(十)—— 8位数码管-数码管扫描
- 笔记本如何解除锁定计算机,笔记本电脑数字小键盘如何解锁_笔记本电脑数字键盘被锁定了如何打开-win7之家...
- 排除Transformation Errors
- 杭电 HDU ACM 圆桌会议
- 同等学力计算机科学与技术真题-2006年
- ScriptManager和ClientScript的区别
- 软件系统安全性测试列表(Checklist)
- 计算机专硕考数一英一,专硕难度升级!改考数一英一,这所近2.3万人报考的热门高校大改...
- 35岁+做互联网的你该何去何从呢?
- 国内短信服务商厂商比较
热门文章
- bootstrapValidator remote 验证问题
- 关于字节序(大端法、小端法)的定义
- N个三角形分割平面个数(数学)
- XML DOM 节点
- vue路由传参的三种基本方式 - 流年的樱花逝 - SegmentFault 思否
- echarts --- 多折线图按段显示颜色规则订制
- 7 useLayoutEffect、useDebugValue
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、...
- 基于 axios 的 Vue 项目 http 请求优化
- Java编程的逻辑 (84) - 反射