luogu2431 正妹吃月餅

2022-06-30 08:15:14 字數 891 閱讀 6091

求乙個正整數集合\(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]\),且其用二進位制表示的1的個數最多。

怎麼求這個\(x\)呢?

若\(a,b\)二進位制最高位數不同,則結果為\(a\)最高位數-1。如\(a=(10100)_2,b=(101)_2\),則結果為4,因為\((1111)_2\)。

滿足情況1時的特殊情況。若\(a\)用二進位制表示全是1,則結果為情況1的結果加1.如\(a=(11111)_2,b=(101)_2\),則結果為5,因為\((11111)_2\)。

若最高位數相同,則把兩個數的最高位去掉,轉化為子問題,再在此基礎上+1.如:\(a=(110100)_2,b=(100101)_2\),則結果為5,因為把兩個數最高位的1去掉就成了情況1的例子,再在此基礎上+1便是。

#include #include #include #include using namespace std;

#define ll long long

int gethighbitpos(ll x)

return ans;

}ll all(int n)

ll erase(ll x, int pos)

int dfs(ll below, ll above)

else

return 1 + dfs(erase(below, pb), erase(above, pa));

}int main()

2431 移動奶牛(herding)

題目描述 farmer john的三頭獲獎奶牛bessie elsie和mildred,總是會迷路走到農場上遙遠的地方去!他需要你幫助將她們一起趕回來。農場的草地大體是一塊狹長的區域 我們可以將其想象成一條數軸,奶牛可以佔據數軸上的任意整數字置。這3頭奶牛現在正位於不同的整數字置,farmer jo...

POJ 2431(優先佇列)

題意 從起點到終點距離為n,走1單位路程消耗1單位油,路上會有m個加油站分別出現在si的位置,路過加油站時可以選擇是否加油。問到達加油站最少需要加幾次油,不能到輸出 1.分析 整體上來看,汽車每經過乙個加油站就擁有了在這個加油站加油的能力,可以將加油站加入優先佇列,沒油時優先選取大的。收穫 路過即獲...

復健運動poj2431

題目大意 一頭牛從起點到終點,最開始有p公升油,每走一公里漏一公升油,路途上有許多加油點,油箱容量為無窮大,求能到終點的最小加油次數。挑戰程式設計競賽 建議首先處理輸入資料,使之成為到起點的距離。優先佇列練習 用優先佇列儲存路過的加油點的油。每次取用最大值,這樣會使加油次數儘量減少。每取出一次就an...