首页 > 其他 > 详细

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

时间:2019-07-13 21:03:55      阅读:118      评论:0      收藏:0      [点我收藏+]

题目

链接

题意:对于一个$n \times m$的矩阵的最外一圈,问是否能用$k \times 1$的方块填满

分析

考虑左右两边的情况,分类讨论,切记考虑所有可能的情形。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int n, m;
 5 
 6 bool judge(int k)
 7 {
 8     if(k == 1)  return true;
 9     if(k == 2)
10     {
11         if(n % 2)
12         {
13             if((m-1) % k == 0)  return true;
14             if((m-2) % k == 0 && m % k == 0)  return true;
15         }
16         else
17         {
18             if((m-2) % k == 0)  return true;   //两边放满
19             if(m % k == 0)  return true;        //两边都不放满
20             if((m-1) % k == 0)  return true;    //一边放满,一边不放满
21         }
22     }
23     else
24     {
25         if(n % k == 0)
26         {
27             if((m-2) % k == 0)  return true;
28             //if(m % k == 0)  return true;
29         }
30         if(n % k == 1)
31         {
32             //printf("%d %d %d\n", n, m, k);
33             if((m-1) % k == 0)  return true;        //两边对齐
34             if((m-2) % k == 0 && m % k == 0)  return true;  //两边交错
35         }
36         if(n % k == 2)
37         {
38             if(m % k == 0)  return true;
39         }
40     }
41     return false;
42 }
43 
44 int main()
45 {
46     while(scanf("%d%d", &n, &m) == 2)
47     {
48          int T;
49          scanf("%d", &T);
50         while(T--)
51         {
52             int tmp;
53             scanf("%d", &tmp);
54             if(judge(tmp))  printf("YES\n");
55             else  printf("NO\n");
56         }
57     }
58     return 0;
59 }

 

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

原文:https://www.cnblogs.com/lfri/p/11181902.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!