2012年2月20日
摘要: POJ_1177 这个题目和POJ_1151基本思路是一样的,一些具体的思路可以参考我的那篇题解:http://www.cnblogs.com/staginner/archive/2012/02/20/2359396.html。 相比算面积不同的是,每次计算面积的操作需要改为计算周长的操作,同时周长可以分成平行于x轴的部分和平行y轴的部分分开来求。#include<stdio.h>#include<string.h>#include<stdlib.h>#define zero 1e-8#define MAXD 10010#define INF 10010in 阅读全文
posted @ 2012-02-20 23:53 Staginner 阅读(372) 评论(0) 推荐(0) 编辑
摘要: POJ_1389 这个题目和POJ_1151基本是一样的,一些具体的思路可以参考我的那篇题解:http://www.cnblogs.com/staginner/archive/2012/02/20/2359396.html。#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXD 2010#define zero 1e-8struct square{ double x1, y1, x2, y2;}s[MAXD];int N, M, X;double tx[MAXD], left[MAX 阅读全文
posted @ 2012-02-20 21:24 Staginner 阅读(219) 评论(0) 推荐(0) 编辑
摘要: POJ_1151 这个题目是我第一次接触离散化的东西,看了黑书相关的部分后便按自己的理解设计了一个算法: 首先将x-y平面看成被矩形的四个边所在的直线切成了若干块,然后把每一块看成1个点,之后扫描一遍所有矩形,把这些矩形覆盖的点标记一下,最后再计算一下所有标记的点的面积即可。 这样做排序x坐标是O(nlogn)的复杂度,排序y坐标是O(nlogn),由于x和y轴最多被切2*n刀,所以最后得到的点的数量是n^2数量级的,这样标记矩形覆盖的点就是O(n^3)的复杂度,最后扫描的时候是O(n^2)的复杂度,提交之后TLE了。 之所以TLE是因为O(n^3)的复杂度过高了,我们必须降低这一部分的... 阅读全文
posted @ 2012-02-20 14:10 Staginner 阅读(698) 评论(0) 推荐(0) 编辑
摘要: POJ_2540 不妨设上一个点为p,现在走到的点为c,显然到p的距离和到c的距离相等的点就在线段pc的中垂线上,而这条直线把平面分成了两个半平面,如果是Hotter就说明object在更靠近c的这个半平面内,如果是Colder就说明object在更靠近p的这个半平面,于是,我们就把这个问题转化成半平面交的问题了。#include<stdio.h>#include<string.h>#define MAXD 210#define INF 10#define zero 1e-8struct point{ double x, y;}wa[MAXD], wb[MAXD], * 阅读全文
posted @ 2012-02-20 09:33 Staginner 阅读(339) 评论(0) 推荐(0) 编辑
摘要: POJ_1755 一开始以为要枚举3个路程的,但细想之后只需枚举两个,因为可以将总路程看成定值,不妨设成INF。 这样对于选手i,如果在x长度的第一项和y长度的第二项能够比任意的选手j跑得快,那么就有x/v[i]+y/u[i]+(INF-x-y)/w[i]<x/v[j]+y/u[j]+(INF-x-y)/w[j],进一步就能化成a1*x+a2*y+a3<0的形式,于是就可以用半平面交去看最后是否解了。 但有几个问题需要细想一下: 第一个就是a1和a2是否为0的问题,因为这个涉及到后面求向量的方式,如果a1和a2不全为0,那么我们不用特殊讨论,因为这样后面的操作没有什么影响,而如果a 阅读全文
posted @ 2012-02-20 00:19 Staginner 阅读(655) 评论(0) 推荐(0) 编辑