题目链接: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. Swift --闭包表达式与闭包(汇编分析)

    在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数! 一.闭包表达式 概念 闭包表达式与定义函数的语法相对比,有区别如下: 去除了func 去除函数名 返回值类型添加了关键 ...

  2. FC及BFC

    1.什么是FC 2.BFC块级格式化上下文(Block formatting context) Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的.元素的类 ...

  3. Spring MVC系列-(1) Spring概述

    1. Spring概述 本章主要介绍Spring中的体系结构和常见概念,比如bean.控制反转(Inverse of Control,IoC)等. 1.1 体系结构 Spring 框架提供约 20 个 ...

  4. MyISAM 和 InnoDB

    1.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级 ...

  5. Python面向对象之反射,双下方法

    一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序 ...

  6. HDU 5448 Marisa’s Cake

    给定一个由n个整点构成的凸多边形,求从n个点里任意选不少于3个点组成的所有凸多边形的面积之和,显然整点构成的多边形面积一定是0.5的整数倍,所以题目需要你算出答案的2倍 mod1000000007的值 ...

  7. 利用EPX Studio将C/S程序转成B/S的方法详解(在线模块方式)

    采用 EPX 的在线模块,是最简单的方法,包括实现简单,客户端不需任何设置,客户使用就简单. 1. 设置服务器端参数(EPServer) 1.1 在服务配置工具选项卡中,设置服务项中的名称,路径,激活 ...

  8. 1.Lambda表达式

    1.Lambda表达式 语法糖 也叫作糖衣语法,增强了代码的可读性 避免了出错的机会 但是,这种语法对于语言的功能并没有增强 和Lambda一样的糖衣语法还有:(1)泛型 <>(2)自动装 ...

  9. hdu3038加权(扩展)并查集

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3038/ 参考博客: https://blog.csdn.net/weixin_44580710/article/ ...

  10. Linux & Shell 学习笔记【1/2】

    因为工作上的需要,花了些许时间去熟悉学习Linux和Shell,现在也花点事件在此记录一下以加强巩固学习的内容吧.学的不算深入,所以都是一些比较junior的内容. 在下一篇随笔会详述之前写的一个用于 ...