hdu 4770 狀壓 列舉

2021-06-26 19:34:09 字數 1528 閱讀 1853

/*

長記性了,以後對大陣列初始化要注意了!140ms

原來是對vis陣列進行每次初始化,每次初始化要200*200的複雜度

一直超時,發現沒必要這樣,直接標記點就行了,只需要乙個15的陣列用來標記,vis陣列用來對映座標就行了

然後就是暴力加了一點優化,下面沒有加優化。

*/#include#include#define inf 0x3fffffff

#define n 210

int vis[n][n];

char s[n][n];

int vss[20];

struct node

fp[n],ff[n];

int dd(int xx,int yy)

else

vss[vis[xx][yy]]++;

return 0;

}int flag[n];

int x1,y1,x2,y2;

void td(int k)

if(k==1)

if(k==2)

if(k==3)

return ;

}int n,m;

int judge(int xx,int yy)

void init(int xx,int yy)

int main()

if(cnt==0)

for(i=0; i<(1maxx=len;

break;}}

// printf("%d %d\n",cur,num);

}if(maxx==inf)

printf("-1\n");

else

printf("%d\n",maxx);

}return 0;

}

/*

343ms

純暴力*/

#include#include#define inf 0x3fffffff

#define n 300

int vis[n][n];

char s[n][n];

int vss[n];

struct node

fp[n],ff[n];

int dd(int xx,int yy)

return 0;

}int x1,y1,x2,y2;

void td(int k)

if(k==1)

if(k==2)

if(k==3)

return ;

}int n,m;

int judge(int xx,int yy)

int main()

if(cnt==0)

for(i=0; i<(1maxx=len;

break;}}

}}

if(maxx==inf)

printf("-1\n");

else

printf("%d\n",maxx);

}return 0;

}

hdu 4770 列舉 dfs爆搜)

思路 由於最多只有15個 可以直接列舉放置的位置,然後判斷是否能夠全部點亮即可。需要注意的是,有乙個特殊的light,也需要列舉它的位置以及放置的方向。include include include include using namespace std const int max n 200 22...

HDU2489 狀壓列舉

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

HDU2489 狀壓列舉

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