- 博客(97)
- 收藏
- 关注
原创 HDU 1700 || Points on Cycle (向量旋转,圆上等边三角形的周长最长
题目大意:以原点为中心的一个圆,给你圆上的一点,让你求出另外圆上的两点,让着三点连线组成的三角形的周长最长。 要周长最长,那么就把问题转化为,给你一点在圆上画等边三角形。 输入点P,那么点P逆时针旋转120°,顺时针旋转120°就是要求的亮点。注意:这题没有特判,我一开始用p点旋转成P1点在用P1点选择成P2点,死WA,换了一下就A了。#
2015-05-17 22:25:44 944
原创 POJ 3384 || Feng Shui (半平面交内推R
题目大意:给你一个凸包,里面放两个半径相同的圆,问你如果让这两个圆覆盖凸包的面积最大。两个圆可以覆盖重合,但不是不会跑到墙角折起来。输出放置圆的两个圆的圆心坐标。如果有多种可能,输出任意一种。思路:半平面交内推R,求目前这个核最远的两点,因为半径固定,两个圆的圆心离的越开,你们覆盖的凸包的面积也就越大。 1.半平面交内推R 2.暴力扫描一边核(就是一
2015-05-17 17:26:06 753
转载 POJ 3525 || Most Distant Point from the Sea (凸包求最大内接圆,半平面交内推r
题目在问这样一个问题:给定一个凸多边形,找到其中的一个点,使得其到每条边的距离最小值最大,输出这个距离。其实就是在问你,这个多边形中最大的一个内切圆有多大。怎么做呢?如果我们事先知道一个半径R,我们是不是能验证这个R是否可行呢?答案是肯定的,这样想:如果我们把这个多边形每条边都向内推进R,之后如果这个多边形还存在的话,就说明这个半径为R的圆肯定塞得下,因为还可以往里缩嘛。直
2015-05-12 21:08:48 1067
原创 POJ 3130 || How I Mathematician Wonder What You Are!
The mathematical definition of a star shape is as follows: A planar shape F is star-shaped if and only if there is a point C ∈ F such that, for any point P ∈F, the line segment CP is contained in
2015-05-12 20:41:33 686
原创 POJ 1279 || Art Gallery(半平面交求核面积
注意下一输入的点是逆时针或者顺时针,用面积判定一下是正负就可以啦,统一调整一下然后算出半平面交核的点集,求面积一下就OK了~#include#include#include#includeusing namespace std;const double eps = 1e-8;struct Point{ double x,y; Point(double xx=0.
2015-05-12 20:00:20 859
原创 POJ 1474 || Video Surveillance(半平面交
拿上一题代码改一下直接就过了,躶题233 我连题目都没看 看着题目的配图感觉都是那个意思,随便一交就AC了。66666.。。。#include #include #include #include #define eps 1e-8using namespace std;const int maxn = 200;int dq[maxn], lst, fir, pn, order[
2015-05-09 20:45:53 605
原创 POJ 3335||Rotating Scoreboard(半平面交求核
新抄一个模板,再学习。#include #include #include #include #define eps 1e-8using namespace std;const int maxn = 55;int dq[maxn], lst, fir, pn, order[maxn], ln;struct Point{ double x, y; Point(
2015-05-09 20:30:06 683
原创 计算几何 || 半平面交 (模板收集)
#include#include#include#includeusing namespace std;const double eps = 1e-8;struct Point{ double x,y; Point(double xx=0.0,double yy=0.0):x(xx),y(yy){} Point operator - (const Point &
2015-05-07 20:50:01 838
转载 计算几何 || 半平面交
首先解决问题:什么是半平面? 顾名思义,半平面就是指平面的一半,我们知道,一条直线可以将平面分为两个部分,那么这两个部分就叫做两个半平面。然后,半平面怎么表示呢? 二维坐标系下,直线可以表示为ax + by + c = 0,那么两个半平面则可以表示为ax + by + c >= 0 和ax + by + c 还有,半平面的交是神马玩意? 其实就是一个方程组,让你画出满足若干个式子的
2015-05-07 19:33:45 998 1
原创 POJ 2954 || Triangle ( pick定理
给你三角形三个顶点的坐标,让你求三角形内部的点数pick定理 三角形的面积 = 三条边上的点数/2 + 内部的点数 - 1一个pick定理模板,边上的点用GCD算。三角形面积叉积的一半。#include#include#include#includeusing namespace std;struct pnode{ int x,y; pnode(i
2015-05-07 09:34:38 545
原创 POJ 1654 || Area(求多边形面积
7 8 94 5 61 2 3如上键位,从原点开始,按数字几就是往哪个方向走,5停止求从原点开始,走过这些的路径围成的多边形的面积,用叉积来算就好了,以原点为起点,很easy不过爆int了没弄清楚范围,wa了几发!!!!!还有就是哪个输出,一定要弄成这样,我试了别的都wa。。。#include #include #include #include #includ
2015-05-05 20:07:03 680
原创 POJ 3348 || Cows(求凸包面积
五十平方米能样一头牛,问能养多少头牛,一个验证模板的题目,拿上一题的代码改一改就过了~新的andrew~#include #include #include using namespace std;struct pnode{ int x,y; pnode(int xx=0,int yy=0):x(xx),y(yy){} bool operator < (co
2015-05-05 19:15:17 559
原创 POJ 1228 || Grandpa's Estate(凸包andrew算法
题目大意:原来有一个凸包,可是凸包的顶点不全告诉你,给你一些凸包的点,问用这些点能不能确定唯一的凸包。 原谅我渣.. T T 看了好久不懂题目什么鬼。。默默的搜了一下题解。说的是,如果给的点扫一边构成当前的凸包,在扫描一边,看当前的凸包的每条边是否至少有三个点(包括这条边的端点),因为没有三个点的话,就不能确定一个凸包,也行原来的凸包可以在这两个端点之外再加一点生出一条边~
2015-05-05 17:46:02 964
原创 POJ 2546 || Circular Area(两圆面积交
求两个圆的相交面积,扔一个模板。#include #include #include #include using namespace std;const double eps = 1e-8;const double pi = acos(-1.0);struct point { double x, y; point( double xx=0,double yy=
2015-05-04 16:16:01 735
原创 POJ 2007 || Scrambled Polygon(逆时针输出凸包顶点,以原点为起始点
给你坐标的点只有三个象限,并且第一个点就是原点,为起始点,让你把这些凸包的点排序,逆时针输出,就是用叉积排序就好了,一个sort搞定。一开始没看懂题目。。看别人题解的翻译才懂的。。读题真的伤的,明明很水的题目。#include #include #include using namespace std;struct pnode{ int x,y; p
2015-04-28 16:30:44 735
原创 HDU 2826 || The troubles of lmy(判断两个N边形是否相似
题目给出两个N边形的逆时针的N个顶点,求问两个N边形是否相似。用这个定理就ok啦-> #include #include #include#include #includeusing namespace std;const double eps = 1e-8;int dcmp(double x){ if( fabs(x)<eps) return 0;
2015-04-16 21:44:12 951
原创 Acdream || 娜娜梦游仙境系列——诡异的钢琴(公共前后缀
娜娜与村民交流了好久才发现这里的人们给孩子的命名方式很奇怪,首先村民们的名字都是用专门的符号来记录,正好是26个符号,于是娜娜就把它们替换成‘a’~‘z’,然后首先把爸爸的名字作为孩子的姓,妈妈的名字作为孩子的名。这时候肯定有人会问,不是独生子女怎么办?很简单~取拼接好的名字的前缀与后缀相同的部分从短到长依次作为孩子的姓名,啥,不够?那就不许你再生孩子! 不过由于桃花村民
2015-04-16 18:23:33 1150
原创 计算几何 || 圆 二维模板
#include#include#include#include#include#define FIR first#define SEC secondusing namespace std;const double eps = 1e-8;const double PI = acos(-1.0);int dcmp(double x){ if(fabs(x)<eps)
2015-04-14 20:06:43 711
原创 UVA 10674 || Tangents(求两圆的共切线
大白模板题,但是大白模板放这题会有精度误差,死Wa,看了个题解,也是从大白模板改的,全部都用了浮点误差,偷偷敲走。两圆的共切线,根据两圆的圆心距从小到大排列,一共有六种情况。1) 两圆完全重合,有无数条公切线,返回-1;2)两圆内含,没有公共点,无公切线,返回0;3)两圆内切,有一条外公切线;4)两圆相交,有两条外公切线;5)两圆外切,有两条外公切线,一条内公切线;
2015-04-14 00:05:16 1253
原创 2013 山东省赛 || Rescue The Princess
逆时针给你等边三角形的两个顶点啊A,B,求第三个顶点的坐标。思路: 将B点绕A点逆时针旋转60°就OK了~就是我们要找的C点的坐标。 这里注意要将60°转为为弧度,为 P1/3 弧度。 大水题呵呵~希望我比赛的时候也能一A就过过过~0MS AC :#include#include#includeusing namespace std;const dou
2015-04-07 21:09:50 464
原创 POJ 2826 || an easy problem ?!(未AC,呵呵~
今日未AC,来日再战,头脑混沌。#include#include#includeusing namespace std;const double eps = 1e-8;int dcmp( double x ){ if( fabs(x)<eps) return 0; return x < 0 ? -1: 1;}//================
2015-04-06 20:49:59 573
原创 POJ 3347 || Kadj Squares (cos(45°)扩大sqrt(2)
给你一些四十五度角放在二维坐标系中的正方形的边长,求从上面可以看见序号为几的正方形;这题一开始我的想法是向量旋转,过程很猥琐复杂 = = 看了kuangbin的题解,啊~~如此简单粗暴学起来学起来。cos(45) = sqrt(2)/ 2 那么默认每个数都扩大sqrt(2)倍,输入数据的时候做一下处理,算出每个正方形的最左边和最后变点的X值处理完后再扫描一次,看当前正方形有没有被其他的
2015-04-06 00:00:43 742
原创 POJ 1696 || Space Ant (叉积,凸包变形题
有一只蚂蚁,只能左转,给你一些点集,这只蚂蚁只能到达点的时候左转,不用在乎多远,反正它都会走到~~问,如何让这只蚂蚁做够最多的点,这些点链接起来的路线不能交叉,且蚂蚁开始的第一个点是(0,miny) miny 是点集中y值最小。题目里面的三个条件,看完第一想法是想到graham的凸包算法,算出凸包,再在剩下的点中算出凸包,链接他们,依次。后面想想不用这么麻烦,核心就是用叉积
2015-04-05 17:46:02 545
原创 POJ 1410 || Intersection(线段矩形相交
判断线段与矩形相交有两种相交方式:1)线段与矩形的四条边的其中一条至少有一个交点(X积判断2)线段再矩形内(用坐标大小判断十分钟一A一计算几何水题,感觉自己越来越棒了。513KB,0MS#include#include#includeusing namespace std;const double eps = 1e-8;int dcmp( double x ){
2015-04-01 16:09:02 569
原创 计算几何模板之二维点线面模板
#include#includeusing namespace std;//================= 精度误差 ==============const double eps = 1e-8;int dcmp( double x ){ if( fabs(x)<eps) return 0; return x < 0 ? -1: 1;}//===
2015-03-30 21:21:08 911
原创 2014 辽宁 ACM 省赛 ( kuangbin oj 1020)|| Distance(两点式直线公式或直线求交点
少了一个等于号wa了数十发一直没有检查出来,我的内心几乎是崩溃的。1020: Distance时间限制: 1 Sec 内存限制: 32 MB提交: 88 解决: 19[提交][状态][讨论版]题目描述There is a battle field. It is a square with the side length 100 miles, and unfo
2015-03-29 13:21:23 1203
原创 POJ 2653 || Pick-up sticks (线段相交
在二维平面随机扔木棍,找出最顶上的没有被别的木棍压着的木棍,输出这些木棍的序号。核心算法就是线段相交:函数最后两句是判断这两条直线的相交,因为是线段,所以要加上线段端点的约束。bool inter(pline l1,pline l2){ return max(l1.st.x,l1.ed.x) >= min(l2.st.x,l2.ed.x) &&
2015-03-27 23:12:49 597
原创 POJ 2387 || Til the Cows Come Home(最短路,dijkstra
在N*N的范围内有T条路,注意一下重边,问最短路 。因为等下要写一题计算几何加最短路的,所以又复习了一下最短路的基础。http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 核心思想。#include #include #include using namespace std;#define FO
2015-03-26 22:57:26 552
原创 POJ 1269 || Intersecting Lines(直线重合,平行,相交判定
poj 不能用%lf输出,被坑了五六七八WA,从70多行的代码改到一百多行,发现卧槽原来是这个wa点,无法吐槽自己。没用模板,自己从头文件开始狂敲。等下去学一个模板好像非常简单粗暴。两条直线的X乘等于0说明重合或者平行,再其中一条直线的点是否再另外一条直线上判断是否是重合就可以区分了。两条直线的交点用向量偏移一下就好了。PS:没有考虑线段退化成一点的情况。
2015-03-26 20:10:13 788 5
原创 POJ 3304 || Segments (线段,直线相交
题目写太久现在都快忘记题意是什么了。赤果果的WA了五六七发,后来改的快和kuangbin的题解一样了。思路是一样的,但是自己的代码就是过不了!!注意的点。一开始将符号的重载是放在结构体外的,之后符号重载移到结构体内部就AC了。这是至今还搞不明白的WA点。望指点。题目大概意思。给你若干条线段,问你能不能画出一条直线,让所有的线段投影在这条直线上至少有一个点是重合的。
2015-03-25 23:01:18 683
原创 POJ 2398 || Toy Storage (2318排序升级版
题目同2318,只不过给的线段是无序的,输出的答案也不一样。要求输出的是如果一个区域有T个玩具,那么输出有多少个区域有T个玩具输出格式T: N按T的升序输出。水题,妥妥的。#include#include#includeusing namespace std;const int M =1000+5;int n,m,x1,y1,x2,y2,a,b;struct p
2015-03-24 20:16:51 424
原创 POJ 2318 || TOYS (叉积判断左右位置进行折半查找
给你一个矩形的左上角和右下角的坐标,以及从左到右把矩形划分为若干个空间的线段。这些线段都给出X的坐标,所以线段的两端坐标为,(Ui,Y1) ( Li,Y2).在给出M个点的坐标,求每个空间内有多少个点。利用叉积判断这个点在线段的左边还是右边→_→就是酱紫简单粗暴。注意一下 都是从零开始标号那么 线段有 0 到 n-1 而空间是 0 到 n#include#incl
2015-03-23 23:42:22 571
原创 HDU 5186 || 模拟map
模拟不进位的加法。昨天晚上比赛的时候脑子估计被驴踢了 = = 一直map不出来,今早map出来了g++,超时,c++过,加了各手写输入,结果c++挂了,g++过,一题水题反正把我弄得很坎坷,把危险代码该了一下这下都过了。还是不懂g++,和c++的不同之处,有空了解一下,如何把代码改成最土的那个模拟方法过了。果然只求过就好了,不要弄太那啥 = = 都是自己作。#include#
2015-03-15 17:04:05 507
原创 POJ 3984 || 迷宫问题 (bfs
BFS搜索,1 表示墙壁, 0 代表可走。一共有25个格子,每个各自有四个方向,讲每个格子分割看成每个小迷宫的第一步,那么就有100个第二步。将这些状态保存下来,并保存此状态的前一个状态,用于走出最短路径~让我再呐喊一下,最短路径用BFS!!最短路径用BFS~~!PS:元宵快乐 !!!敲代码快乐!!!#include#include#include#include#in
2015-03-05 20:16:42 495
原创 POJ 1321 || 棋盘问题 (dfs + 优化
“#”可放置旗子,“.”不可放置。DFS深搜一下就好了。题目真的很简单粗暴,为什么我一开始还想用排列组合。。问有多少中旗子摆放的方案数目,就是旗子可以摆出多少中图形,旗子顺序随意。从第一行顺序开始往下搜索,注意,第一个放旗子的行数之后,剩下的行数肯定要比剩下的旗子数多或者等于。不然剩下的没地方放了,也没有搜索的必要性了。开一个bool f[M] 来记录列的状态,fals
2015-03-04 11:35:12 591
原创 UVA 12300 || Smallest Regular Polygon(给定两点,求穿过两点的最小正多边形
题目灰常简单粗暴,给你两个不同的点,求穿过这两个点的最小面积的正多边形。输入数据,点A,点B,N;输出最小正多边形的面积。思维转换,两点一条线段,正多边形包含这条线段,而正多边形要最小,说明这条线段是这个正多边形的外接圆的直径。当多边形为偶数个顶点,AB的距离就是外界圆的直径,当N为奇数顶点, 算出 2N 的正多边形的内角如图右,今晚做了两题这题
2015-02-09 22:50:03 886
原创 计算几何 || 精度误差
bool dy(double x,double y) // x > y { return x > y + eps; } bool xy(double x,double y) // x < y { return x < y - eps; } bool dyd(double x,double y) // x >= y { retu
2015-02-09 19:53:29 883
原创 UVA 11646 || Athletics Track(圆心角乘半径 = 弧长
一个跑道,总长400.两边的弧长一致,中间矩形长宽比为 a:b求具体的长宽数值。算出比例后的弧长,求一下每份的K值就好了 = =#include#include#include#includeusing namespace std;int main(){ int cas = 0; double a,b; while( ~scanf("%l
2015-02-08 22:41:14 993
原创 UVA 11437 || Triangle Fun
给 A B C 的坐标, D E F分别为三条边的三等分点,求P R Q三角形的面积。直接求三点坐标就好了,算X积。#include#include#include#includeusing namespace std;struct point{ double x,y; point(){} point(double a,double b):x(a),y
2015-02-08 15:01:59 718
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人