这个题就是一块大板子,问你能不能切成两块要求的长宽的两块板子,一开始是按切板子想的,感觉有点麻烦。
直接反过来想,把两块要求的板子拼起来,填成一个大板子,看填出来的这个板子和题目给的板子比较,小于等于就满足。
想了一下是四种情况,直接贴一下草稿纸上画的,丑乎乎的( ̄▽ ̄)/
代码虽然长,但是直接复制粘贴条件改一下就可以。
代码:
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 }