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類 沒被修改過的和被修改過的。接著對塊內詢問進行離線。對於沒有修改過的 我們可以直接排序然後把他們加入並查集。對於修改過的,我們看他的時間是否大於當前操作的時間,如果大於則加入原...