洛谷5657
去年noip省賽題,當時就學了1個月oi所以第一題就慘遭爆零,如今再回來刷一遍過了……
總體思路就是把格雷碼當成十進位制的數字進行處理,最後再轉化回二進位制。轉化後的樣子如下:
\(0 \ 1\)
\(0 \ 1 \ 3 \ 2\)
\(0 \ 1 \ 3 \ 2 \ 6 \ 7 \ 5 \ 4\)
\(\dots\)
假設最終結果為\(f(n,k)\)。
不難發現如果要求的數在該行的左半邊:
即\(k<2^\)
那麼\(f(n,k)=f(n-1,k)\)
如果要求的數在該行的右半邊:
即\(k>=2^\)
那麼\(f(n,k)=2^+f(n,2^-1-k)\)
這樣的話我們就可以用遞迴來解決,最後的返回條件就是\(n=1\)時若\(k=0\)則返回\(0\),若\(k=1\)則返回\(1\)。
(以下**中\(ll\)代表\(unsigned \ long \ long\))
ll dfs(int num,ll a)
但這時我們注意到乙個問題:\(num=64\)時\(2^\)會炸\(unsigned \ long \ long\)……
那我們特判一下不就行了。
ll dfs(int num,ll a)
最後再把數字轉化為二進位制即可。
#includeusing namespace std;
typedef unsigned long long ll;//記得開unsigned long long
int n;
ll k;
bool ans[70];
ll power(int x)
return ans;
}ll dfs(int num,ll a)
void change(ll x)
}int main(){
cin>>n>>k;
change(dfs(n,k));
for(int i=n-1;i>=0;i--) cout《幸甚至哉,歌以詠志。
NOIP2019提高組模擬 購物(題解)
強烈譴責 這道題不符合生活常識,優惠卷面額的作用竟然不是扣多少錢的而是扣到多少錢,巨坑!關鍵是樣例還能過,mmp 題解 這道題可以採用貪心的思想,把優惠了的和沒優惠的所以合成乙個陣列在一起算,一起sort一下,然後就要堅持乙個商品只能買一次的原則,將每個要選的優惠後的 標記一波,不選它的原來 而且要...
NOIP2019普及組紀念品
不廢話了,傳送門 p5662 難點在於如何處理擁有的紀念品。我們不妨在當天交易之前把持有的紀念品全部賣出,但你發現你不知道這一天的紀念品如何儲存,我們發現在每一天的最後把購置的紀念品全部以第二天的 賣出,就相當於在第二天一開始賣出,那麼為什麼一定在全部交易完後才賣呢?我們完全可以在買的同時用第二天的...
noip2019 動態規劃刷題歷程
加粗的是值得總結的 從洛谷的普及題開始刷題 揹包式dp 有些技巧的 1.p2639 usaco09oct bessie的體重問題 p1049取模意義下01揹包 技巧 重量 價值 2.金明的預算問題 很經典了 技巧 樹形揹包 3.p1131 zjoi2007 時態同步 技巧 單一表示式樹上dp dag...