hdu 5265 二分 列舉

2021-07-14 21:47:00 字數 734 閱讀 7493

解題思路:

首先對每個數進行去模,這樣得到的數就會是[0,p-1]的範圍,接下來就是如何組合的問題了。

這裡要考慮到模的性質了,假設取的兩個數分別為i,j,其中i >= j,如果當前數i>(p-1)/2,那麼就會出現兩種情況:

1)j>(p-1)/2,這樣算出來的結果必定是i+j-p,i和j肯定都要盡可能大;

2)j<(p-1)/2,這樣算出來的結果必定是i+j,那麼我選擇的j肯定要盡可能的接近(p-1)/2。

如果當前的數i<(p-1)/2,那麼選擇的j同樣是要接近於(p-1)/2。

以上的分析當中選擇最大的即可。

#include#include#include#includeusing namespace std;

const int maxn = 100005;

int n,p,pos,a[maxn];

int main()

sort(a+1,a+1+n);

int tmp = (p - 1) >> 1;

pos = n;

for(int i = 1; i <= n; i++) //找到最後乙個小於等於(p-1)/2的位置

if(a[i] > tmp)

int ans = 0;

for(int i = 2; i <= n; i++)

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

} return 0;

}

HDU 6012 列舉 二分

問題描述 這幾天lotus對培養盆栽很感興趣,於是她想搭建乙個溫室來滿足她的研究慾望。lotus將所有的n n株盆栽都放在新建的溫室裡,所以所有盆栽都處於完全相同的環境中。每一株盆栽都有乙個最佳生長溫度區間 l,r l r 在這個範圍的溫度下生長會生長得最好,但是不一定會提供最佳的研究價值 lotu...

瘋牛(二分列舉)

描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡,他們就要發生爭鬥。為了不讓牛互相傷害。john決定自己給牛分配...

poj 3273 二分列舉

題意 給出乙個有n個資料的陣列,將其分為連續的m份,找到一種分法,是的m份中最大乙份總和最小 參考部落格 題解 一種方案中最大的那部分總和num存在乙個範圍,num總大於等於陣列中最大的那個數,總小於等於整個陣列的和。得到了乙個範圍a b,用二分法不斷縮小範圍,比如第一次取mid a a b 2,那...