洛谷 P5657 CSP S2019 格雷碼

2022-09-09 11:54:14 字數 722 閱讀 9312

p5657

分析:簽到題,不過也有不少細節。

資料範圍需要開unsigned long long,前年也有很多人因此丟了5分。

pow會出現神必錯誤,需要手寫乙個mpow函式。

演算法:我是記錄當前的 \(l,r\) 判斷 \(k\) 與 \(mid\) 的大小,然後分類討論倒序和正序時選左邊和選右邊手玩的結論。變數 \(f\) 代表順序,0 代表正序,1 代表倒序。

\(k\) 在左邊時輸出 \(f\) 並令 \(f\) 等於 0,\(k\) 在右邊時輸出 \(1-f\) 並令 \(f\) 等於 1,然後二分下去即可。

但這樣做在mid=(l+r)>>1時可能爆unsigned long long,所以改成mid=l/2+r/2+(l%2==1&&r%2==1);

**:#includeusing namespace std;

#define int unsigned long long

int n,k;

int qpow(int a,int b)

return ans;

}signed main(){

cin>>n>>k;

int l=0llu,r=qpow(2,n)-1llu,mid,f=0;

while(l題外話:

籤道題罷了

CSP S 2019 洛谷P5658 括號樹

本題中合法括號串的定義如下 是合法括號串。如果a是合法括號串,則 a 是合法括號串。如果a,b是合法括號串,則ab是合法括號串。本題中子串與不同的子串的定義如下 4.字串s的子串是s中連續的任意個字元組成的字串。s的子串可用起始位置 l 與終止位置 r 來表示,記為 s l,r 1 leq l le...

洛谷 P5657 格雷碼

思路 此題是由乙個序列通過n次轉換得來的,因此我們可以把這個序列還原回去,在還原的過程中得到問題的解。做法 設第乙個格雷碼的編號是0,第2個是1 題目中所求的是編號為m 題目中的k 的n位格雷碼,通過觀察發現這個格雷碼序列的前半段的首位都是0,而後半段都是1。所以我們可以通過判斷當前m是在前半段還是...

洛谷P5443 APIO2019 橋梁

apio場外選手沒事休閒做題。看了yyb的題解才把這題做出來 對操作進行分塊,把每 text 個操作分成1組,裡面大概有2類 沒被修改過的和被修改過的。接著對塊內詢問進行離線。對於沒有修改過的 我們可以直接排序然後把他們加入並查集。對於修改過的,我們看他的時間是否大於當前操作的時間,如果大於則加入原...