bzoj2338】的更多相关文章

[BZOJ2338][HNOI2011]数矩形 题解:比较直观的做法就是枚举对角线,两个对角线能构成矩形当且仅当它们的长度和中点相同,然后用到结论:n个点构成的矩形不超过n^2.5个(不会证),所以两两枚举对角线即可. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll;…
题目链接: 2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MB Description Input   Output 题意: 思路: 求最大的矩形面积,先把这些点转化成线段,记录下线段的长度和中点和两个端点,形成矩形说明对角线长度相等,且共中点,所以把线段按长度和中点排序,如果都相等,然后用三角形的三个顶点坐标计算面积的公式计算最大面积就好了; AC代码: /**********************************…
给出N(N≤1500)个点,求选四个点作为顶点组成矩形的最大面积,保证有解. 对每两个点连边,按边长排序,枚举等长且中点相同的边作为对角线组成矩形,计算面积取最大值. 时间复杂度O(n2logn) #include<cstdio> #include<algorithm> ],ys[]; ; struct edge{ int x1,y1,x2,y2; long long len; int xm,ym; void cal(){ xm=x1+x2,ym=y1+y2; int x=x1-x…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2338 中学数学老师告诉我们,一个矩形的两条对角线相等,所以只要把所有的边拿出来,记录下中点坐标及长度,然后排一遍序扫一遍更新答案..(听说开double会炸? #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #i…
2338: [HNOI2011]数矩形 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1535  Solved: 693[Submit][Status][Discuss] Description Input   Output   Sample Input   Sample Output   HINT   Source Day2 我开始想着记每条线的斜率,然后排序来找平行线,但却不能保证构成矩形.一种新奇的思路:记录对角线,两条对角线长度相等且中点…
数矩形 Time Limit: 20 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 最近某歌手在研究自己的全国巡回演出,他将所有心仪的城市都用平面上一个点来表示,并打算从中挑选出4个城市作为这次巡回演出的地点. 为了显示自己与众不同,他要求存在一个矩形使得挑选出的4个点恰好是这个矩形的4个顶点,并且希望这个矩形的面积最大. 这可急坏了经纪人,于是他向全球歌迷征集方案,当然你这位歌迷一定不会错过这个机会. Input…
对于两条线段,若其中点重合,且长度相等,那么它们一定是某个矩形的对角线. N*N地处理出所有线段,排序,对每一部分中点重合.长度相等的线段进行暴力枚举,更新答案. 用 long double 注意EPS的设置,卡精度. 注意数组大小的设置,容易MLE. #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> using namespace std; #define EPS…
数矩形(rectangle) 计算几何 把所有点两两连线,把这些线按长度排序,再按中点排序 能组成矩形的线一定是连续的 最坏就是所有点围成一个圆,交于圆心 复杂度O(可以过) 要用叉积,不然会被卡精 我居然认为极角序就是逆时针,错了好久 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<algorithm> #include<cm…
题目描述 题解 计算几何 由于对角线平分且相等的四边形是矩形,因此我们可以把每条对角线存起来,按照对角线长度和中点位置为关键字排序,这样对于每个相同长度和中点的对角线就排到了一起. 于是对于每段可能形成矩形的区间暴力即可. 时间复杂度$O(cnt)$,$cnt$为矩形个数.根据大爷讲的某定理,$cnt<O(n^2\sqrt n)$,可以A掉本题. 注意本题任何时候都不能使用double,否则炸精度无限WA. #include <cstdio> #include <cstring&g…
计算几何 我们先把所有的线段求出来,我们发现只有两个线段等长且中点重合时才能构成矩形,那么线段有n*n条,我们按中点,长度排序,然后对于一条线段扫描所有符合条件的线段计算答案,这样看起来是O(n^3)次的,实际上远远到不了 但是1336和1765两道题空间较小,不能乱开空间 #include<bits/stdc++.h> using namespace std; ; int n; double ans; int x[N], y[N]; struct line { int mx, my, x1,…