UVA-1587

    xiaoxiao2026-01-10  6

    http://acm.hust.edu.cn/vjudge/problem/51982

    水题,错了了三次。一次是因为while(1) 无法结束程序而出现的TLE,而后两次WA是忽略了长方体是只有长宽高三条棱!

    仅仅只判别相对的两个面是否相同是不够的。

    解题思路就是组成6个pair然后排序,最后判别是否长方体的长宽高都符合条件即可。

    Solution:

    #include <algorithm> #include <iostream> #include <utility> #include <cstring> #include <cstdlib> #include <cstdio> #include <deque> #include <string> #include <vector> #include <cmath> #include <stack> #include <queue> #include <map> #include <set> using namespace std; #define mm(a,i) memset(a, i, sizeof(a)); #define LL    long long #define Mod 1000000007 #define SC_C(s)           scanf("%c", &s) #define SC(a)             scanf("%d", &a) #define SCC(a,b)          scanf("%d %d", &a, &b) #define SCCC(a,b,c)       scanf("%d %d %d", &a, &b, &c) #define FXA(i,a,n)        for(i=a; i<n; i++) #define FDA(i,a,n)        for(i=a; i>n; i++) #define FXDA(i,a,n)       for(i=a; i<=n; i++) #define FDDA(i,a,n)       for(i=a; i>=n; i++) #define FXB(i,a,n)        for(i=a; i<n; i--) #define FDB(i,a,n)        for(i=a; i>n; i--) #define FXDB(i,a,n)       for(i=a; i<=n; i--) #define FDDB(i,a,n)       for(i=a; i>=n; i--) #define PF(n)             printf("%d\n", n); #define PFF(n,m)          printf("%d %d\n", n, m); #define PFFF(x,y,z)       printf("%d %d %d\n", x, y, z); #define PF_Case(i)        printf("Case %d:\n",i); #define PF_C(i)           printf("%c:\n",i); #define PF_L(x)           printf("%I64d\n",x); #define IN                freopen("D:\\in.txt","r",stdin); #define ENT               printf("\n"); #define MAX(a,b)          a>b?a:b #define MIN(a,b)          a<b?a:b int maxx =  999999999; int minn = -999999999; bool flag; int i,j,k,T,ans,sum,m,n,cnt; typedef pair<int, int> point; point p[6]; bool ok() {     if(p[0].first != p[1].first || p[0].second != p[1].second) return false;     if(p[2].first != p[3].first || p[2].second != p[3].second) return false;     if(p[4].first != p[5].first || p[4].second != p[5].second) return false;     if(p[1].first != p[2].first) return false;     if(p[1].second != p[4].first) return false;     if(p[3].second != p[4].second) return false;     return true; } int main() { #ifndef ONLINE_JUDGE     IN #endif // ONLINE_JUDGE     int a,b;     while(~SCC(a,b)) { //        mm(p,0);         if(a<b) p[0].first=a,p[0].second=b;         else    p[0].first=b,p[0].second=a;         flag = true;         FXA(i,1,6) {             SCC(a,b);             if(a<b) p[i].first=a,p[i].second=b;             else    p[i].first=b,p[i].second=a;         }         sort(p, p+6); //        for(i=0; i<6; i++) { //            cout<<p[i].first<<" "<<p[i].second<<endl; //        } //             if(ok()) puts("POSSIBLE");             else                 puts("IMPOSSIBLE");     }     return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1305867.html
    最新回复(0)