BZOJ 4670 佛羅里達

2021-08-02 09:23:36 字數 1206 閱讀 4373

沒有得到雷射**的蘇聯十分生氣,他們決定派遣一支特種部隊強行

登陸美國並造成一定的襲擊。 reddington 得到的情報是他們將在佛羅里達

海岸登陸,他決定派遣他的手下去阻擊他們。可惜的是, reddington 由於

不聽從**的意見,手中的部隊只剩下了 n 個人。人與人之間會有一定的

矛盾值,第 i 個人與第 j 個人的矛盾值為 ti,j,並且有 ti,i = 0, ti,j = tj,i。

reddington 希望將這 n 個人分為兩支小分隊,記為 a, b,每個人要麼屬

於分隊 a 要麼屬於分隊 b。對於一支小分隊 s,其內部的不安值

顯然的,假如一支分隊的不安值很高,那麼作戰能力就會很差。現在

給定你 n 以及乙個 n ∗ n 的矩陣 t,你需要告訴 reddington,最小的

d(a) + d(b) 是多少。

輸入包括多組資料。

對於每組資料:

第一行乙個整數 n。

接下來 n −1 行,第 i 行讀入 n −i 個數,第 i 行第 j 個數表示 ti,i+j。

2 ≤ n ≤ 250, 0 ≤ ti,j ≤ 109,資料組數不超過 2 組

一行,最小的 d(a) + d(b) 是多少 5

4 5 0 2

1 3 7

2 04

4//一種最優方案為: a = , b = ,此時 d(a) = 4, d(b) =0

~~~~~~~~~~~~~~~~~~~~~~~~~~

貪心+隨機化~

每次隨機化乙個貪心序列,然後順次加入,貪心地選擇對答案貢獻最小的加法,然後更新答案。800次就夠了。

**學自尹神~

#include#include#include#includeusing namespace std;

int n,a[251][251],c[251],now1,now2,k1,k2,ans;

bool b[251];

int read()

while(ch>='0' && ch<='9')

return x*f;

}int main()

if(now1+now2>=ans) break;

}ans=min(ans,now1+now2);

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

} return 0;

}

nyoj 467 表示式求值)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證...

中綴式變字尾式 nyoj 467

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證...

NYOJ467中綴式變字尾式

輸入 第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式的中綴式,每個表示式都是以 結束。這個表示式裡只包含 與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入的運算元中不會出現負數。資料保證除數不會為0 輸出每組都輸出該組中...