找了道bzoj的水题,千年难得一遇。

建议初学者做做,然而我个蒟蒻初学时应该A不了.....

< http://www.lydsy.com/JudgeOnline/problem.php?id=1800 > 地址啦啦啦就来了。

进入正题,先看题目

Description

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

Input

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

Output

所构成不重复矩形的个数

Sample Input

8

1

2

2

3

1

1

3

3

Sample Output

3

HINT

N<= 20

其他什么都不看,就看到 N<=20 不管说什么都是暴力吧。

在看看题目,大意:  N个点在一个圆上按输入顺序依次排列,已知相邻两点距离a[i,i+1],求这些点能组成的不重复矩形个数。(大意比题目还长,主要是我语文不好)

看完这些,还要看的就是上面这个神奇的图了,看完这个就肯定是水题一道。

可以发现:是矩形的条件就是对边相等,实际上可以抽象成对边两个点在圆上的距离a[i,i+1],那么判是矩形的条件就出来了

这道题的话,效率4重到2重都可以打,我比较懒蒟,就打了个4重。

思路就差不多是这样的:(建议一边看图一边看题解)

4重枚举矩形的4个顶点,i枚举左上角的,j枚举右上角的,k枚举右下角的,k1枚举左下角的。

这时就会发现需要预处理圆上按输入顺序的所有点的距离,a[i,j]表示 i 到 j 的距离。

a[i,j]=a[i,i+1]+a[i+1,i+2]+...+a[j-1,j]; 这个为什么我应该不用说吧。

是矩形的条件:1、a[i,j]=a[k,k1](第一组对边相等);

2、a[j,k1]=?  然后就发现 i 到 k1 的边不会是那个想要的边,可以用sum先计算一下圆的周长,这条边就可以这样表示  sum-a[i,k1];

and then(措不及防的飙英语)    a[j,k1]=sum-a[i,k1];(第二组对边相等);

然后就没有然后了, and then has no and then(措不及防的又飙了英语,还飙得这么不标准)

当然还有代码:

pascal:

var a:array[0..50,0..50]of longint;
    n,i,j,x,k,k1:longint;
    ans,sum:int64;
begin
  read(n);
  for i:=1 to n do
  begin
    read(x);
    a[i,i+1]:=x; //这里是把读入数据先弄成a[i,i+1]的形式
    sum:=sum+x;//sum就是圆周长
  end;
  for i:=1 to n do
  begin
    for j:=i+2 to n do// j 从 i+2 的原因是 i+1是知道的
    a[i,j]:=a[i,j-1]+a[j-1,j];//预处理a[i,j],因为是按读入顺序,所以如果j<i的数据也用不到,当然也可以先预处理,看心情
  end;
  for i:=1 to n do//枚左上角
  for j:=i+1 to n do//枚右上角
  for k:=j+1 to n do//枚右下角
  for k1:=k+1 to n do//枚左下角
  if (a[i,j]=a[k,k1])and(a[j,k]=sum-a[i,k1]) then  //判两组对边相等
  begin
    inc(ans);  //答案加一
  end;
  writeln(ans);
end.

c++:

你说什么,我也不知道为什么没有c++的代码(懒得打,有时间补上)。

可能有打错的地方,可以指正哦!

c++最近才自学,可能翻译代码对我来说有点难,所以没代码不能怪我。

bzoj1800[Ahoi2009]fly 飞行棋 暴力枚举的更多相关文章

  1. BZOJ1800 [Ahoi2009]fly 飞行棋 【枚举】

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

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

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

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

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

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

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

  5. 【枚举】bzoj1800 [Ahoi2009]fly 飞行棋

    暴力枚举. #include<cstdio> #include<algorithm> using namespace std; ],sum[],half,ans; int qu ...

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

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

  7. bzoj 1800: [Ahoi2009]fly 飞行棋【枚举】

    在圆里所以没有平行四边形,n^4枚举点即可 #include<iostream> #include<cstdio> using namespace std; const int ...

  8. BZOJ1800 [Ahoi2009]fly 飞行棋

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

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

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

随机推荐

  1. Code First :使用Entity. Framework编程(5) ----转发 收藏

    第五章 对数据库映射使用默认规则与配置 到目前为止我们已经领略了Code First的默认规则与配置对属性.类间关系的影响.在这两个领域内,Code First不仅影响模型也影响数据库.在这一章,你将 ...

  2. MFC-简单的函数使用

    1.  MessageBox(str);很简单的一个函数,该函数参数为字符串.用来弹出一个窗口显示str的内容,str为一个字符串. 2.  UpdateData();该函数是vc++中处理控件变量的 ...

  3. ImageView学习

    package liu.roundimagedemo.view; import android.content.Context; import android.graphics.Bitmap; imp ...

  4. php 与 java 生成时间戳的区别

    最近服务器有java却换到php环境,生成的时间戳转换成时间格式的出现异常,查询资料得知: PHP 的 time() 函数返回的结果是 Unix 时间戳,值的单位是秒:如:1463564861 Jav ...

  5. fillStyle图片填充

    图片自找 <!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas ...

  6. WebBrowser的Cookie操作之流量刷新机

    最近一直在思考着如何通过代码去伪装或实现人工自然浏览网页的效果,起初能想到的是用WebBrowser实现这一效果,需要达到的功能预想有以下几点: 1.自动刷新 2.模拟人工下拉滚动条并停留一段时间: ...

  7. 化繁为简——分解复杂的SQL语句

    今天同事咨询一个SQL语句,如下所示,SQL语句本身并不复杂,但是执行效率非常糟糕,糟糕到一塌糊涂(执行计划也是相当复杂).如果查询条件中没有NOT EXISTS部分,倒是不要一秒就能查询出来. SE ...

  8. 如何查看MapReduce执行的程序中的输出日志

    我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...

  9. CSS white-space 属性

    实例 规定段落中的文本不进行换行: p { white-space: nowrap } nowrap:文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止.

  10. Hibernate注解----关联映射注解以及课程总结详解----图片版本

    上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...