P2165 [AHOI2009]飞行棋
题目描述
给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。
输入输出格式
输入格式:
第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度
输出格式:
所构成不重复矩形的个数
输入输出样例
8
1
2
2
3
1
1
3
3
3
说明
N<=20 
Solution:
本题看似很水(确实很水),自己的想法却不够简便。
开始写了个暴力枚举$4$个点然后判断,老是处理不了重复的情况搞了半天一直$40$分。
其实,我们只需要处理出前缀和,然后$n^2$枚举$i,j$,当$s[j]-s[i]==s[n]/2$时,计数器$ans++$,因为我们知道矩形的两条邻边所成的圆周角$=\pi$,所以弧长为$\frac{c}{2}$($c$为圆的周长),于是我们这样统计出来的是满足条件的成对角的点对个数,那么最后的答案就是$ans*(ans-1)/2$(简单的组合,每个点对可以和剩下$ans-1$个点对搭配组成矩形,然后每个会重复算一次,所以除以$2$就$OK$了)。
代码:
#include<bits/stdc++.h>
#define il inline
#define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
using namespace std;
const int N=;
int n,a[N],s[N],ans;
il void solve(){
For(i,,n) For(j,,n)if(s[j]-s[i]==s[n]/)ans++;
cout<<ans*(ans-)/;
}
int main(){
ios::sync_with_stdio();
cin>>n;
For(i,,n)cin>>a[i];
For(i,,n)s[i]=s[i-]+a[i];
solve();
return ;
}
P2165 [AHOI2009]飞行棋的更多相关文章
- bzoj 1800 & 洛谷 P2165 [AHOI2009]飞行棋 —— 模拟
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1800 https://www.luogu.org/problemnew/show/P21 ...
- 【BZOJ1800】[AHOI2009]飞行棋(暴力)
[BZOJ1800][AHOI2009]飞行棋(暴力) 题面 BZOJ 洛谷 题解 预处理一下前缀和就可以\(O(1)\)计算两点间的距离了,直接\(O(n^4)\)暴力枚举即可. #include& ...
- [AHOI2009]飞行棋
嘟嘟嘟 刚开始想这道题的时候确实很蒙,只想到矩形对边做对应的弧长相等,然后想办法凑出相等的弧长.其实正解很简单,不要去想边,应该想对角线,因为根据初中园的知识,这个矩形的对角线是圆的直径,而直径所对的 ...
- [AHOI2009]飞行棋 BZOJ1800
题目描述 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入输出格式 输入格式: 第一行为 ...
- [luogu2165 AHOI2009] 飞行棋 (枚举)
传送门 Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. Input ...
- 洛谷 题解 2165 [AHOI2009]飞行棋
本蒟蒻又来发题解了, 看到这个题目,本蒟蒻直接开始推公式.. 嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π)); 然后对比各条弦长的平方和与直径的平方. ...
- bzoj 1800: [Ahoi2009]fly 飞行棋 暴力
1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
O(N2)算出有x条直径然后答案就是x(x-1)/2...这个数据范围是闹哪样! ----------------------------------------------------------- ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
随机推荐
- vuejs里面v-if,v-show和v-for
<div id='root'> <div v-if='show'>helle world</div> <button @click='handleClick' ...
- 2018.2.7 css 的一些方法盒子模型
css 的一些方法 1.盒模型代码简写 盒模型的外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左.具体应用在margin ...
- js转换时间戳成日期格式
<script> function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().rep ...
- 快速下载jar包
1, http://www.mvnrepository.com 2,可以从spring官网上下载,如果是mvn的话可以通过上面的网址下载
- jrtplib库使用简解
RTP有效载荷类型即时间截解释 =============================== https://www.cnblogs.com/wyqfighting/archive/2013/03/ ...
- 10.VUE学习之使用lodash库减少watch对后台请求的压力
问题描述 使用watch监听库里word的值的变化,获取新值后,用oxios发送的ajax异步请求, 此时会多次发送请求,浪费服务器资料. 解决办法 使用lodash库里的_.debounce函数延缓 ...
- <Docker学习>1. 简介
Q: Dokcer是什么? A: 是一种虚拟化技术.参考https://www.imooc.com/learn/867快速了解Docker. Q: 传统虚拟机技术和Dokcer的区别? A: 传统虚拟 ...
- 02 python网络爬虫《Http和Https协议》
一.HTTP协议 1.概念: Http协议就是服务器(Server)和客户端(Client)之间进行数据交互(相互传输数据)的一种形式. 之间形成的特殊行话(黑话:(土匪)天王盖地虎,(我)宝塔镇河妖 ...
- CMDB(资产管理系统) day1
运维自动化最重要的就是标准化一切 自动化运维则支持以下功能: 1.OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件.2.软件安装标准化,例如JAVA虚拟机,php,nginx,my ...
- python3 包的发布
发布流程大概如下 1. 首先需要有一个python包,就是一个文件夹,但是此文件夹下面有__init__.py文件,里面内容是 现在要发布包TestMsg,这就是一个python包.在同级目录下新建s ...