「二分答案 + 前缀和」防线
防线
题目链接:防线
题目大意
给你件物品,每件物品 3 个信息,起点,终点,每次可以延伸的距离,从起点开始每一个延伸的距离上都会放一个物品,现在问你哪个位置上放的物品是奇数个
题目题解
挺裸的一道二分题,看了下题不好判断二分性,因为本题规定了最多只能出现一个奇数位,考虑用前缀,因为 奇数 + 偶数 = 奇数 那么就好判断了,如果当前位的前缀仍然是奇数,那么就向左,否则向右
//#define fre yes
#include <cstdio>
#include <iostream>
const int N = 2000005;
struct Node {
long long s, e, d;
}a[N];
int n;
long long l, r;
long long check(long long x) {
long long ans = 0;
for (int i = 1; i <= n; i++) {
if(a[i].s <= x) {
ans += (std::min(x, a[i].e) - a[i].s) / a[i].d + 1;
}
} return ans;
}
int main() {
static int t;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d %d %d", &a[i].s, &a[i].e, &a[i].d);
}
l = 0, r = (1 << 31) - 1;
while(l < r) {
long long mid = (l + r) >> 1;
if(!(check(mid) & 1)) l = mid + 1;
else r = mid;
}
long long ans = check(r) - check(r - 1);
if(ans) {
printf("%lld %lld\n", l, ans);
} else puts("There's no weakness.");
} return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Huawei LiteOS基于Cortex-M4 GD32F4平台移植
· mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处