洛谷 P2431 正妹吃月餅 解題報告

2022-04-30 05:30:09 字數 796 閱讀 4939

今天是中秋節。\(uim\)帶來了一堆大小不同且味道各異的月餅。

這些月餅的質量分別是\(1g\),\(2g\),\(4g\),\(8g\),\(16g\)....後面乙個是前面的2倍。每種只有乙個。

uim讓正妹隨便吃。

正妹希望嘗試盡可能多的口味,所以會吃盡可能多數量的月餅(不是重量)。而且她的確有些餓了,至少總共要吃掉\(a\)

\(g\)的月餅才能滿足。

然而正妹怕長胖,所以吃月餅不能合計超過\(b\)

\(g\)。

她希望知道自己最多能吃多少個月餅

兩個數,\(a,b\)

正妹能吃到最多的數量

30%資料,\(a,b<=1000\)

60%資料,\(a,b<=100000\)

100%資料,\(a,b<=2^-1\)

我們當然不可以直接列舉,(其實列舉也可以跑過)

把\(b\)進行二進位制拆分以後,對於每個位的1,我們可以把它去掉,然後直接把比它低的位全置1,從高到低列舉1,當第一次產生的新數比\(a\)大時,貪心的去想,就是答案了。

積累了乙個錯誤點:1<1<code:

#include #define ll long long

ll a,b;

ll max(ll x,ll y)

ll cal(ll x)

int main()

}printf("%lld\n",ans);

return 0;

}

2018.7.11

洛谷 P2431 正妹吃月餅

二進位制前置技能 題目傳送門 表示比起正妹更喜歡軟妹 我們把 a 和 b 全部轉換成二進位制,就會得到兩個長度為 62 的二進位制串。這兩個二進位制串的第 i 位可能為 0 或 1 分別表示 a 和 b 的二進位制表示下的第 i 位 從 0 開始 對於 a,b 相等,只有一種情況,我們就不考慮了。然...

luogu2431 正妹吃月餅

求乙個正整數集合 k 使得 sum 2 k in a,b 且 k 最大。a,b 大小在long long範圍內。sum 2 k 這不就是乙個二進位制數,對於該數上的每乙個數字 k 若 k in k 則該數字上的數為1,否則為0麼?所以原題就變成了 求乙個整數 x 使得 x in a,b 且其用二進位...

數論 luoguP2431 正妹吃月餅

題目 很少做這種二進位制的題 感覺很陌生 以後要多練練 感覺位運算好繞 把a二進位制拆分 然後從最低位開始找 如果當前位是0的話 就判斷一下把它變成1之後是不是比b小 小的話就變 有點貪心思想 如下 include include include using namespace std define...