题目大意:给了三个矩形的长和宽,问第一个能否把其他两个装在内部,要求内部之间不重叠,不出界(可重边)?
题目分析:这道题。。。考虑不够全面导致比赛时没有出来。。。当时,就是觉得自己的代码很完美,不可能不对!当时也是较起真儿来啦,全场就我一个人没A这道题,确实有点脑子热!以后再遇到这种情况一定要冷静!要沉着!越急越没用!!!要重新审视自己的算法和代码!!!!!
代码如下:
# include<iostream> # include<cstdio> # include<cmath> # include<string> # include<vector> # include<list> # include<set> # include<map> # include<queue> # include<cstring> # include<algorithm> using namespace std; # define LL long long # define REP(i,s,n) for(int i=s;i<n;++i) # define CL(a,b) memset(a,b,sizeof(a)) # define CLL(a,b,n) fill(a,a+n,b) const double inf=1e30; const int INF=1<<30; const int N=1000; int a1,b1,a2,b2,a3,b3; bool ok(int a,int b) { if(a>=a3&&b>=b3) return true; if(a>=b3&&b>=a3) return true; return false; } bool judge() { if(a1*b1<a2*b2+a3*b3) return false;/// if(a1<b1) swap(a1,b1);/// if(a2<b2) swap(a2,b2);/// if(a3<b3) swap(a3,b3);/// if(b2>a1||a2>a1) return false;/// if(b3>a1||a3>a1) return false;/// if(b2+b3>a1) return false;///比赛的时候以上这些都没写,一直过不去 if(ok(b1,a1-a2)) return true; if(ok(b1,a1-b2)) return true; if(ok(a1,b1-a2)) return true; if(ok(a1,b1-b2)) return true; return false; } int main() { while(~scanf("%d%d%d%d%d%d",&a1,&b1,&a2,&b2,&a3,&b3)) { if(judge()) printf("YES\n"); else printf("NO\n"); } return 0; }
时间: 2024-10-10 10:07:08