牛客暑期訓練第二場F Partition(dfs)

2021-09-26 11:19:30 字數 675 閱讀 5900

題目:

題意:2*n個人(n<=14),分兩組,求競爭值最大和。兩人 i, j 的競爭值指 i , j 在不同隊時的a[i][j],對於乙個人要算出與他不同隊伍的所有人的競爭值之和。

思路:先把所有人都放b隊,每次選乙個放a隊。

**:

#include #define ll long long

using namespace std;

const int maxn = 30;

ll ans, sum[maxn];

int n, a[maxn][maxn];

vectorv;

void dfs(int pos, ll res)

if(pos>n || v.size()>n/2) return ;

ll tmp = sum[pos];

for(auto it : v) tmp = tmp - a[pos][it] - a[it][pos];

v.push_back(pos); dfs(pos+1, res+tmp);

v.pop_back(); dfs(pos+1, res);

}int main()

2019牛客暑期多校訓練營(第二場)

題意 題解 c 版本一 include using namespace std typedef long long ll const int mod 1e9 7 ll power ll a,ll b a是底數,b是次冪 return ans ll phi ll n 求尤拉函式值 返回值為多少個與n互...

2019牛客暑期多校訓練營(第二場)

有2 n個人,平均分為兩隊,當i和j不在同一隊時,獲得權值vij v vi j 求權值總和的最大值 暴力!暴力!暴力!首先劃分28個人有c 2814 c c2 814 種情況,約為4e7,然後計算權值總和本來需要14 14的複雜度,這樣肯定會t,因此需要想辦法優化這個14 14,於是我在翻別人的 的...

2020牛客暑期多校訓練營(第二場) A

時間限制 c c 3秒,其他語言6秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 given n strings s 1,s 2,cdots,s ns1 s2 sn now define f s,t as the maximum i t...