zoukankan      html  css  js  c++  java
  • 「CodeForces 581D」Three Logos

    BUPT 2017 Summer Training (for 16) #3A

    题意

    给你三个矩形,需要不重叠不留空地组成一个正方形。不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形)。

    题解

    我的做法是直接枚举三个是否旋转90度,然后考虑两种组成,|||和=|,枚举3的排列。
    其实可以先计算面积s,如果r=sqrt(s)不是整数则无解。然后找到一个较长边为r的矩阵先输出,再输出剩下两个。

    代码

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    struct rec{
    	int w,h;
    	void in(){
    		scanf("%d%d",&w,&h);
    	}
    	void sw(){
    		swap(w,h);
    	}
    }d[3];
    void output(int a,int b,int c,int t){
    	int i,j;
    	if(t==1){
    		printf("%d
    ",d[c].w);
    		for(i=0;i<d[c].h;++i){
    			for(j=0;j<d[c].w;++j)
    				putchar(c+'A');
    			puts("");
    		}
    		for(;i<d[c].w;++i){
    			for(j=0;j<d[a].w;++j)
    				putchar(a+'A');
    			for(;j<d[c].w;++j)
    				putchar(b+'A');
    			puts("");
    		}
    	}else{
    		printf("%d
    ",d[a].w);
    		for(i=0;i<d[a].h;++i){
    			for(j=0;j<d[a].w;++j)
    				putchar(a+'A');
    			puts("");
    		}
    		for(i=0;i<d[b].h;++i){
    			for(j=0;j<d[b].w;++j)
    				putchar(b+'A');
    			puts("");
    		}
    		for(i=0;i<d[c].h;++i){
    			for(j=0;j<d[c].w;++j)
    				putchar(c+'A');
    			puts("");
    		}
    	}
    }
    bool ck(){
    	for(int i=0;i<3;++i)
    		for(int j=0;j<3;++j)
    			for(int k=0;k<3;++k)
    			if(i!=j&&j!=k&&k!=i){
    				if(d[i].w+d[j].w==d[k].w&&d[i].h==d[j].h&&d[i].h+d[k].h==d[k].w){
    					output(i,j,k,1);return true;
    				}
    				if(d[i].h+d[j].h+d[k].h==d[i].w&&d[i].w==d[j].w&&d[j].w==d[k].w){
    					output(i,j,k,2);return true;
    				}
    			}
    
    	return false;
    }
    bool solve(){
    	for(int i=0;i<2;++i,d[0].sw())
    		for(int j=0;j<2;++j,d[1].sw())
    			for(int k=0;k<2;++k,d[2].sw())
    				if(ck())return true;
    	return false;
    }
    int main(){
    	for(int i=0;i<3;++i)d[i].in();
    	if(!solve())puts("-1");
    	return 0;
    }
    
  • 相关阅读:
    插入排序
    JavaMail学习笔记
    汉诺塔问题
    使用Three.js绘制一个虚拟城市
    jquery flotcharts使用简介
    用CSS hack技术解决浏览器兼容性问题.
    IE条件注释详解.
    让IE6也认识!important
    代码重构(转)
    模版+数据分离渲染方式的设计与实现
  • 原文地址:https://www.cnblogs.com/flipped/p/7219882.html
Copyright © 2011-2022 走看看