2020百度之星初賽一 Matrix

2021-10-08 11:44:42 字數 1474 閱讀 1638

problem description

有乙個二維平面,給定 length[1],length[2],length[3],length[4],畫出 4 個正方形區域。

第 i 個區域為 (x,y) | |x|<=length[i],|y|<=length[i]。

對於乙個整點 (x,y) 其權值為 (|x|+|y|)∗cnt,其中 cnt 為覆蓋該點的區域個數。(點在區域邊界上或者在區域內,都稱為被區域覆蓋)。

現在需要在至少被乙個區域覆蓋的整點點集中,選出 k 個兩兩不同的點,使得總權值和最小。

輸出最小的權值總和。

input

第一行乙個整數 t(t≤100) 表示 t 組測試資料。

每組資料有 5 個數字,分別表示 length[1],length[2],length[3],length[4],k。滿足 1≤length[1]資料保證一定能選出 k 個點。

output

對每組資料輸出一行,表示答案。

sample input

41 2 3 4 1

1 2 3 4 2

1 2 3 4 6

1 5 7 9 12

sample output04

2064

樣例解釋

對於第一組樣例,取 (0,0);

對於第二組樣例,取 (0,0)、(0,1);

對於第三組樣例,取 (0,0)、(0,1)、(1,0)、(-1,0)、(0,-1)、(1,0)、(4,0);

思路:

正解裡寫的是二分最後點的最大權值,表示看得不是很懂。

然後參考了上面題解裡的寫法。

也就是,列舉當前的權值,然後對於4個區域分別判斷對於權值w

ww的點,這個區域有多少個點。

因為列舉權值均攤下來,每次可以消去4∗l

en[1

]+le

n[2]

+len

[3]+

len[

4]

44*\frac

4∗4len

[1]+

len[

2]+l

en[3

]+le

n[4]

​個點。所以k

\sqrt

k​的時間複雜度可以解決這個問題。

#include

#include

#include

using

namespace std;

typedef

long

long ll;

int a[10]

;ll get

(ll x,

int len)

intmain()

} w++;}

printf

("%lld\n"

,ans);}

return0;

}

2020百度之星初賽一 B GPA

problem description 小沃沃一共參加了 4 門考試,每門考試滿分 100 分,最低 0 分,分數是整數。給定四門考試的總分,請問在最優情況下,四門課績點的和最高是多少?分數與績點之間的對應關係如下 95 100 4.3 90 94 4.0 85 89 3.7 80 84 3.3 7...

2020百度之星初賽二 Covid

problem description 科學家小沃沃在研究病毒傳播的規律,從而控制疫情。有 n 個人,編號分別為 1,2,n。我們用螢光粉代替病毒,編號為 1 的人,在第 0 時刻塗上了螢光粉,剩下的人在第 0 時刻沒有塗。對於第 i 個人,我們知道這個人在哪些時刻出現在了哪些地方。如果時刻 t,某...

2020百度之星初賽三Discount C 解法

problem description 學皇來到了乙個餐館吃飯。他覺得這家餐館很好吃,於是就想辦個會員。一共有 n 種會員充值卡 假設學皇這餐飯的消費為 a 元,選擇第 i 種 需要充值 b i a 的錢,這次吃飯可以打c i 10 折,由充值的錢支付 即這次吃飯只需要從充值金額中扣除 a c i ...