题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1800

说实话我这几天运气不错,随便在bzoj上找题都可以找到水题,这题在代码上没有丝毫难度,只是如果没想通的话可能做起来会比较吃力,因为暴力也是需要技巧的

方法:

  这个图形是个圆,要在圆上找矩形。

  然后矩形的特征是啥?四个角90度?好吧这不是重点,重点是矩形的对角线相等。

  然后矩形是内接与这个圆的,所以我们又可以想到,圆的内接矩形对角线等于圆的直径。

  直径,圆的任何一条直径将圆的面积分成相等的两半,直径所在的端点也将周长分成相等的两半。

  只要想通这里,那么思路就来了,如果把弧长相加,能等于周长一半,说明找到一条直径,然后暴力搜索一遍找到所有直径,即所有的对角线。

  然后你可以发现,每两条对角线都可以形成一个合法矩形,那么只要找出对角线数和矩形个数之间的关系就可以了。

关系:这个关系还是很好推的,想一想多边形顶点个数和对角线个数怎么找的,类比着找。

     设有ans条对角线,每一条对角线都可以和剩下的ans-1条配对形成矩形,但是如果全部配对了会有重复,你随便画个图就可以发现,每个矩形都只是重复一次,

     那么就直接除以2就行,所以公式就是   tot=(ans*ans)/2

然后这个主要步骤处理方法比较多,反正都是暴力,我举两个处理的小例子吧

例1:

 for(int i=;i<n;i++)//sum是周长的一半
{
k+=dis[i];//k是累加的长度
while(k>sum)
{
k-=dis[++j];
}
if(k==sum)
{
ans++;
}
}

例2:

     for(int i=;i<=n;i++)
//pos是与1配对的对角线另一点,找到这一个点是为了避免对角线重复
{
tot=;//tot和例1的k意义相同
for(int h=i;h<=n;h++)
{
tot+=dis[h];
if(tot>=sum)
{
if(i==)pos=h;
if(tot==sum)ans++;
break;
}
}
if(i>=pos)break;
}

暴力的方式还有很多,这就简单的介绍两种

然后我们看一看完整的代码

 #include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 25
using namespace std; int sum,ans,dis[maxn],k,j; int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&dis[i]);
sum+=dis[i];
}
sum=sum>>;
/* for(int i=1;i<n;i++)
{
k+=dis[i];
while(k>sum)
{
k-=dis[++j];
}
if(k==sum)
{
ans++;
}
}*/
int tot=,pos=;
for(int i=;i<=n;i++)
{
tot=;
for(int h=i;h<=n;h++)
{
tot+=dis[h];
if(tot>=sum)
{
if(i==)pos=h;
if(tot==sum)ans++;
break;
}
}
if(i>=pos)break;
} cout<<ans*(ans-)/;
return ;
}

[bzoj1800]fly 飞行棋<暴力>的更多相关文章

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

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

  2. bzoj1800[Ahoi2009]fly 飞行棋 暴力枚举

    找了道bzoj的水题,千年难得一遇. 建议初学者做做,然而我个蒟蒻初学时应该A不了..... < http://www.lydsy.com/JudgeOnline/problem.php?id= ...

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

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

  4. bzoj1800: [Ahoi2009]fly 飞行棋(乱搞)

    1800: [Ahoi2009]fly 飞行棋 题目:传送门 题解: 大水题,早上签个到 没什么好说的...搞个前缀和,算个周长... 周长为奇数肯定误解啊废话QWQ 那么看到n<=20,还不暴 ...

  5. bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋

    http://www.lydsy.com/JudgeOnline/problem.php?id=1800 圆上两条直径构成矩形的对角线 #include<cstdio> using nam ...

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

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

  7. BZOJ_1800_[Ahoi2009]fly 飞行棋_乱搞

    BZOJ_1800_[Ahoi2009]fly 飞行棋_乱搞 Description 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的 ...

  8. BZOJ1800:fly 飞行棋 (双指针 组合数)

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

  9. BZOJ1800 [Ahoi2009]fly 飞行棋 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1800 题意概括 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请 ...

随机推荐

  1. React项目实战:react-redux-router基本原理

    React相关 React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架. JSX 本质上来讲,JSX 只是为React.createElement(component, props, .. ...

  2. 探索 Redux4.0 版本迭代 论基础谈展望(对比 React context)

    Redux 在几天前(2018.04.18)发布了新版本,6 commits 被合入 master.从诞生起,到如今 4.0 版本,Redux 保持了使用层面的平滑过渡.同时前不久, React 也从 ...

  3. 微服务优化之使用gRPC做微服务的内部通信

    使用gRPC做微服务的内部通信 gRPC是一个由Google开源的远程服务调用框架,具有多路复用和双向流式通信的特性. 大家好,在本文中将为大家介绍为什么我们应该使用gRPC代替RESTful或JSO ...

  4. GPS信号模拟器信号发生器应用介绍

    GPS信号模拟器信号发生器应用介绍 随着近些年的科学技术不断发展,卫星导航技术也在日益发展和成熟,并在不同领域得到广泛的应用.尤其在导航定位接收机的研制测试阶段,就需要GPS信号模拟器来模拟不同环境和 ...

  5. python.五角星

    import turtle turtle.pensize(4)turtle.pencolor("black") turtle.fillcolor("red")t ...

  6. JDK java version "1.8.0_181"环境搭建

    1.从官网上下载jdk软件,本人的系统是32位 WIN10 所以只能装1.8.0_181的了.x86 2.下载完就按照提示安装就可以了,傻瓜式操作就不多说了. 3.配置环境环境变量 3.1 点击我的电 ...

  7. Hadoop集群搭建(七)~完全分布运行模式

    我使用的是完全分布运行模式.上一篇安装了JDK,本篇记录Hadoop的安装,版本2.7.2 (一)配置文件 1,先将hadoop安装包解压到module目录下 2,配置hadoop-env.sh.vi ...

  8. 【Android】Retrofit源码学习

    使用Retrofit的流程 通过Builder创建Retrofit对象: Retrofit retrofit = new Retrofit.Builder().baseUrl("" ...

  9. EPX Studio开发环境介绍

    相信用过Delphi的人,都很清楚FastScript,EPX Studio就是以FastScript为编程基础语言,由于FastScript支持类似于Delphi的Pascal语法,因此EPX St ...

  10. SQL Prompt9 注册教程

    在网上找了很多,都是9.0一下的版本,所以这边来发个9.0的版本 然后下载的安装文件应该包括 这两个: 第一个是注册机,第二个是安装包,安装这里就不用讲了,下一步下一步就完事,安装完成之后,一定要断网 ...