AcWing 秦騰與教學評估

2022-06-25 01:48:10 字數 1110 閱讀 7578

第一次在乙個oj上發了篇題解,沒想到他們沒有題解審核機制,直接就出現在題解區了.

那裡的markdown在這裡無效,我調了一下再發到這裡儲存一下.

二分

時間複雜度 o(nlogn)

藍書而來.

本題重點在於滿足條件的位置只會不存在或者有且僅有乙個,而這個點有乙個特殊性質:人數是奇數.

設想:在連續的一段位置上,如果每個位置上的人數加起來為偶數,那麼這一段裡面不可能存在乙個奇數.

如果人數加起來為奇數,那麼唯一乙個人數為奇數的位置必然在這一段上,利用這個特性可以二分求解.

注意對一段位置上的人數統計是可以寫出o(n)方法的,複雜度太高了會tle.具體實現請結合**注釋理解.

另外,不開long long見祖宗.

#include #include 

#include

#include

using

namespace

std;

intt, n;

struct

st[200010

];long

long cnt(long

long l, long

long r)

end = min(r, e); //

這裡對end的處理是顯然的

if(end - begin < 0) continue

; ct += (end - begin) / d + 1; //

注意當end與bgin相等時人數一定是1

}

return

ct;}

intmain()

if(bad) puts("

poor qin teng:(");

else printf("

%lld %lld\n

", l, cnt(l, l));

}return0;

}

ac code

bzoj1271 秦騰與教學評估

有n個檢查小組,在乙個 0 2 31 1 的區間中檢查,每個小組的分布情況我們這樣描述 s代表起點,e代表終點,d代表從起點開始每隔d個位置安排乙個人到終點結束。詢問整個區間中有沒有乙個位置為奇數個人。有輸出這個位置和位置上的人數,否則輸出 poor qin teng 很機智的方法,用字首和表示奇偶...

BJWC2008 秦騰與教學評估

傳送門 這道題是一道二分答案題 我估計很難看出這是二分答案 題目要求求出序列中老師為奇數的是哪乙個點。這道題它十分神奇,我們往往都會糾結在如何存下這麼多的點,如何處理老師的站位。但是這些並不是解題的關鍵,我們要注意乙個重點,就是序列中最多只有乙個位置有奇數個老師,這樣的話,我們能知道,包含這個位置的...

BJWC2008 秦騰與教學評估

嘟嘟嘟 二分好題。怎麼二分呢?反正我是沒想出來。看了題解。因為只有乙個為奇數的點,所以對於乙個位置x,求出區間 0,x 的教總和,如果為奇數,說明x取大了 否則x取小了 妙啊 雖然答案在int內,但是l r可能會爆int,導致有幾個點tle了,所以還是都開long long 吧。1 include2...