Frame

题目链接:

http://acm.hust.edu.cn/vjudge/contest/130303#problem/D

Description


http://7xjob4.com1.z0.glb.clouddn.com/17e6574035df3f9b6d1fc6dfd8b650ac

Input


The input file contains several test cases, each of them as described below.
The first line contains 2 integers — X and Y (3 ≤ X ≤ 10^6, 3 ≤ Y ≤ 10^6). The second line
contains integer N — the number of tile types to be analyzed (1 ≤ N ≤ 1000). Each of following N
lines contains one integer, not exceeding 10^6. We designate with AK the integer on the (k + 2)-th line of the input file.

Output


For each test case, your goal is to print N lines, where the K-th line should contain the word ‘YES’, if it is possible to tile the frame with size X × Y with tiles AK × 1, and the word ‘NO’ otherwise.

Sample Input


```
5 6
2
3
4
```

Sample Output


```
YES
NO
```

Source


2016-HUST-线下组队赛-4


##题意:

在X*Y的矩形的最外圈放若干个 A*1 的小矩形,判断对于给定的A能够恰好完全覆盖.


##题解:

考虑最上面一行的情况,第一块小矩形要么从#(1,1)开始,要么从#(1,2)开始(留出第一格给竖的矩形).
确定第一块的位置后,后面的摆放情况是固定的,所以依次判断一下是否合法即可.


##代码:
``` cpp
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define maxn 101000
#define inf 0x3f3f3f3f
#define mod 1000000007
#define mid(a,b) ((a+b)>>1)
#define eps 1e-8
#define IN freopen("in.txt","r",stdin);
using namespace std;

int n;

int x,y;

bool solve(int a) {

int last1 = x % a;

if(last1 > 1) return 0;

if(last1 == 1) {

int last2 = y % a;

if(last2 > 1) return 0;

if(last2 == 1) return 1;

if(last2 == 0) return (y-2) % a == 0;

}

if(last1 == 0) {

int last2 = (y-1) % a;

if(last2 > 1) return 0;

if(last2 == 1) return 1;

if(last2 == 0) return (x-2) % a == 0;

}

}

bool solve2(int a) {

int last1 = (x-1) % a;

if(last1 > 1) return 0;

if(last1 == 1) {

int last2 = y % a;

if(last2 > 1) return 0;

if(last2 == 0) return 1;

if(last2 == 1) return x % a == 0;

}

if(last1 == 0) {

int last2 = (y-1) % a;

if(last2 > 1) return 0;

if(last2 == 0) return 1;

if(last2 == 1) return y % a == 0;

}

}

int main()

{

//IN;

while(scanf("%d %d", &x,&y) != EOF)
{
swap(x,y);
int n; scanf("%d", &n);
while(n--) {
int a; scanf("%d", &a);
if(solve(a) || solve2(a)) puts("YES");
else puts("NO");
}
} return 0;

}

UVALive 6858 Frame (模拟)的更多相关文章

  1. UVaLive 6858 Frame (水题)

    题意:给定一个矩形框架,给定一个小矩形,问你能不能正好拼起来. 析:很简单么,就三种情况,如果是1*1的矩形,或者是1*2的一定可以,然后就是上面和下面正好能是小矩形的整数倍,左右是少一,两个就是整数 ...

  2. UVALive 4222 Dance 模拟题

    Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...

  3. UVALive 3971 Assemble(模拟 + 二分)

    UVALive 3971 题意:有b块钱.想要组装一台电脑,给出n个配件的种类,名字,价格,品质因子.若各种类配件各买一个,总价格<=b,求最差品质配件的最大品质因子. 思路: 求最大的最小值一 ...

  4. UVALive 6451:Tables(模拟 Grade D)

    VJ题目链接 题意:模拟输出表格 思路:模拟……很暴力 代码: #include <cstdio> #include <cstring> #include <cstdli ...

  5. UVALive 3634 数据结构模拟

    这题真是坑啊,题意不明,其实就是往桟里面压入空的set集合,所以之前的询问大小都是只有0,只有add的时候,才会产生新的占空间的集合 用stack和set直接进行模拟 #include <ios ...

  6. UVALive - 6440(模拟)

    题目链接:https://vjudge.net/contest/241341#problem/G 题目大意:输入一个N,n次操作.对于第一种操作增加一个病人,告诉病人的t0,st0,r.第二种操作,在 ...

  7. UVALive 7327【模拟】

    题意: 每次方案一个或多个子序列: 每个子序列要整除m 认为分割不同,子序列边界的不同就是不同: 1246有4个 1246 12 46 124 6 12 4 6 思路: 先从整体考虑,因为取膜适用于加 ...

  8. UVALive 6833【模拟】

    题意: 算从左往右的值,先乘后加的值,数的范围<=9= =,然后根据满足的条件输出字符. 思路: 从左往右就是直接来了,先做乘法就是乘法两边的数字靠向右边那个,且左边那个为0,然后所有值一加就好 ...

  9. UVALive 6858——分类讨论&&水题

    题目 链接 题意:对于一个$n \times m$的矩阵的最外一圈,问是否能用$k \times 1$的方块填满 分析 考虑左右两边的情况,分类讨论,切记考虑所有可能的情形. #include< ...

随机推荐

  1. JDK,JRE,JVM的区别与联系?

    概念区别 JDK:           Java Develpment Kit java 开发工具JRE:         Java Runtime Environment java运行时环境JVM: ...

  2. axios入门使用

    vue项目中axios的基本使用和简单封装 axios中文文档官网 http://www.axios-js.com/docs/ 一:不封装直接使用 npm install axios 在main.js ...

  3. clearfix:after 的用法

    想要清除浮动就要在父元素上 加上 clearfix:after .clearfix:after { <----在类名为“clearfix”的元素内最后面加入内容: content: " ...

  4. Js AJAX Event

    ;(function () { if ( typeof window.CustomEvent === "function" ) return false; function Cus ...

  5. docker配置文件不生效

    1.查看docker配置文件位置 systemctl status docker.service 2.修改docker配置文件 vim /lib/systemd/system/docker.servi ...

  6. debian 安装java

    sudo apt-get update sudo apt-get install default-jre sudo apt-get install default-jdk

  7. Vue-cli3 简qian易yi教程

    原文地址 对于没有了解过 vue-cli3 的童鞋,建议先去看看官方的教程: 传送门 新版本的新特性 1. 插件 使用 cli 的插件,可以很快的搭建一个项目的结构.如 axios 的插件 vue-c ...

  8. RESTful API 设计总结

    RESTful API 设计总结 @(技术-架构)[API, 规范, 设计] RESTful的接口设计风格应用的越来越广泛,包括Spring Cloud等微服务架构平台之间的调用都是以RESTful设 ...

  9. C#多播委托详解

    包含多个方法的委托成为多播委托,调用多播委托,可以按照顺序连续调用多个方法,因此,委托的签名就必须返回void;否则,就只能得到委托调用的最好一个方法的结果 1.多播委托可以用运算符"+&q ...

  10. datatable和dataset的区别

    DataSet 是离线的数据源 DataTable 是数据源中的表.当然也可以自己建一张虚表.插入数据库中 DataSet是DataTable的容器DataSet可以比作一个内存中的数据库,DataT ...