题目描述:http://www.lydsy.com/JudgeOnline/problem.php?id=1800
题解:
长方形四角为直角,在圆中的性质很显然就是对角线为圆的直径。
暴力找到所有的直径然后两条直径构成一个矩形直接算出来就好了。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)j;i>=(int)k;i--)
int n,sum,tmp,ans,a[30];
int main(){
cin>>n;
rep(i,1,n)scanf("%d",&a[i]),sum+=a[i];
if(sum&1){puts("0");return 0;}
sum>>=1;
int j=1;
rep(i,1,n-1){
tmp+=a[i];
while(tmp>sum)tmp-=a[j++];
if(tmp==sum)ans++;
}
cout<<(ans*(ans-1)>>1)<<endl;
return 0;
}
本文介绍了一种通过计算圆内矩形对角线的方法来解决问题1800。利用暴力搜索所有可能的直径组合,并判断其是否可以构成矩形的对角线,最后计算出符合条件的矩形数量。
458

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



