計蒜客 騰訊狼人殺 簡單 狀壓 列舉

2021-08-01 18:19:30 字數 1937 閱讀 5474

很久很久以前,在萊茵河畔一座岸壁陡峭的山頂上,有乙個名叫「杜斯特瓦德」的小村莊。不久前,這個小村莊每晚都會受到狼人的侵襲。每個夜晚,狼人都會在村中進行搶劫,並且會有乙個村民成為這群狼人的犧牲品。然而村民們不會坐以待斃,他們試圖在白天找到這些狼人並處決他們。

作為杜斯特瓦德村的長老,你需要組織村民來對抗狼人,村民包括許多有超能力的人,比如預言家可以檢驗乙個人是否是隱藏在神**營的狼人、獵人可以開槍打死一名狼人。因為狼人白天隱藏的非常深,僅僅單人的行動往往不能限制狼人的行動,多人行動將會起到更好的效果。比如預言家和獵人一起行動將被檢驗出是狼人的「村民」直接打死,村莊將回歸和平。

我們將這樣的一對人所產生的戰鬥力記作 ww,值得注意的是,乙個人可以被多次計算,比如預言家可以先後和獵人、女巫(或其他人)組合,即如果預言家和獵人的戰鬥力為 ww,預言家和女巫的戰鬥力為 w』w

​′ ​​ ,這三個人的戰鬥力之和為 w+w』w+w

​′ ​​ 。

不過因為經過「新月」事件,村莊貧苦破敗,你需要支付一定的金額給各個被你聘用的村民,假設你邀請了k個村民,則需要 k(2n-k)k(2n−k) 塊錢(nn 為村民總數),你的資金也不太足夠,所以你希望資金的利用率最大,資金的利用率定義為:((被選擇的人戰鬥力之和 // 你支付的資金))。除此之外有些人基於他們的重要性,是必須被選擇的。你必須邀請他們來參加戰鬥(保證至少一人)。

輸入格式

第一行包括兩個整數 n,mn,m 分別表示 nn 個村民和有 mm 對人之間有戰鬥力。

接下來 mm 行,每行有三個整數 u_i,v_i,w_iu

​i ​​ ,v

​i ​​ ,w

​i ​​ (1 \le u_i,v_i \le n,(1≤u

​i ​​ ,v

​i ​​ ≤n, 1 \le w_i \le 100,1≤w

​i ​​ ≤100, u_i \neq v_i)u

​i ​​ ≠v

​i ​​ ) 表示 這對人可以產生的戰鬥力 w_iw

​i ​​ 。

接下來 nn 個數,對於第 ii 個數,00 表示第 ii 個人可參加戰鬥,11 表示第 ii 個人必須參加戰鬥(保證至少乙個 11)。

對於簡單版本,1 \leq n \leq 20,1≤n≤20, 0 \le m \le n(n-1)/20≤m≤n(n−1)/2;

對於中等版本,1 \leq n \leq 300,1≤n≤300, 0 \le m \le \min(1000, n(n-1)/2)0≤m≤min(1000,n(n−1)/2);

對於困難版本,1 \leq n \leq 400,1≤n≤400, 0 \le m \le \min(10000, n(n-1)/2)0≤m≤min(10000,n(n−1)/2)。

輸出格式

對於簡單版本和中等版本,輸出乙個 44 位小數,表示資金利用率的最大值,結果四捨五入;

對於困難版本,輸出乙個 66 位小數,表示資金利用率的最大值,結果四捨五入。

#include 

using

namespace

std;

int nec[30];

int com[30][30];

int n,m;

int cal(int st)

int main()

for(int i=0;icin>>nec[i];

}int end=(1

for(int st=0;stint flag=0;

for(int i=0;iif(nec[i]==1)}}

if(flag) continue;

int t=cal(st);

double rr=0;

for(int i=0;iif(st&(1

<1.0/(t*(2*n-t));

res=max(rr,res);

}printf("%.4f\n",res );

}

計蒜客題庫加一(簡單)

1,並輸出加一以後的結果。例如 a 2,3,1,1,4 a 2,3 1,1 4 則結果為 2,3,1,1,5 2 3,1 1,5 a 7,8,9 a 7,8 9 則結果為 7,9,0 7 9,0 第一行輸入乙個正整數 n 1 leq n leq 100 n 1 n 100 接下來的一行,輸入用空格分...

計蒜客 灌溉機械人(狀壓DP)

灌溉機械人 include include using namespace std const int max n 100 const int max m 10 int state max n 1 i行狀態 int dp max n 1 1 max m 1 max m i行狀態為j i 1行狀態為k...

計蒜客 封印之門 簡單Floyd應用

蒜頭君被暗黑軍團包圍在一座島上,所有通往近衛軍團的路都有暗黑軍團把手。幸運的是,小島上有一扇上古之神打造的封印之門,可以通往近衛軍團,傳聞至今沒有人能解除封印。封印之門上有一串文字,只包含小寫字母,有 kkk 種操作規則,每個規則可以把乙個字元變換成另外乙個字元。經過任意多次操作以後,最後如果能把封...