BZOJ--1271-秦騰與教學評估
阿新 • • 發佈:2018-12-03
題目電波: BZOJ--1271-秦騰與教學評估
列舉點的位置 先判斷一共有多少個人數 人數%2==0 說明不符合
之後列舉點的位置 看左邊人數是奇數還是偶數
#include<bits/stdc++.h> using namespace std; #define LL long long #define maxn 200005 LL a[maxn],b[maxn],c[maxn]; int main(){ int t; cin>>t; while(t--){ int n; bool fa=0; cin>>n; LL r=0; LL sum=0; for(int j=1;j<=n;j++){ scanf("%lld%lld%lld",&a[j],&b[j],&c[j]); sum+=1+(b[j]-a[j])/c[j]; r=max(r,b[j]);} if(sum%2==0) fa=1; if(fa) printf("Poor QIN Teng:(\n"); else{ sum=0; LL l=1; LL mid; while(l<=r){ LL ans=0; mid=1LL*(l+r)/2; for(int j=1;j<=n;j++){ if(a[j]<=mid&&mid<=b[j]){ ans+=1+(mid-a[j])/c[j];}else if(mid>b[j]){ ans+=1+(b[j]-a[j])/c[j]; } } if(ans%2){ r=mid-1; }else{ l=mid+1; } } for(int j=1;j<=n;j++){ if(l>=a[j]&&l<=b[j]){ if((l-a[j])%c[j]==0) sum++;} } printf("%lld %lld\n",l,sum); } } }