Codeforces Round #322 D Three Logos
2015-09-30 11:01
411 查看
题意:给你6个数x1,y1,x2,y2,x3,y3、 这6个数分别为一个广告牌的长和宽、问你这3个广告牌是否可以组成一个n*n的正方形、 第一个广告牌的字母为A,第二个为B第三个为C
输出这个正方形,如果有多组,随便输出其中一组便可、广告牌只能用一次,也可以旋转、
思路:可以想到,如果三个广告牌可以组成正方形的话,那么正方形N的边长一定为6个数中的最大值、那么既然知道了正方形的大小,便可以将边长等于这个正方形的一个广告牌先放入,剩下两个广告牌组合便可、 我的思路不是特别好,虽然能AC不过代码特别长、
AC代码:
输出这个正方形,如果有多组,随便输出其中一组便可、广告牌只能用一次,也可以旋转、
思路:可以想到,如果三个广告牌可以组成正方形的话,那么正方形N的边长一定为6个数中的最大值、那么既然知道了正方形的大小,便可以将边长等于这个正方形的一个广告牌先放入,剩下两个广告牌组合便可、 我的思路不是特别好,虽然能AC不过代码特别长、
AC代码:
#include<cstdio> #include<algorithm> using namespace std; const int maxn=110; int map[maxn][maxn]; int n; int x1,y1; int x2,y2; int x3,y3; int xx; int falg; void Init() { xx=0; if(x1<y1) swap(x1,y1); if(x2<y2) swap(x2,y2); if(x3<y3) swap(x3,y3); xx=max(x1,xx); xx=max(x2,xx); xx=max(x3,xx); if(xx==x1) falg=1; else if(xx==x2) falg=2; else if(xx==x3) falg=3; } int main() { while(scanf("%d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF){ Init(); if(x1==x2&&x2==x3&&y1+y2+y3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); printf("\n"); } for(int i=0;i<y3;i++){ for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } if(falg==1){ if(x2==x3&&x2+y1==xx&&y2+y3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); printf("\n"); } for(int i=0;i<x2;i++){ for(int j=0;j<y2;j++) printf("B"); for(int j=0;j<y3;j++) printf("C"); printf("\n"); } continue; } else if(y2==x3&&y2+y1==xx&&x2+y3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); for(int j=0;j<y3;j++) printf("C"); printf("\n"); } continue; } else if(x2==y3&&x2+y1==xx&&y2+x3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); printf("\n"); } for(int i=0;i<x2;i++){ for(int j=0;j<y2;j++) printf("B"); for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } else if(y2==y3&&y2+y1==xx&&x2+x3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } } else if(falg==2){ if(x1==x3&&x1+y2==xx&&y1+y3==xx){ printf("%d\n",xx); for(int i=0;i<x1;i++){ for(int j=0;j<y1;j++) printf("A"); for(int j=0;j<y3;j++) printf("C"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); printf("\n"); } continue; } else if(y1==x3&&y1+y2==xx&&x1+y3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); for(int j=0;j<y3;j++) printf("C"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); printf("\n"); } continue; } else if(x1==y3&&x1+y2==xx&&y1+x3==xx){ printf("%d\n",xx); for(int i=0;i<x1;i++){ for(int j=0;j<y1;j++) printf("A"); for(int j=0;j<x3;j++) printf("C"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); printf("\n"); } continue; } else if(y1==y3&&y1+y2==xx&&x1+x3==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); for(int j=0;j<x3;j++) printf("C"); printf("\n"); } for(int i=0;i<y2;i++){ for(int j=0;j<x2;j++) printf("B"); printf("\n"); } continue; } } else if(falg==3){ if(x1==x2&&x1+y3==xx&&y1+y2==xx){ printf("%d\n",xx); for(int i=0;i<x1;i++){ for(int j=0;j<y1;j++) printf("A"); for(int j=0;j<y2;j++) printf("B"); printf("\n"); } for(int i=0;i<y3;i++){ for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } else if(y1==x2&&y1+y3==xx&&x1+y2==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); for(int j=0;j<y2;j++) printf("B"); printf("\n"); } for(int i=0;i<y3;i++){ for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } else if(x1==y2&&x1+y3==xx&&y1+x2==xx){ printf("%d\n",xx); for(int i=0;i<x1;i++){ for(int j=0;j<y1;j++) printf("A"); for(int j=0;j<x2;j++) printf("B"); printf("\n"); } for(int i=0;i<y3;i++){ for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } else if(y1==y2&&y1+y3==xx&&x1+x2==xx){ printf("%d\n",xx); for(int i=0;i<y1;i++){ for(int j=0;j<x1;j++) printf("A"); for(int j=0;j<x2;j++) printf("B"); printf("\n"); } for(int i=0;i<y3;i++){ for(int j=0;j<x3;j++) printf("C"); printf("\n"); } continue; } } printf("-1\n"); } return 0; }
相关文章推荐
- GOOGLE MAP API 如何通过经纬度获取地址信息?
- Google Maps API V3学习一(获取地图坐标与街道地址)
- 如何动态设置django的model field的默认值
- django之todolist(一)
- go struct结构的实例
- Go 面向对象概念
- Google Chrome 浏览器怎么找到看完视频之后那个缓存文件 谢谢
- GOF 23设计模式之 组合模式(composite)
- GOF 23设计模式之 桥接模式
- ADT配置解决goole被墙问题
- Django提示mimetype无法识别错误
- golang笔记:net/smtp
- Codeforces 581D Three Logos 模拟 枚举
- 求两个有序数组的中位数(扩展求第k大元素)
- hdu 5447 Good Numbers(数论)
- go int类型转换string,通过反射类型对比
- Go语言监控文件变化小程序.
- Codeforces Round #322 D.Three Logos
- googletest : TestWithParam 源码跟踪
- Mongo的一些心得