HDU 6383 p1m2 百度之星(二分)

2021-08-22 19:06:29 字數 1258 閱讀 4129

度度熊很喜歡陣列!! 

我們稱乙個整數陣列為穩定的,當且僅當其同時符合以下兩個條件: 

1. 陣列裡面的元素都是非負整數。 

2. 陣列裡面最大的元素跟最小的元素的差值不超過 11。 

舉例而言,[1,2,1,2][1,2,1,2] 是穩定的,而 [−1,0,−1][−1,0,−1] 跟 [1,2,3][1,2,3] 都不是。 

現在,定義乙個在整數陣列進行的操作: 

* 選擇陣列中兩個不同的元素 aa 以及 bb,將 aa 減去 22,以及將 bb 加上 11。 

舉例而言,[1,2,3][1,2,3] 經過一次操作後,有可能變為 [−1,2,4][−1,2,4] 或 [2,2,1][2,2,1]。 

現在給定乙個整數陣列,在任意進行操作後,請問在所有可能達到的穩定陣列中,擁有最大的『陣列中的最小值』的那些陣列,此值是多少呢? 

input

輸入的第一行有乙個正整數 tt,代表接下來有幾組測試資料。 

對於每組測試資料: 

第一行有乙個正整數 nn。 

接下來的一行有 nn 個非負整數 xixi,代表給定的陣列。 

* 1≤n≤3×1051≤n≤3×105 

* 0≤xi≤1080≤xi≤108 

* 1≤t≤181≤t≤18 

* 至多 11 組測試資料中的 n>30000n>30000

output

對於每一組測試資料,請依序各自在一行內輸出乙個整數,代表可能到達的平衡狀態中最大的『陣列中的最小值』,如果無法達成平衡狀態,則輸出 −1−1。

sample input

2

31 2 4

20 100000000

sample output

2

33333333

煩啊,當時我的二分模板錯了,這次就當記錄下新模板;

#include#include#include#include#includeusing namespace std;

const int maxn = 3e5 + 5;

long long int m[maxn];

#define inf 0x3f3f3f3f

int main()

int ans;

while (li <= ri)

if (need >= 0)

else ri = mid - 1;

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

}}

HDU 5692 Snacks 百度之星2A

題意就是根節點到 i 子樹上所有點的最大值,並且這棵樹上的點權可修改。那麼維護所有點到根的和,如果修改乙個 u節點,只會改變根到 u 子樹上點的和。把樹用df s序遍歷一下,把樹變成乙個序列,修改節點就變成了序列的區間修改,找最大值也變成了區間找最值。一棵線段樹搞定了。複雜度 o mlog n pr...

HDU5693 D Game 百度之星2A

連續消去 k 個數,可以表示為消去了若干次 2個數和消去了若干次 3 個數。即k 2 i 3 j,那麼可以消數字就變成了,每次可以消 2 個,或者 3個。f i j 代表i.j 這段數字可以全部消掉,那麼這個狀態可以由f i k and f k 1 j f i 1 j 1 and mark a i ...

百度之星初賽(A) T2

這個程式接受一些形如x i x jx i x j 或 x i neq x jx i x j 的相等 不等約束條件作為輸入,判定是否可以通過給每個 w 賦適當的值,來滿足這些條件。輸入包含多組資料。然而粗心的小w不幸地把每組資料之間的分隔符刪掉了。他只知道每組資料都是不可滿足的,且若把每組資料的最後乙...