1. 程式人生 > >2018, XI Samara Regional Intercollegiate Programming Contest J題-Parallelograms

2018, XI Samara Regional Intercollegiate Programming Contest J題-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;
}