• codeforces 432E Square Tiling


    codeforces 432E Square Tiling

    题意

    题解

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    #define rep(i, a, b) for(int i=(a); i<(b); i++)
    #define sz(x) (int)x.size()
    #define de(x) cout<< #x<<" = "<<x<<endl
    #define dd(x) cout<< #x<<" = "<<x<<" "
    typedef long long ll;
    typedef pair<int, int> pii;
    typedef vector<int> vi;
    
    const int N = 111;
    
    int n, m;
    bool in[N][N];
    int ans[N][N], ban[N][N];
    
    int calc(int x) {
    	for(int i = 0; ; ++i) if(!(x>>i&1)) return i;
    }
    
    int main() {
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(0);
    	cin >> n >> m;
    	rep(i, 1, n+1) rep(j, 1, m+1) in[i][j] = 1;
    	memset(ans, -1, sizeof(ans));
    	rep(i, 1, n+1) rep(j, 1, m+1) if(ans[i][j]==-1) {
    		int c = calc(ban[i][j]), k; 
    		rep(t, 1, n+1) {
    			bool ok = 1;
    			if(i+t-1>n||j+t-1>m) ok = 0;
    			rep(x, i, i+t) if(ans[x][j+t-1]!=-1 || calc(ban[x][j+t-1])>c) ok = 0;
    			rep(y, j, j+t) if(ans[y][i+t-1]!=-1 || calc(ban[y][i+t-1])>c) ok = 0;
    			if(!ok) break;
    			k = t;
    			if(j+t<=m&&c>calc(ban[i][j+t])) break;
    		}
    		rep(x, i, i+k) rep(y, j, j+k) ans[x][y] = c;
    		rep(x, i, i+k) ban[x][j-1] |= (1<<c), ban[x][j+k] |= (1<<c);
    		rep(y, j, j+k) ban[i-1][y] |= (1<<c), ban[i+k][y] |= (1<<c);
    	}
    	rep(i, 1, n+1) {
    		rep(j, 1, m+1) cout << (char)(ans[i][j]+'A');
    		cout << endl;
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    四轴PID思路整理
    STM32输入捕获TIM2四通道
    四轴和遥控器的对应
    四层板学习(二)
    四层板学习(一)布线前的准备
    冲突的处理方法
    散列表
    重设置电脑时间
    深圳销量统计源码分析
    源码分析
  • 原文地址:https://www.cnblogs.com/wuyuanyuan/p/9297175.html
Copyright © 2020-2023  润新知