$ 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 防线 (二分值域,前缀和,特殊性质)相关推荐

  1. A. Sasha and a Bit of Relax(异或的性质 + 前缀和的性质)

    Problem - 1109A - Codeforces Sasha喜欢编程.有一次,在一场很长时间的比赛中,萨沙觉得他有点累了,需要放松一下.他照做了.但由于萨沙不是一个普通人,他更喜欢不同寻常地放 ...

  2. 《算法竞赛进阶指南》打卡-基本算法-AcWing 102. 最佳牛围栏:浮点数二分、前缀和、双指针

    文章目录 题目 题解 题目 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内 ...

  3. 第二章:二分和前缀和 【完结】

    基本熟练掌握了. 目录 789. 数的范围 [整数二分 板子题] 790. 数的三次方根 [实数二分] 795. 前缀和 [一维前缀和 板子题] 796. 子矩阵的和 [二维前缀和 板子题] 730. ...

  4. 蓝桥杯C++ AB组辅导课 第二讲 二分与前缀和 Acwing

    例题 AcWing 789. 数的范围 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询. 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数). 如果数组中不存 ...

  5. CH - 0805 防线(二分+思维)

    题目链接:点击查看 题目大意:假设现在有一个数轴,一共有n组防具,每组防具给出的形式为S,D,E,在数轴上的分布为:S,S+D,S+2D....S+KD,保证S+KD<=E 现在规定数轴上某个点 ...

  6. D. Salary Changing(二分,前缀和,贪心,瞎搞)

    Salary Changing Thinking 这道题第一思路就是二分,模拟了一下样例,感觉好像行于是就开始写. 对于二分,我们一定是二分中位数是什么,二分的边界对我们来说是非常重要的,所以我们在二 ...

  7. P1314,jzoj3028-聪明的质监员【二分答案,前缀和】

    正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1314 题目大意 有nnn个石头,mmm个区间,对于每个WWW有一个 ...

  8. poj3179 Corral the Cows(二分, 前缀和, 离散化, 双指针)

    题目描述 农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单位的三叶草,来当做它们的下午茶. 畜栏的边缘必须与X,Y轴平行. 约翰的土地里一共包含N单位的 ...

  9. 【WC2008】【BZOJ1271】秦腾与教学评估(二分,前缀和,奇偶性乱搞)

    problem 一条路上有n个教学评估团,对于每个评估团从s开始每d个站一个人直到e结束 现在要找到一个站的人数是奇数的点,这个点可能没有,且至多只有一个 问这个点在哪以及这个点站了多少人 solut ...

最新文章

  1. 高并发IM系统架构优化实践
  2. 基于Java的Selenium学习笔记——Assert
  3. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
  4. 【报告分享】2020情趣用品线上消费趋势报告.pdf(附下载链接)
  5. 【转】用Microsoft Ajax Minifier帮你的Javascript瘦身
  6. Visio是一个很好的UML建模软件和一个很好的制图软件
  7. php中的钩子理解及应用
  8. 拓端tecdat|R语言是否对二分连续变量执行逻辑回归
  9. POP模式,提示密码错误的问题(密码是对的)
  10. 中国传统色彩十六进制颜色码图片大全
  11. 51单片机(十)—— 8位数码管-数码管扫描
  12. 笔记本如何解除锁定计算机,笔记本电脑数字小键盘如何解锁_笔记本电脑数字键盘被锁定了如何打开-win7之家...
  13. 排除Transformation Errors
  14. 杭电 HDU ACM 圆桌会议
  15. 同等学力计算机科学与技术真题-2006年
  16. ScriptManager和ClientScript的区别
  17. 软件系统安全性测试列表(Checklist)
  18. 计算机专硕考数一英一,专硕难度升级!改考数一英一,这所近2.3万人报考的热门高校大改...
  19. 35岁+做互联网的你该何去何从呢?
  20. 国内短信服务商厂商比较

热门文章

  1. bootstrapValidator remote 验证问题
  2. 关于字节序(大端法、小端法)的定义
  3. N个三角形分割平面个数(数学)
  4. XML DOM 节点
  5. vue路由传参的三种基本方式 - 流年的樱花逝 - SegmentFault 思否
  6. echarts --- 多折线图按段显示颜色规则订制
  7. 7 useLayoutEffect、useDebugValue
  8. Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、...
  9. 基于 axios 的 Vue 项目 http 请求优化
  10. Java编程的逻辑 (84) - 反射