首页 > 学院 > 开发设计 > 正文

【BZOJ 1800】【AHOI 2009】飞行棋

2019-11-08 02:38:26
字体:
来源:转载
供稿:网友

Description

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

Input

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

Output

所构成不重复矩形的个数

Sample Input

8 1 2 2 3 1 1 3 3

Sample Output

3

HINT

N<= 20 这里写图片描述

题解:

非常简单。。。 只需枚举圆周上的四个点即可。

代码

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,ans;int a[30],s[30];int main(){ scanf("%d",&n); memset(s,0,sizeof(0)); for(int i = 1;i <= n;i++) { scanf("%d",&a[i]); s[i] = s[i-1] + a[i]; } for(int i = 0;i <= n-4;i++) for(int j = i+1;j <= n-3;j++) for(int k = j+1;k <= n-2;k++) for(int l = k+1;l <= n-1;l++) if(s[k]-s[j] == s[i] + s[n]-s[l] && s[j]-s[i] == s[l]-s[k]) ans ++; PRintf("%d/n",ans); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表