HDU2489 狀壓列舉

2022-02-28 23:46:00 字數 498 閱讀 8805

題意:

給你n個點的圖,然後讓你在圖里挑m個點,達到sumedge/sumnode最小

思路:由於資料範圍小,狀壓列舉符合m個點的狀態,我是用vactor存了結點位置,也記錄了結點的sum值,然後跑一發最小生成樹就可以知道sumedge,這裡判斷可以利用乘法,然後更新乙個狀態就好了;

#include using namespace std;

typedef long long ll;

int ma[20][20];

int val[20];

int sumnode,sumedge;

int n,m;

int cnt;

int a,b;

int dis[20];

vectorpb;

bool vis[20];

int prim()

}for(int i=0;isumedge*b)}}

int flag=0;

for(int i=0;i

HDU2489 狀壓列舉

題意 給你n個點的圖,然後讓你在圖里挑m個點,達到sumedge sumnode最小 思路 由於資料範圍小,狀壓列舉符合m個點的狀態,我是用vactor存了結點位置,也記錄了結點的sum值,然後跑一發最小生成樹就可以知道sumedge,這裡判斷可以利用乘法,然後更新乙個狀態就好了 include u...

hdu 4770 狀壓 列舉

長記性了,以後對大陣列初始化要注意了!140ms 原來是對vis陣列進行每次初始化,每次初始化要200 200的複雜度 一直超時,發現沒必要這樣,直接標記點就行了,只需要乙個15的陣列用來標記,vis陣列用來對映座標就行了 然後就是暴力加了一點優化,下面沒有加優化。include include d...

UVA 11825 狀壓 子集列舉

題意 給你若干個集合,讓你把這些集合做劃分使的每個劃分的並集是乙個全集,問你最多能進行多少個劃分。思路 首先了解下子集列舉的方法 for int i s i i i 1 i 1使得末尾最右邊的1右邊的0變成1,自己變成0,然後經過與運算把不存在的1刪掉,原來是0的位無論如何也不會變成1,但是原來是1...