随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

给一些区间【l , r】 , 区间i 内间隔 d[i] 有一个点(可能会重复),保证最后只有一个位置的点数为奇数,其他位置的点数为偶数

找出这个点

 

二分查找

二分点的位置,注意题目中唯一的奇数点

求区间和,判断奇偶性,缩小范围

 

复制代码
#include "bits/stdc++.h"
using namespace std;
 const int N=2e5+5;
 struct T{
     int l,r,d;
 };
 T a[N];
 int n;
 int sum(int p){
     int i,t=0;
     for(i=1;i<=n;i++){
         if(a[i].l<=p)
         t+=(min(a[i].r,p)-a[i].l)/a[i].d+1;
     }
     return t;
 }
 int rs(int l,int r){
     return sum(r)-sum(l-1);
 }
 void sov(){
     cin>>n;
     int i,l=0,r=0,ans;
     for(i=1;i<=n;i++) 
     cin>>a[i].l>>a[i].r>>a[i].d,r=max(r,a[i].r);
     if(sum(r)%2==0){
         cout<<"There's no weakness.\n";return;
     }
     while(l<=r){
         int md=(l+r)/2;
         if(rs(l,md)%2) ans=md,r=md-1; else l=md+1;  
     }
     cout<<ans<<' '<<sum(ans)-sum(ans-1)<<'\n';
 }
 int main(){
     int tes;
      cin>>tes; while(tes--) sov();
 }
复制代码

 

posted on   towboat  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示