首页 > 其他 > 详细

洛谷 题解 2165 [AHOI2009]飞行棋

时间:2019-12-12 13:08:55      阅读:68      评论:0      收藏:0      [点我收藏+]

本蒟蒻又来发题解了,

看到这个题目,本蒟蒻直接开始推公式。。

嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π));

然后对比各条弦长的平方和与直径的平方。

就可以了 QwQ

以上纯属瞎掰,回到正题

在我写完上面那种算法,然后苦苦调不出的时候。

我开始,怀疑我是不是思路有问题。

事实证明,好像确实有问题;

以上纯属瞎掰,回到正题+1

我们想一想,矩形有什么性质:

四个角都是直角。

嗯,如果在一个圆周内,什么样的角才是直角。

嗯,直径所对应的圆周角肯定是直角。

我没说是直角就一定对应直径。

好,因为所以的角都是直角。

那么两条边肯定都是直径。

那不就好过了吗?

上代码:

#include<bits/stdc++.h>
using namespace std;

#define maxn 50
int n, a[maxn], s[maxn], ans, sum;

int main()
{
scanf("%d", &n);//输入 
for(int i = 1; i <= n; ++ i)
{
scanf("%d", &a[i]);//输入 
s[i] = s[i - 1] + a[i];//处理前缀和 
sum += a[i];//sum是周长 
}
for(int i = 1; i <= n; ++ i)
for(int j = i + 1; j <= n; ++ j)
if(s[j] - s[i] == sum / 2)//判断是不是都是直径 
++ ans;
printf("%d", ans * (ans - 1) / 2);
return 0;
}

洛谷 题解 2165 [AHOI2009]飞行棋

原文:https://www.cnblogs.com/Flash-plus/p/12028334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!