WordPress站点地图代码,上海住房城乡建设厅网站首页,交流建设网站,河北省建设厅网站6解析
本题的关键是暴力与构造结合的思想 本题一排排往上填的想法不难得出#xff0c;但是在列数较小的时候就会GG 所以考虑在n5#xff0c;m5时#xff0c;交换n#xff0c;m#xff0c;显然问题还是等价的 如果nm均小于5#xff0c;就直接暴力dfs解决 在最后的…解析
本题的关键是暴力与构造结合的思想 本题一排排往上填的想法不难得出但是在列数较小的时候就会GG 所以考虑在n5m5时交换nm显然问题还是等价的 如果nm均小于5就直接暴力dfs解决 在最后的边界需要打亿个小表 还有一个特殊情况需要特判 3100岂是浪得虚名
代码
#includebits/stdc.h
using namespace std;
const int N2e5100;
const int mod1e97;
#define ll long long
ll read(){ll x0,f1;char cgetchar();while(!isdigit(c)){if(c-)f-1;cgetchar();};while(isdigit(c)){xx*10c-0;cgetchar();};return x*f;
}
int n,m,k;
vectorints[N];
int a[16][16],flag;
void dfs(int x,int y){if(ym){dfs(x1,1);return;}if(xn){int num(0);for(int i1;in;i){for(int j1;jm;j){int cnta[i][j]a[i1][j]a[i][j1]a[i1][j1];if(cnt3) num;if(cnt4) num4;}}if(numk){for(int i1;in;i){for(int j1;jm;j) putchar(a[i][j]||(k0i1j1)?*:.);putchar(\n);}flag1;}return;}a[x][y]0;dfs(x,y1);if(flag) return;a[x][y]1;dfs(x,y1);a[x][y]0;
}
void bf(){dfs(1,1);if(!flag) printf(-1\n);putchar(\n);return;
}
void work1(){int xm-5;//printf(k%d\n,k);if(m5){if(k0){flag1;return;}if(k1){s[n][1]1;flag1;return;}if(k2){s[n][1]s[n][5]1;flag1;return;}if(k3){s[n][1]s[n][3]1;flag1;return;}if(k4){s[n][2]s[n][4]1;flag1;return;}if(k5){s[n][1]s[n][2]1;flag1;return;}if(k6){s[n][1]s[n][2]s[n][5]1;flag1;return;}if(k7){s[n][1]s[n][2]s[n][4]1;flag1;return;}if(k8){flag0;return;}if(k9){s[n][1]s[n][2]s[n][3]1;flag1;return;}if(k10){s[n][1]s[n][2]s[n][4]s[n][5]1;flag1;return;}if(k11){flag0;return;}if(k12){flag0;return;}if(k13){s[n][1]s[n][2]s[n][3]s[n][4]1;flag1;return;}if(k14){flag0;return;}if(k15){flag0;return;}if(k16){s[n][1]s[n][3]s[n][4]s[n][5]s[n][2]1;flag1;return;}flag0;return;}else{if(k0){flag1;return;}if(k1){s[n][m]1;flag1;return;}if(k2){s[n][x2]1;flag1;return;}if(k3){s[n][x2]s[n][m]1;flag1;return;}if(k4){s[n][x2]s[n][x4]1;flag1;return;}if(k5){s[n][x1]s[n][m]1;flag1;return;}if(k6){s[n][x1]s[n][x4]1;flag1;return;}if(k7){s[n][x2]s[n][x4]s[n][x5]1;flag1;return;}if(k8){s[n][x1]s[n][x2]1;flag1;return;}if(k9){s[n][x1]s[n][x2]s[n][m]1;flag1;return;}if(k10){s[n][x1]s[n][x2]s[n][x4]1;flag1;return;}if(k11){flag0;return;}if(k12){s[n][x1]s[n][x2]s[n][x3]1;flag1;return;}if(k13){s[n][x1]s[n][x2]s[n][x4]s[n][x5]1;flag1;return;}if(k14){flag0;return;}if(k15){flag0;return;}if(k16){s[n][x1]s[n][x2]s[n][x3]s[n][x4]1;flag1;return;}if(k19){s[n][x1]s[n][x2]s[n][x3]s[n][x4]s[n][x5]1;flag1;return;}flag0;return;}
}
void work2(int x,int y){flag1;if(k0) return;y--;//printf(k%d\n,k);if(k1){if(ym-2) s[x][m]1;else s[x1][1]1;return;}if(k2){if(ym-3) s[x][m-1]1;else s[x1][2]1;return;}if(k3){if(ym-4){s[x][y2]1;s[x][m]1;}else if(ym-1){s[x1][1]s[x1][3]1;}else if(y1){s[x][3]s[x][m]1;}else if(ym-2){s[x1][2]1;s[x][m]1;}else{s[x1][1]1;s[x][m-1]1;}return;}
}
int main(){#ifndef ONLINE_JUDGE//freopen(a.in,r,stdin);//freopen(a.out,w,stdout);#endifint Tread();int tim(0),f(0);while(T--){flag0;nread();mread();kread();tim;//if(tim1) fn12m12k400;//assert(n5m5);//tim;//if(oo100tim60) //if(ftim46) printf(%d %d %d\n,n,m,k);//if(f) continue;//if(oo100) continue;if(n5m5){bf();continue;}bool jd(0);if(nm) swap(n,m),jd1;if(n3k8*(m-1)-8){if(!jd){for(int i1;in;i){for(int j1;jm;j) putchar(jm?.:*);putchar(\n);}}else{for(int j1;jm;j){for(int i1;in;i) putchar(j1?.:*);putchar(\n);}}putchar(\n);continue;}for(int i1;in;i){s[i].clear();s[i].shrink_to_fit();s[i].resize(m10);for(int j1;jm;j) s[i][j]i1;}for(int i2;in;i){int o0;for(int j1;jm;j){//printf((%d %d) k%d\n,i,j,k);if(inm-j15){o1;work1();break;}if(k4){o1;work2(i,j);break;}s[i][j]1;if(j1) k-1;else if(jm) k-3;else k-4;}if(o) break;}if(!flag){printf(-1\n);putchar(\n);continue;}if(!jd){for(int i1;in;i){for(int j1;jm;j) putchar(s[i][j]?*:.);putchar(\n);}}else{for(int j1;jm;j){for(int i1;in;i) putchar(s[i][j]?*:.);putchar(\n);}}putchar(\n);}return 0;
}
/*
*/