zoukankan      html  css  js  c++  java
  • 【构造】Codeforces Round #480 (Div. 2) B. Marlin

    题意:给你一个4*n的网格,保证n为奇数,让你在其中放k个障碍物,不能放在边界的格子上,使得从左上角走到右下角的最短路的方案数,恰好等于从左下角走到右上角的最短路的方案数。

    k为偶数时,以纵向为对称轴进行摆放即可。

    k为奇数且小于等于n-2时,如下图横向对称摆放:

    ...........
    ...........
    ...#####...
    ...........

    k等于n时,如下图:

    .............
    .#.........#.
    .###########.
    .............

    k大于n时,在上图空闲的位置随便填即可。

    #include<cstdio>
    using namespace std;
    int n,K;
    char a[6][105];
    int main(){
    	scanf("%d%d",&n,&K);
    	for(int i=1;i<=4;++i){
    		for(int j=1;j<=n;++j){
    			a[i][j]='.';
    		}
    	}
    	puts("YES");
    	if(K%2==0){
    		K/=2;
    		for(int i=1;i<=K;++i){
    			a[2][i+1]=a[3][i+1]='#';
    		}
    	}
    	else{
    		if(n==1){
    			a[2][2]='#';
    		}
    		else if(K<=n-2){
    			for(int i=1,j=(n-K)/2+1;i<=K;++i,++j){
    				a[3][j]='#';
    			}
    		}
    		else if(K==n){
    			for(int i=1,j=2;i<=n-2;++i,++j){
    				a[3][j]='#';
    			}
    			a[2][2]=a[2][n-1]='#';
    		}
    		else{
    			for(int i=1,j=2;i<=n-2;++i,++j){
    				a[3][j]='#';
    			}
    			a[2][2]=a[2][n-1]='#';
    			for(int i=3,j=1;i<=n-2 && j<=K-n;++i,++j){
    				a[2][i]='#';
    			}
    		}
    	}
    	for(int i=1;i<=4;++i){
    		for(int j=1;j<=n;++j){
    			putchar(a[i][j]);
    		}
    		puts("");
    	}
    	return 0;
    }
  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/9013375.html
Copyright © 2011-2022 走看看