1. 程式人生 > >CH0805 防線(秦騰與教學評估)

CH0805 防線(秦騰與教學評估)

clu pan 不可 c++ get sdi ++ 題意 復雜度

題意

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 可以信任的學弟學妹們,你們要幫助她解決這個問題。

對於 100% 的數據,滿足防具總數不多於 \(10^8,S_i≤E_i,1≤T≤5,N≤200000,0≤S_i, E_i,D_i≤2^{31}-1\)

分析

只有一個位置是奇數,設該位置是x。

那麽大於等於x的位置求前綴和是奇數,小於x的位置求前綴和是偶數,具有二分性質。

時間復雜度\(O(N \log_2 E)\)

代碼

#include<bits/stdc++.h>
#define rg register
#define il inline
#define co const
template<class T>il T read(){
    rg T data=0,w=1;
    rg char ch=getchar();
    while(!isdigit(ch)){
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(isdigit(ch))
        data=data*10+ch-'0',ch=getchar();
    return data*w;
}
template<class T>il T read(rg T&x){
    return x=read<T>();
}
typedef long long ll;
using namespace std;

co int N=2e5+1;
unsigned S[N],E[N],D[N];
int main(){
//  freopen(".in","r",stdin);
//  freopen(".out","w",stdout);
    int kase=read<int>();
    while(kase--){
        int n=read<int>();
        for(int i=1;i<=n;++i)
            read(S[i]),read(E[i]),read(D[i]);
        unsigned l=0,r=1U<<31;
        while(l<r){
            unsigned mid=(l+r)>>1,cnt=0;
            for(int i=1;i<=n;++i) if(S[i]<=mid)
                cnt+=1+(min(E[i],mid)-S[i])/D[i];
            if(cnt&1) r=mid;
            else l=mid+1;
        }
        if(l==1U<<31) puts("There's no weakness.");
        else{
            unsigned cnt=0;
            for(int i=1;i<=n;++i)
                if(S[i]<=l&&l<=E[i]&&(l-S[i])%D[i]==0) ++cnt;
            printf("%u %u\n",l,cnt);
        }
    }
    return 0;
}

CH0805 防線(秦騰與教學評估)