Codeforces Gym100971 G.Repair-思维题(切矩形板子) (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)

这个题就是一块大板子,问你能不能切成两块要求的长宽的两块板子,一开始是按切板子想的,感觉有点麻烦。

直接反过来想,把两块要求的板子拼起来,填成一个大板子,看填出来的这个板子和题目给的板子比较,小于等于就满足。

想了一下是四种情况,直接贴一下草稿纸上画的,丑乎乎的( ̄▽ ̄)/

代码虽然长,但是直接复制粘贴条件改一下就可以。

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 int main(){
 8     int x,y,n,m,a,b;
 9     while(~scanf("%d%d",&x,&y)){
10         scanf("%d%d",&n,&m);
11         scanf("%d%d",&a,&b);
12         if(x>y)swap(x,y);
13         if(n>m)swap(n,m);
14         if(a>b)swap(a,b);
15         int cnt1;
16         if(m>b)cnt1=m;
17         else cnt1=b;
18         int cnt2=n+a;
19         if(cnt1<cnt2){
20             if(cnt1<=x&&cnt2<=y){
21                 printf("YES
");
22                 return 0;
23             }
24         }
25         else{
26             if(cnt1<=y&&cnt2<=x){
27                 printf("YES
");
28                 return 0;
29             }
30         }
31         int cnt11;
32         if(n>b)cnt11=n;
33         else cnt11=b;
34         int cnt22=m+a;
35         if(cnt11<cnt22){
36             if(cnt11<=x&&cnt22<=y){
37                 printf("YES
");
38                 return 0;
39             }
40         }
41         else{
42             if(cnt11<=y&&cnt22<=x){
43                 printf("YES
");
44                 return 0;
45             }
46         }
47         int cnt111;
48         if(n>a)cnt111=n;
49         else cnt111=a;
50         int cnt222=m+b;
51         if(cnt111<cnt222){
52             if(cnt111<=x&&cnt222<=y){
53                 printf("YES
");
54                 return 0;
55             }
56         }
57         else{
58             if(cnt111<=y&&cnt222<=x){
59                 printf("YES
");
60                 return 0;
61             }
62         }
63         int cnt1111;
64         if(m>a)cnt1111=m;
65         else cnt1111=a;
66         int cnt2222=n+b;
67         if(cnt1111<cnt2222){
68             if(cnt1111<=x&&cnt2222<=y){
69                 printf("YES
");
70                 return 0;
71             }
72         }
73         else{
74             if(cnt1111<=y&&cnt2222<=x){
75                 printf("YES
");
76                 return 0;
77             }
78         }
79         printf("NO
");
80     }
81     return 0;
82 }
原文地址:https://www.cnblogs.com/ZERO-/p/9703042.html