打卡信奥刷题(3072)用C++实现信奥题 P6953 [NEERC 2017] Box
P6953 [NEERC 2017] Box
题目描述
Bella 在一家生产盒子的工厂工作。所有盒子都是长方体形状。对应长方体的展开图是从一个大小为w×hw \times hw×h的平面矩形纸板上裁剪出来的。这个展开图是一个多边形,其边与纸板矩形的边平行。展开图沿着几条线折叠,并沿着最终长方体的边缘连接形成一个盒子。展开图仅沿着最终盒子的边缘折叠。
第一组样例
第三组样例
Bella 是一名软件开发人员,她的任务是检查是否可以用一个大小为w×hw \times hw×h的纸板制作一个大小为a×b×ca \times b \times ca×b×c的盒子。Bella 编写了一个程序,盒子正在生产。你能做到吗?
输入格式
第一行包含三个整数aaa、bbb和ccc——盒子的尺寸。
第二行包含两个整数www和hhh——纸板的宽度和高度。
所有整数都是正数且不超过10810^8108。
输出格式
如果可以从大小为w×hw \times hw×h的纸板上裁剪出一个大小为a×b×ca \times b \times ca×b×c的盒子,则打印Yes。否则打印No。
输入输出样例 #1
输入 #1
1 2 3 6 5输出 #1
Yes输入输出样例 #2
输入 #2
1 2 3 5 5输出 #2
No输入输出样例 #3
输入 #3
1 1 1 10 2输出 #3
Yes说明/提示
时间限制:3 秒,内存限制:512 MB。
题面翻译由 ChatGPT-4o 提供。
C++实现
#include<iostream>#include<algorithm>#include<cstdio>usingnamespacestd;inta[4];intx,y;booltest(){for(inti=1;i<=6;i++){for(inti=1;i<=2;i++){if(2*a[1]+2*a[2]<=x&&2*a[2]+a[3]<=y)returntrue;//情况1if(3*a[3]+a[1]+a[2]<=x&&a[1]+a[2]<=y)returntrue;//情况2if(2*a[1]+a[2]+a[3]<=x&&a[1]+a[2]+a[3]<=y)returntrue;//情况3swap(x,y);//旋转纸张}next_permutation(a+1,a+4);}returnfalse;}intmain(){scanf("%d %d %d",&a[1],&a[2],&a[3]);scanf("%d %d",&x,&y);boolflag=test();if(flag)printf("Yes");elseprintf("No");}后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
