bzoj1800[Ahoi2009]fly 飞行棋 暴力枚举
找了道bzoj的水题,千年难得一遇。
建议初学者做做,然而我个蒟蒻初学时应该A不了.....
< http://www.lydsy.com/JudgeOnline/problem.php?id=1800 > 地址啦啦啦就来了。
进入正题,先看题目
Description
Input
Output
Sample Input
1
2
2
3
1
1
3
3
Sample Output
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 飞行棋 暴力枚举的更多相关文章
- BZOJ1800 [Ahoi2009]fly 飞行棋 【枚举】
题目 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形. 输入格式 第一行为正整数N,表示点的个 ...
- bzoj1800: [Ahoi2009]fly 飞行棋(乱搞)
1800: [Ahoi2009]fly 飞行棋 题目:传送门 题解: 大水题,早上签个到 没什么好说的...搞个前缀和,算个周长... 周长为奇数肯定误解啊废话QWQ 那么看到n<=20,还不暴 ...
- bzoj 1800: [Ahoi2009]fly 飞行棋 暴力
1800: [Ahoi2009]fly 飞行棋 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋
http://www.lydsy.com/JudgeOnline/problem.php?id=1800 圆上两条直径构成矩形的对角线 #include<cstdio> using nam ...
- 【枚举】bzoj1800 [Ahoi2009]fly 飞行棋
暴力枚举. #include<cstdio> #include<algorithm> using namespace std; ],sum[],half,ans; int qu ...
- BZOJ1800 [Ahoi2009]fly 飞行棋 其他
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1800 题意概括 给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列. 请 ...
- bzoj 1800: [Ahoi2009]fly 飞行棋【枚举】
在圆里所以没有平行四边形,n^4枚举点即可 #include<iostream> #include<cstdio> using namespace std; const int ...
- BZOJ1800 [Ahoi2009]fly 飞行棋
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
随机推荐
- 前后端分离之前端项目构建(grunt+require+angular)
前言 前段时间做了一个项目,前端开发页面,然后把代码给到后端同学,后端同学通过vm再来渲染页面.后来才发现,这种方式简直是太low了,因为前端代码在服务端同学那里,每次前端需要更改的时候都需要去到服务 ...
- [python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅
沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅 事前数据: 前面处理得到的csv文件 文件名前加入“[wait]”等待程序处理 python代码从雅虎股票历史数据api获取数据,计算后面5日的涨跌幅 ...
- iOS开发中<null>的处理
在iOS开发过程中经常需要与服务器进行数据通讯,JSON就是一种常用的高效简洁的数据格式. 问题: 在项目中,一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃.原因是:由于服务器的数据库中有些字段 ...
- Genymotion 解决虚拟镜像下载速度特别慢的问题
Genymotion号称Android模拟器中运行最快的,但是服务器在国外,Android镜像下载起来那个速度就不想说了. Add new device后下载速度太慢了,容易失败 解决方法如下: ...
- shareSDK实现分享操作时只显示英文字体
今天用shareSDK实现分享操作时,突然发现分享视图只显示英文字体,而之前是显示中文的,以下是自己找到的解决方法: ,首先,找到shareSDk里的“ShareSDKUI_Localizable.s ...
- Shou.TV 招聘【北京】— — 生效中
一.团队 一个牛逼又有理想的团队,Vitamio 团队原班人马,现在总共 17 人( 9 名开发),拥有成熟的技术团队以及行业一流的研发实力,特别是在移动领域视频编解码.云端处理等资深视频行业经验. ...
- Android5.0 TimePicker,DatePicker恢复成低版本滚动模式
新版中的TimePicker DatePicker是不支持使用遥控器的, 恢复成低版本滚动模式只需要是xml文件加上一句即可: android:datePickerMode="spinner ...
- DIY一个高大上带提醒的计时器,简单实用,你还在等什么
小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的<Python聊天室>,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用.好了,闲话不多说,今天要给各位看官们 ...
- 基于Ruby的Watir-WebDriver自动化测试方案
Watir-WebDriver —— 软件测试的自动化时代 QQ群:160409929 自动化测试方案书 系统架构 该自动化测试框架分三个模块:Test用例.Control控制层.Tool ...
- .Net Collection的一些理解——记录一次向实习生的答疑
公司最近进了个实习生,每天下班前我都会花一些时间来解答一下实习生的一些疑问.今天问起了关于集合排序方法Sort的一些疑问,这让我一下回到自己刚刚入行的时候.那个时候也遇到了集合排序的问题,为发现接口I ...