摘要: 一个很玄乎的问题,但听到2-SAT之后就豁然开朗了。题目的意思是这样的,给你n个点群,每个点群里面有两个点,你要在每个点群里面选一个点,以这些点做半径为r的圆,然后r会有一个最大值,问的就是怎么选这些点使得r最大。2-SAT就是对于每个变量有一些制约的关系 a->b 表示选了a就就要选b。然后我们二分这个半径,对于两点间距离#include#include#include#include#include#define ll long long#define maxn 220#define eps 1e-8using namespace std;struct Point{ double x 阅读全文
posted @ 2014-03-30 23:43 chanme 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个有向图,第一类边是从第i个点到第i+1个点的,还有多出来的m条二类边,是从u到v的,同样是有向的。然后你要处理询问,从u到v经过最多一次二类边的最短距离是多少。题目我觉得是神题,然后看了网上的一些神解法,其中一个非常neatly,在此说下感想。首先我们考虑的是(uv)的,是不可能用到的。然后我们想,从u到v的最短距离,就是利用u+1~v中的某个起点的二类边到达某个点k(uv)的询问的时候,所有的二类边(uv1的边,然后从v1到达v,区间顺序如下:(v1,v,u,u1),那么花费究竟什么时候最少呢?我们如何利用u1->v1这条边去更新呢?不难发现,我们实际上的距离其实就是 d 阅读全文
posted @ 2014-03-30 20:57 chanme 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 第一道点在多边形内的判断题,一开始以为是凸的。其实题意很简单的啦,最后转化为判断一个点是否在一个多边形内。如果只是简单的凸多边形的话,我们可以枚举每条边算下叉积就可以知道某个点是不是在范围内了。但对于更一般的多边形,要采用的方法可能就要复杂一些,其中一种是叫做射线法的东西,在该点上画一条射线,如果射线与多边形偶数次相交,则说明点在多边形外,否则在多边形内。实践中可以取水平的一条,至于怎么判断就要看下代码了,判断的过程中如何发现点已经在多边形上了则直接返回。计算几何做的少,则是算是补充了一个盲区吧。#pragma warning(disable:4996)#include#include#inc 阅读全文
posted @ 2014-03-30 19:01 chanme 阅读(212) 评论(0) 推荐(0) 编辑