防线

达达学习数学竞赛的时候受尽了同仁们的鄙视,终于有一天…受尽屈辱的达达黑化成为了黑暗英雄怪兽达达。

就如同中二漫画的情节一样,怪兽达达打算毁掉这个世界。

数学竞赛界的精英 lqr 打算阻止怪兽达达的阴谋,于是她集合了一支由数学竞赛选手组成的超级行动队。

由于队员们个个都智商超群,很快,行动队便来到了怪兽达达的黑暗城堡的下方。

但是,同样强大的怪兽达达在城堡周围布置了一条“不可越过”的坚固防线。

防线由很多防具组成,这些防具分成了 N 组。

我们可以认为防线是一维的,那么每一组防具都分布在防线的某一段上,并且同一组防具是等距离排列的。

也就是说,我们可以用三个整数 S, E 和 D 来描述一组防具,即这一组防具布置在防线的 S,S + D,S + 2D,…,S + KD(K∈ Z,S + KD≤E,S + (K + 1)D>E)位置上。

黑化的怪兽达达设计的防线极其精良。如果防线的某个位置有偶数个防具,那么这个位置就是毫无破绽的(包括这个位置一个防具也没有的情况,因为 0 也是偶数)。

只有有奇数个防具的位置有破绽,但是整条防线上也最多只有一个位置有奇数个防具。

作为行动队的队长,lqr 要找到防线的破绽以策划下一步的行动。

但是,由于防具的数量太多,她实在是不能看出哪里有破绽。作为 lqr 可以信任的学弟学妹们,你们要帮助她解决这个问题。

输入格式
输入文件的第一行是一个整数 T,表示有 T 组互相独立的测试数据。

每组数据的第一行是一个整数 N。

之后 N 行,每行三个整数 Si,Ei,DiSi,Ei,Di,代表第 i 组防具的三个参数,数据用空格隔开。

输出格式
对于每组测试数据,如果防线没有破绽,即所有的位置都有偶数个防具,输出一行 “There’s no weakness.”(不包含引号) 。

否则在一行内输出两个空格分隔的整数 P 和 C,表示在位置 P 有 C 个防具。当然 C 应该是一个奇数。

数据范围
防具总数不多于108108,

Si≤EiSi≤Ei,

1≤T≤51≤T≤5,

N≤200000N≤200000,

0≤Si,Ei,Di≤231−10≤Si,Ei,Di≤231−1
输入样例:
3
2
1 10 1
2 10 1
2
1 10 1
1 10 1
4
1 10 1
4 4 1
1 5 1
6 10 1
输出样例:
1 1
There’s no weakness.
4 3

#include<iostream>
#include<algorithm>
using namespace std;
//本题有一个很好的特点是只有一点为奇数个士兵,那么也表示改点之后的所有点的前缀和的和为奇数
//那么我们就可以利用这个性质,利用前缀和的方式下在利用二分优化,以顺利完成题目
const int maxn=200020;
#define ll long long
//考虑s、e、q的范围在计算是很可能会超出整数范围,这里使用long long 类型定义变量
struct Seq{ll s,e,q;}seq[maxn];
int t,n;
ll check(ll x)
{//计算某一点的前缀和,这里利用等差数列的性质求前缀和ll res=0;for(int i=0;i<n;i++)if(seq[i].s<=x){ll s=min(x,seq[i].e)-seq[i].s;res+=s/seq[i].q+1;}return res;
}
int main(){ios::sync_with_stdio(false);cin>>t;while(t--){ll l=0,r=0;//确定二分的范围cin>>n;for(int i=0;i<n;i++){ll s,e,q;cin>>s>>e>>q;seq[i]={s,e,q};r=max(r,e);}while(l<r){ll mid=(l+r)>>1;if(check(mid)&1)//当前缀和为奇数是符合题意r=mid;else l=mid+1;}ll sum=check(r)-check(r-1);if(sum%2==0)puts("There's no weakness.");else cout<<r<<" "<<sum<<endl;}return 0;
}

《算法竞赛进阶指南》 防线相关推荐

  1. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合

    又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...

  2. 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩

    文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...

  3. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

  4. CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)

    算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...

  5. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

  6. 金字塔(算法竞赛进阶指南)

    虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下. 经过多年的研究,科学家对这座金字塔的内部结构已经有所了解. 首先,金字塔由若干房间组成,房间之间连有通道. 如果把房间看作节点, ...

  7. AcWing 122. 糖果传递【贪心】【《算法竞赛进阶指南》,微软面试题 , HAOI2008】

    AcWing 122. 糖果传递 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 122. 糖果传递 进阶题目 AcWing 105 ...

  8. 算法竞赛进阶指南 骑士放置

    4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...

  9. 算法竞赛进阶指南 萌新入门!

    算法竞赛进阶指南 文章目录 算法竞赛进阶指南 前言 一.介绍本书 二.如何阅读本书 三.总结 **笔记思路和结构 ** 算法竞赛进阶指南 这篇文章就简单的写一下吧! 前言 ​ 作为一个想要入坑的算法的 ...

  10. 算法竞赛进阶指南0x3A 博弈论之SG函数

    算法竞赛进阶指南0x3A 博弈论之SG函数

最新文章

  1. mfschunkserver安装脚本
  2. 免费!「神策 2021 数据驱动大会」西安大数据技术专场来袭
  3. blackarch 安装美化等
  4. 想调试Angular框架的@HostBinding,应该在哪里设置断点
  5. 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
  6. NPM包管理器跟换国内镜像CNPM
  7. 大话设计模式读书笔记(十三) 状态模式
  8. php门面理解,php 门面模式(外观模式)
  9. JFreeChart画折线图
  10. 深入C++的new(2011-11-15 15:08 )
  11. c++判断一个字符串里面有特殊符号_简单动态字符串(SDS)
  12. 怎么选PMP培训机构?
  13. 信息学奥赛一本通(C++版) 第三部分 数据结构 第四章 图论算法
  14. 进程ld-linux-x86-64是什么,解决挖矿病毒占用cpu以及误删 ld-linux-x86-64.so.2 文件的问题...
  15. Excel快速填充小技巧,这几个技能你会了吗
  16. 计算机网卡接口类型,一文带你全方位了解网卡
  17. 拿棱镜门黑客软件攻击“俄版百度”,不偷情报只想装大V,FBI们被抓包了
  18. Sublime Merge中文版
  19. linux eap网络,linux – 定期无法连接到WPA2-EAP接入点
  20. 湖州云计算机,湖州云存储服务_菲尔云计算

热门文章

  1. 腾讯招python吗_#python 爬取腾讯招聘技术类的招聘信息
  2. Elasticsearch中间隔查询slop原理
  3. 关于坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解
  4. TCP的快速重传机制
  5. AutoMapper Project To OrderBy Skip Take 正确写法
  6. 不懂这显然您不专业!云计算术语大全
  7. Iptables详解七层过滤
  8. 编程愤怒的小鸟代码python_Python 愤怒的小鸟代码实现(1):物理引擎pymunk使用
  9. vue和 element ui下载到本地后引入
  10. 混合开发--vue之mand-mobile 框架引入,解决组件巨大问题