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\n",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\n",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;
}

「CodeForces 581D」Three Logos的更多相关文章

  1. 「CodeForces - 50C 」Happy Farm 5 (几何)

    BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...

  2. 「CodeForces - 598B」Queries on a String

    BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插 ...

  3. 「CodeForces - 717E」Paint it really, really dark gray (dfs)

    BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...

  4. 「CodeForces 476A」Dreamoon and Stairs

    Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...

  5. 「CodeForces 546B」Soldier and Badges 解题报告

    CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...

  6. 「Codeforces 79D」Password

    Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个 ...

  7. 「Codeforces 468C」Hack it!

    Description 定义 \(f(x)\) 表示 \(x\) 的各个数位之和.现在要求 \(\sum_{i=l}^rf(i)\bmod a\). 显然 ans=solve(l,r)%a; if(a ...

  8. 「Codeforces 724F」Uniformly Branched Trees

    题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...

  9. 「codeforces - 1284G」Seollal

    给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...

随机推荐

  1. Wannafly挑战赛28

    总结- A-开始觉得是找规律,最开始模拟当时我觉得如果L达到1e9的范围的话,岂不是要加1e9次,模拟也就没有认真写,现在想来,后面由于加的不再是1,而是我前面的值,这样相当了一个斐波那契的类型,而斐 ...

  2. Factors of Factorial AtCoder - 2286 (N的阶乘的因子个数)(数论)

    Problem Statement You are given an integer N. Find the number of the positive divisors of N!, modulo ...

  3. Python classmethod 修饰符

    描述 classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以调用类的属性,类的方法,实例化对象等. 语法 classmethod语法: ...

  4. rest-framework的权限组件

    权限组件 写在开头: 首先要在models表中添加一个用户类型的字段: class User(models.Model): name=models.CharField(max_length=32) p ...

  5. 【转】Linux下cp: omitting directory `XXX'问题解决

    在linux系统中复制文件夹时提示如下: Shell代码 [root@idtp4 site-packages]# /site-packages/ cp: omitting directory ‘yag ...

  6. Python之操作redis数据库

    使用redis模块 一.操作redis 1.添加信息 (1)直接建key-value信息: 右键-Add New Key,手动添加key和value 右键-Console,打开控制台,写入命令 (2) ...

  7. MYSQL业务数据简单脱敏方案

    removesensitiveinformationplan.sh #!/bin/sh #!在模拟库上运行如下脚本 #!生产库crm-db #!模拟库crm-mock #!.备份生产库 mysqldu ...

  8. 3proxy.cfg 配置文件解析

    最新配置文件的man文档所在位置: /程序目录/doc/html/man3/3proxy.cfg.3.html 官网: https://3proxy.ru/ Download 3proxy tiny ...

  9. 通过修改Tomcat配置,解决乱码问题

    贴图,问题如下: tomcat使用的默认编码方式是iso8859-1 修改tomcat下的conf/server.xml文件 找到如下代码:    <Connector port="8 ...

  10. ToroiseGit提交代码上传到阿里云的Gitlab

    https://blog.csdn.net/xiaomogg/article/details/51903004(copy) 准备 具体过程 准备 1.拥有一个GitHub账户 2.安装了Tortois ...