传送门:Parallelograms
题意:若干个棍子,求能最多组成多少个平行四边形
分析:统计不同长度的棍子数目,用一个变量tot加上每个长度棍子数目/2, 最后输出tot/2
每个长度的棍子要在一个平行四边形内使用两根,最后还要任意2组的长度的棍子搭配~
一开始以为可以不同长度的棍子拼接成一条边使用,就思考了好久没搞出来TAT
代码如下:
#include <cstdio>
using namespace std;
const int maxn = 200000+10;
int a[maxn],x;
int n,tot;
int main(){
scanf("%d",&n);
for (int i=1; i<=n; i++) {
scanf("%d",&x);
a[x]++;
}
for (int i=1; i<maxn; i++) tot+=a[i]/2;
tot>>=1;
printf("%d\n",tot);
return 0;
}
本文介绍了一种解决平行四边形组合问题的算法。通过统计不同长度棍子的数量,并利用这些数量来计算最多可以组成的平行四边形数目。代码采用C++实现,展示了具体的实现细节。
743

被折叠的 条评论
为什么被折叠?



