51Nod 1484 猜數遊戲(離散化)

2021-09-12 22:59:36 字數 1031 閱讀 1942

【思路】

把輸入的每乙個區間都下放到樹的最後一層上,把樹的最後一層看成乙個序列,問題就轉換成了求若干區間的交集和並集,交集比較好求,維護左右斷點值即可。求並集需要將區間端點離散化後再處理,參考了大佬的**,比較詭異,不是很懂正確性。還要注意的是,離散化完以後是乙個點,對應原來的序列可能是乙個區間,也可能是乙個點,需要特殊判斷,所以在離散化的時候不僅需要把區間的左右端點加入,還要把它們的前乙個點和後乙個點也加進來。

#includeusing namespace std;

typedef long long ll;

typedef pairpll;

const int maxn=1e5+5;

int h,q,d,ok;

ll pw[55],le,ri,maxl,minr;

ll v[maxn*6];int tot;

pll a[maxn];int cnt;

int sum[maxn*6];

int main()

sort(v+1,v+1+tot);

tot=unique(v+1,v+1+tot)-(v+1);

for(int i=1;i<=cnt;++i)

for(int i=1;i<=tot;++i) sum[i]+=sum[i-1];

for(int i=1;i<=tot;++i)

int pl=lower_bound(v+1,v+1+tot,maxl)-v;

int pr=lower_bound(v+1,v+1+tot,minr)-v;

if(pr-pl+1==sum[pr]-sum[pl-1])

else if(pr-pl+1>sum[pr]-sum[pl-1]+1)

else

else if(i==tot)

else

break;}}

}return 0;

}

51nod 1536 不一樣的猜數遊戲

任何乙個大於1的自然數 n,如果n不為質數,那麼n可以唯一分解成有限個質數的乘積 如 n p1 a1p2 a2 pn an 如果某個數字是p的倍數,你無法知道這個數字是p x或者p y,所以要把p在n範圍內的每個倍數都要詢問一次,每個素數都要這樣詢問,這樣就可以確定1 n的任意乙個數字了。inclu...

51nod 1536 不一樣的猜數遊戲

1536 不一樣的猜數遊戲 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 瓦斯亞和皮台亞在玩乙個簡單的遊戲。瓦斯亞心中想乙個整數x,它是1到n之間的整數。然後皮台亞嘗試著猜這個數字。皮台亞每次問乙個形如這樣的問題 這個x是y的倍數嗎?這個遊...

51Nod1536 不一樣的猜數遊戲

瓦斯亞和皮台亞在玩乙個簡單的遊戲。瓦斯亞心中想乙個整數x,它是1到n之間的整數。然後皮台亞嘗試著猜這個數字。皮台亞每次問乙個形如這樣的問題 這個x是y的倍數嗎?這個遊戲的流程是這樣的 首先皮台亞把所有他想問的形如上述的問題都問出來 當然他也可以不問任何問題 然後瓦斯亞針對每乙個問題給出yes或no的...