《算法竞赛进阶指南》防线
题目链接: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);}
}
《算法竞赛进阶指南》防线相关推荐
- 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩
文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...
- 《算法竞赛进阶指南》数论篇
<算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...
- CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)
算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...
- 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)
中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...
- 金字塔(算法竞赛进阶指南)
虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下. 经过多年的研究,科学家对这座金字塔的内部结构已经有所了解. 首先,金字塔由若干房间组成,房间之间连有通道. 如果把房间看作节点, ...
- AcWing 122. 糖果传递【贪心】【《算法竞赛进阶指南》,微软面试题 , HAOI2008】
AcWing 122. 糖果传递 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 122. 糖果传递 进阶题目 AcWing 105 ...
- 算法竞赛进阶指南 骑士放置
4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...
- 算法竞赛进阶指南 萌新入门!
算法竞赛进阶指南 文章目录 算法竞赛进阶指南 前言 一.介绍本书 二.如何阅读本书 三.总结 **笔记思路和结构 ** 算法竞赛进阶指南 这篇文章就简单的写一下吧! 前言 作为一个想要入坑的算法的 ...
- 算法竞赛进阶指南0x3A 博弈论之SG函数
算法竞赛进阶指南0x3A 博弈论之SG函数
最新文章
- 智慧农场基本情况交流会议记录
- 基于HTML5的RDP访问实战
- oracle查询一个字符串所在表
- TreeView控件之,后台构建TreeView(WinForm小程序)
- php自定义弹窗,自定义弹窗Style样式
- centos mysql无法启动 sock_linux 下mysql无法启动 mysql.sock
- linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步
- Number()函数转换‘单个数值的数组‘为何是数字?【JavaScript】
- 使用Kotlin在活动之间进行Android意向处理
- Extjs图书管理系统源码 智能化图书管理系统源码
- 什么是 1号信令、7号信令和PRI信令?
- java uml下划线_Java UML类图
- 简谈【自动化协议逆向工程技术的当前趋势】
- C语言数据结构与算法-------查找(二)哈希法
- flutter TapBar自定义indicator、固定宽度、圆角、改变indicator和text的距离
- 启动日志中出现The APR based Apache Tomcat Native library which allows optimal performance in production env
- 『踩坑』pyechart绘图不出图的解决方案
- UITextView 内边距设置
- 升级联想E450(加内存条换固态重装系统win10)
- 马斯克推荐加密通讯聊天软件Signalv5.13.8跨平台国际版几何管家出品
热门文章
- python提供的三种基本数值类型_Python 基础数据类型-数值类型
- “风口猪”指标-寻找大牛股的波段机会
- qq账号存在异常原因
- 【邀请函】3月25日平台赋能 数智创新——用友BIP PaaS云平台iuap数智化百城论坛·郑州站
- 迷宫救人——DFS小题
- peter_lucent@hotmail.com
- 怎么能快速赚钱(零成本快速赚钱方式分享)
- jsp+ssm+maven美容院管理系统--idea mysql
- python开发游戏教程_Python开发星际游戏实例教程
- 使用OpenCV计算两幅图像的协方差