题目链接:http://exam.upc.edu.cn/problem.php?cid=1430&pid=24

问题 Y: 防线

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 7
[提交] [状态] [讨论版] [命题人:admin]

题目描述

lsp 学习数学竞赛的时候受尽了同仁们的鄙视,终于有一天......受尽屈辱的 lsp 黑化成为了黑暗英雄Lord lsp。就如同中二漫画的情节一样,Lord lsp 打算毁掉这个世界。数学竞赛界的精英 lqr 打算阻止Lord lsp 的阴谋,于是她集合了一支由数学 竞赛选手组成的超级行动队。由于队员们个个都智商超群,很快,行动队便来到了 Lord lsp 的黑暗城堡的下方。

但是,同样强大的 Lord lsp 在城堡周围布置了一条“不可越过”的坚固防线。防线由很 多防具组成,这些防具分成了 N 组。我们可以认为防线是一维的,那么每一组防具都分布 在防线的某一段上,并且同一组防具是等距离排列的。也就是说,我们可以用三个整数 S, E 和 D 来描述一组防具,即这一组防具布置在防线的 S,S + D,S + 2D,...,S + KD(K∈ Z,S + KD≤E,S + (K + 1)D>E)位置上。

黑化的 Lord lsp 设计的防线极其精良。如果防线的某个位置有偶数个防具,那么这个位 置就是毫无破绽的(包括这个位置一个防具也没有的情况,因为 0 也是偶数)。只有有奇数 个防具的位置有破绽,但是整条防线上也最多只有一个位置有奇数个防具。作为行动队的队 长,lqr 要找到防线的破绽以策划下一步的行动。但是,由于防具的数量太多,她实在是不 能看出哪里有破绽。作为 lqr 可以信任的学弟学妹们,你们要帮助她解决这个问题。

输入

输入的第一行是一个整数 T,表示有 T 组互相独立的测试数据。 每组数据的第一行是一个整数 N。
之后 N 行,每行三个整数 Si,Ei,Di,代表第 i 组防具的三个参数。

输出

对于每组测试数据,如果防线没有破绽,即所有的位置都有偶数个防具,输出一行 “There's no weakness.”(不包含引号)
否则在一行内输出两个空格分隔的整数 P 和 C,表示在位置 P 有 C 个防具。当然 C 应 该是一个奇数。

样例输入

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

提示

对于 30% 的数据,满足防具总数不多于 107。
对于 100% 的数据,满足防具总数不多于 108,Si≤Ei,1≤T≤5,N≤200000,0≤Si, Ei,Di≤231-1。


思路:

因为只有一点值为奇数,二分寻找前x项的和是否为奇数即可。


代码:

#include<cstdio>
#include<iostream>
#define LL long long
using namespace std;
const int maxn = 2e6+5;
struct node
{int x, y, w;
}a[maxn];
int t, n;
bool judge(int x)
{int sum=0;for(int i=1; i<=n; ++i){if(x >= a[i].x)sum+=(min(x, a[i].y)-a[i].x)/a[i].w+1;}if(sum&1) return true;else return false;
}
int compte(int x)
{int sum=0;for(int i=1; i<=n; ++i){if(x>=a[i].x && x<=a[i].y && (x-a[i].x)%a[i].w==0)sum++;}return sum;
}
void solve(int m)
{bool flag = true;int r=m, l=1, mid, ans=0;while(l<=r){mid = (l+r)/2;if(judge(mid)){ans = mid;r = mid-1;flag = false;}else l = mid+1;}if(flag) printf("There's no weakness.\n");else printf("%d %d\n", ans, compte(ans));
}
int main()
{scanf("%d", &t);while(t--){int m=0;scanf("%d", &n);for(int i=1; i<=n; ++i){scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].w);m = max(m, a[i].y);}solve(m);}
}

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

  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. 智慧农场基本情况交流会议记录
  2. 基于HTML5的RDP访问实战
  3. oracle查询一个字符串所在表
  4. TreeView控件之,后台构建TreeView(WinForm小程序)
  5. php自定义弹窗,自定义弹窗Style样式
  6. centos mysql无法启动 sock_linux 下mysql无法启动 mysql.sock
  7. linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步
  8. Number()函数转换‘单个数值的数组‘为何是数字?【JavaScript】
  9. 使用Kotlin在活动之间进行Android意向处理
  10. Extjs图书管理系统源码 智能化图书管理系统源码
  11. 什么是 1号信令、7号信令和PRI信令?
  12. java uml下划线_Java UML类图
  13. 简谈【自动化协议逆向工程技术的当前趋势】
  14. C语言数据结构与算法-------查找(二)哈希法
  15. flutter TapBar自定义indicator、固定宽度、圆角、改变indicator和text的距离
  16. 启动日志中出现The APR based Apache Tomcat Native library which allows optimal performance in production env
  17. 『踩坑』pyechart绘图不出图的解决方案
  18. UITextView 内边距设置
  19. 升级联想E450(加内存条换固态重装系统win10)
  20. 马斯克推荐加密通讯聊天软件Signalv5.13.8跨平台国际版几何管家出品

热门文章

  1. python提供的三种基本数值类型_Python 基础数据类型-数值类型
  2. “风口猪”指标-寻找大牛股的波段机会
  3. qq账号存在异常原因
  4. 【邀请函】3月25日平台赋能 数智创新——用友BIP PaaS云平台iuap数智化百城论坛·郑州站
  5. 迷宫救人——DFS小题
  6. peter_lucent@hotmail.com
  7. 怎么能快速赚钱(零成本快速赚钱方式分享)
  8. jsp+ssm+maven美容院管理系统--idea mysql
  9. python开发游戏教程_Python开发星际游戏实例教程
  10. 使用OpenCV计算两幅图像的协方差