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 ...