题目描述

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

输入输出格式

输入格式:

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

输出格式:

所构成不重复矩形的个数

输入输出样例

输入样例#1:

8
1
2
2
3
1
1
3
3
输出样例#1:

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]飞行棋的更多相关文章

  1. bzoj 1800 & 洛谷 P2165 [AHOI2009]飞行棋 —— 模拟

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1800   https://www.luogu.org/problemnew/show/P21 ...

  2. 【BZOJ1800】[AHOI2009]飞行棋(暴力)

    [BZOJ1800][AHOI2009]飞行棋(暴力) 题面 BZOJ 洛谷 题解 预处理一下前缀和就可以\(O(1)\)计算两点间的距离了,直接\(O(n^4)\)暴力枚举即可. #include& ...

  3. [AHOI2009]飞行棋

    嘟嘟嘟 刚开始想这道题的时候确实很蒙,只想到矩形对边做对应的弧长相等,然后想办法凑出相等的弧长.其实正解很简单,不要去想边,应该想对角线,因为根据初中园的知识,这个矩形的对角线是圆的直径,而直径所对的 ...

  4. [AHOI2009]飞行棋 BZOJ1800

    题目描述 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入输出格式 输入格式: 第一行为 ...

  5. [luogu2165 AHOI2009] 飞行棋 (枚举)

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

  6. 洛谷 题解 2165 [AHOI2009]飞行棋

    本蒟蒻又来发题解了, 看到这个题目,本蒟蒻直接开始推公式.. 嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π)); 然后对比各条弦长的平方和与直径的平方. ...

  7. bzoj 1800: [Ahoi2009]fly 飞行棋 暴力

    1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  8. BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )

    O(N2)算出有x条直径然后答案就是x(x-1)/2...这个数据范围是闹哪样! ----------------------------------------------------------- ...

  9. BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】

    1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1689  Solved: 1335[Submit][St ...

随机推荐

  1. idea右侧的工具栏不见,包括maven以及其他

    通用,设置后右侧工具栏可见 可以通过view-->windows tool看到maven的

  2. SpringBoot学习2:springboot整合servlet

    整合方式1:通过注解扫描完成 Servlet 组件的注册 1.编写servlet package com.bjsxt.servlet; import javax.servlet.ServletExce ...

  3. win10如何修改host文件

    首先找到host文件,一般位于:C:\Windows\System32\drivers\etc 之后用记事本打开,直接修改.保存txt文件到桌面. 最后删除后缀名,再粘贴回去就可以了.

  4. windows下简单使用pip

    1. 在python官网上下载python时会自带pip,并且在安装Python时若未取消会默认一并安装 2. 找出pip.exe所在位置, 3. 右击此电脑,点击属性 4. 高级系统设置 5. 点击 ...

  5. Nginx认证

    Nginx 的 ngx_http_auth_basic_module模块允许通过使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问. 配置举例: location / { auth_bas ...

  6. 【CSS】非常简单的css实现div悬浮页面底部

    <div id="demo_div"></div> <style> #demo_div{ left:; position: fixed; bot ...

  7. JZOJ 5809. 【NOIP2008模拟】数羊

    5809. [NOIP2008模拟]数羊 (File IO): input:sheep.in output:sheep.out Time Limits: 1000 ms  Memory Limits: ...

  8. 多线程并发测试(apache ad)

    1.配置 ThreadPoolTaskExecutor bean   <?xml version="1.0" encoding="UTF-8"?> ...

  9. bs4的简单应用之防止xss攻击和文本截断

    BeautifulSoup可以过滤html标签,根据这个功能我们可以防止xss攻击和进行文本过滤 1. 安装 pip install beautifulsoup4 2.导入.使用 from bs4 i ...

  10. hibernate实体xml一对多关系映射

    单向一对多关系映射: 一个房间对应多个使用者,也就是Room實例知道User實例的存在,而User實例則沒有意識到Room實例. 用户表: package onlyfun.caterpillar; p ...