rqnoj646
現在有n個元素,每個元素具有3個屬性ai, bi, ci,現在青青要求把全部元素分為3個集合,稱為集合x、集合y和集合z,使表示式
的值最小。
可以讓某個集合為空。
1 ≤ n ≤ 100, 000,1 ≤ ai, bi, ci ≤ 100, 000, 000
怎麼說呢?
這題是我至今見到過的最神奇的一題。神奇到嘆為觀止。
經嘗試,貪心是不行的,易找出反例。
經嘗試,高深的演算法和資料結構是很難想出來和寫出來的。
經了解,本題可以用搜尋做。且必須是裸搜,即o(3^n)的。
經嘗試,若加個排序的預處理,寫o(nlogn+2^n)是過不了的。
對於o(3^(10^5))在1s內跑出,我實在無話可講。
這就是:只有想不到,沒有做不到。
vara,b,c:array[1..1000000] of longint;
n,i,j,k,l,p,min:longint;
procedure search(i,s1,s2,s3:longint);
begin
if s1+s2+s3>=min then exit;
if i<=n then
if (a[i]<=s1)or(b[i]<=s2)or(c[i]<=s3) then search(i+1,s1,s2,s3)
else
begin
if a[i]>s1 then search(i+1,a[i],s2,s3);
if b[i]>s2 then search(i+1,s1,b[i],s3);
if c[i]>s3 then search(i+1,s1,s2,c[i]);
endelse min:=s1+s2+s3;
end;
begin
readln(n);
for i:=1 to n do readln(a[i],b[i],c[i]);
min:=100000000;
search(1,0,0,0);
writeln(min);
end.
一道搜尋好題
這個題真的叫這個名字 一道搜尋好題 我也很絕望 但是這並不是好題推薦 題目描述 給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 輸入樣例 10輸出樣例 2 4 4 看起來非常的不靠譜對不對 實...
一道搜尋好題
給定乙個數s,找任意個正整數a1,a2,an,使得它們的和恰好等於s,且它們的倒數之和與1的差不超過10 6。輸出任意一種方案或者輸出無解。s 65536 解析 事實上也是簡單的搜尋。從小到大列舉每個數,加入試試看。兩個剪枝 當前的和加上最大的和到不了1,退出。當前的和加上最小的和都超過了1,退出。...
一道演算法題
兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...