/*
長記性了,以後對大陣列初始化要注意了!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...