研究网站平台建设工作动态,手机商城毕业设计,做直播网站软件有哪些,建网站优化【题目描述】
传送门
【题目分析】
刚开始想简单了#xff0c;认为只要相对的面相等就可以了。然后发现三个不同方向的面的边应该有相等的关系#xff0c;即如果两个面公用一条边#xff0c;那么这两个面的另外两条边就是另一个面的两条边。而且这三个量里面肯定有一个最…【题目描述】
传送门
【题目分析】
刚开始想简单了认为只要相对的面相等就可以了。然后发现三个不同方向的面的边应该有相等的关系即如果两个面公用一条边那么这两个面的另外两条边就是另一个面的两条边。而且这三个量里面肯定有一个最小的这个最小的边是每个面的较小值因此只需要比较每个面的较小值如果较小值相等再判断其他两条边这样就可以省去很多不必要的比较。
【AC代码】
#includecstdio
#includecstring
#includecstdlib
#includealgorithm
#includeiostream
#includecmath
#includeclimits
#includequeue
#includevector
#includeset
#includemap
using namespace std;typedef long long ll;
const int INF0x3f3f3f3f;
const int MAXN1e55;struct node
{int x,y;
}a[6];bool cmp(node a,node b)
{if(a.xb.x){return a.yb.y;}else{return a.xb.x;}}bool compare(int x,int y,int i,int j)
{int k0;for(;k6;k2){if(k!i k!j){break;}}if(a[k].xx a[k].yy || a[k].yx a[k].xy)return true;else return false;
}int main()
{int u,v;while(~scanf(%d%d,u,v)){for(int i0;i6;i){if(uv) swap(u,v);a[i].xu; a[i].yv;if(i!5) scanf(%d%d,u,v);}sort(a,a6,cmp);bool flagtrue;for(int i0;i6;i2){if(a[i].x ! a[i1].x || a[i].y ! a[i1].y){flagfalse;break;}}bool okfalse;if(flag){for(int i0;i6;i2){for(int ji2;j6;j){if(a[i].xa[j].x){if(compare(a[i].y,a[j].y,i,j)){oktrue;break;}}else if(a[i].ya[j].x){if(compare(a[i].x,a[j].y,i,j)){oktrue;break;}}else if(a[i].ya[j].x){if(compare(a[i].x,a[j].y,i,j)){oktrue;break;}}else if(a[i].ya[j].x){if(compare(a[i].x,a[j].y,i,j)){oktrue;break;}}}if(ok) break;}}if(ok){printf(POSSIBLE\n);}else{printf(IMPOSSIBLE\n);}}return 0;
}