列表

详情


NC19886. [AHOI2009]FLY 飞行棋

描述

给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。

输入描述

第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度

输出描述

所构成不重复矩形的个数

示例1

输入:

8
1
2
2
3
1
1
3
3

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 380K, 提交时间: 2020-08-19 12:12:54

#include<bits/stdc++.h>
#define maxn 25
using namespace std;
int sum[maxn];
int a[maxn];
int main()
{
	int n;
	scanf("%d",&n);
	int tot=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		sum[i]=sum[i-1]+a[i];
	}
	int res=0;
	for(int a=1;a<=n;a++)
	for(int b=a+1;b<=n;b++)
	for(int c=b+1;c<=n;c++)
	for(int d=c+1;d<=n;d++)
	{
		if((sum[b]-sum[a]==sum[d]-sum[c])&&(sum[n]-sum[d]+sum[a]==sum[c]-sum[b]))
		res++;
	}
	cout<<res<<endl;
}

上一题