摘要:
题目大意:从下面的一条直线看最上面的一条直线,中间有很多平行的障碍直线,问下面直线有多长是可以看到最上面的整条直线。。思路:对于中间的每条直线求看不到的长度,最后求交集即可code: 1 /* 2 State:Accepted 3 Time:2013-03-30 00:51:14 4 */ 5 #include <iostream> 6 #include <fstream> 7 #include <cstring> 8 #include <cstdio> 9 #include <cmath>10 #include <algori
阅读全文
posted @ 2013-04-11 23:11
yzcstc
阅读(149)
推荐(0)
摘要:
题意:给定一些点,找一条路径,要求经过点最多,并且不能相交。。。思路:可以用极角排序,但是实际上就是凸包的变形。。套用凸包模板即可。。code: 1 /* 2 Time:2013-03-26 18:22:16 3 State:Accepted 4 */ 5 #include<iostream> 6 #include<cstring> 7 #include<cstdlib> 8 #include<cmath> 9 #include<algorithm>10 #include<cstdio>11 #include<str
阅读全文
posted @ 2013-04-11 23:04
yzcstc
阅读(165)
推荐(0)
摘要:
最近去hust oj 上挂了一套题目计算几何,里面有几道半平面交的题,于是学了一下半平面交。。 所谓半平面,通俗一点就是就是一些形如 a*x+b*y+c <=0 (或 >=0)的区域,实际上就是平面的一半,成为半平面, 而半平面交,就是一些这样的半平面解的交集,反映上直角坐标系上就是半平面的共同区域 而求半平面的的方法一般有3种, 1)联机算法,这是一种朴素的做法,即对新加入的边判断原来的交点是否在合法的区域内,不合法就该点,并加入新点。。 最终的点就是合法的点。复杂度o(n^2) 2)分治法。即利用二分的思想 将 N条边划分成2个n/2,利用递归求解。算法复杂度o(nlogn).
阅读全文
posted @ 2013-04-11 22:01
yzcstc
阅读(1425)
推荐(2)
摘要:
题目大意:在10*10的空间里,中间有几堵平行于竖直方向的墙,每个墙由两扇门,求从(0,5)-->(10,5)的最短路径思路:把门边沿的点两点建立一条边(中间无墙挡住),和起点,终点同样建边。。最后就成最短路。。 网上大部分Dijkstra,其实数据很小,floyed足以搞定。。PS:这道题数据很弱,但是弱菜下标写错了。。调了非常久。。。还有看到网上有的写了接近300行代码吓尿了。。写的很搓的代码: 1 /* 2 Time:2013-03-25 23:56:19 3 State: Accepted 4 */ 5 6 #include<iostream> 7 #i...
阅读全文
posted @ 2013-03-26 00:21
yzcstc
阅读(188)
推荐(0)
摘要:
题目大意:2318:给定一个矩形和n条边(由上到下,不想交),这些边把矩形分成n+1块(0 ~n)。。问给M个点,每块区域有多少个点。。2398:差不多,只是给定的线段未排序。。还有输出变成输出相同点数的个数。。 比如 0~N:1,1,2,1,3 那么输出:Box 1:3 2:1 3:1思路:简单的点与线断的判断,用叉乘解决。。code2318 1 /* 2 State:Accepted 3 Time:2013-03-24 20:57:09 4 */ 5 6 #include<iostream> 7 #inclu...
阅读全文
posted @ 2013-03-26 00:12
yzcstc
阅读(272)
推荐(0)
摘要:
黑书138面的题目。。典型的状态压缩dp。而且神奇的用了3进制。。思路看黑书了。。直接上code 1 /* 2 State:Accepted 3 Time:2013.3.23 14:10 4 */ 5 #include<iostream> 6 #include<cstring> 7 #include<cstdlib> 8 #include<cstdio> 9 #include<fstream> 10 #include<algorithm> 11 #define M0(a) memset(a ,0,sizeof(a)) 12
阅读全文
posted @ 2013-03-24 00:51
yzcstc
阅读(249)
推荐(0)
摘要:
题意:给定一张图,要求从起点出发走遍每一条边并回到起点的最短路径。。思路:由一笔画问题可知,想满足题意每个点必须是偶点(度为偶数),所以首先用floyed做一遍最短路, 找到奇点之间的最短路径。。 接下来便是用状态压缩dp就可决解。。 1 /* 2 State:Accepted 3 Time:2013-03-21 14:50:26 4 */ 5 #include<cstdio> 6 #include<cstdlib> 7 #include<fstream> 8 #include<queue> 9 #include<stack>10 #
阅读全文
posted @ 2013-03-24 00:48
yzcstc
阅读(274)
推荐(0)
摘要:
题目大意:给你一个n*m的矩形,里面有些格子可以选取。。在可选取选取格子,要求不能相邻。。求方案数。。思路:状态压缩dp f[i][j]表示第i行状态为J的方案数 f[i][j] = sigma(f[i - 1][k]) 状态k表示的取法与j取的不相邻。且j为合法取法(与给定的不冲突) 1 /* 2 Time:2013-03-19 23:07:07 3 State:Accepted 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <cstdlib> 8 #include <cstdi
阅读全文
posted @ 2013-03-24 00:40
yzcstc
阅读(226)
推荐(0)
摘要:
poj2411的弱化版http://www.cnblogs.com/yzcstc/archive/2013/03/23/2977689.html 1 /* 2 State:Accepted 3 Time:2013-03-19 20:41:08 4 */ 5 #include <iostream> 6 #include <cstring> 7 #include <string> 8 #include <cstdlib> 9 #include <cstdio>10 #include <algorithm>11 #include
阅读全文
posted @ 2013-03-24 00:31
yzcstc
阅读(241)
推荐(0)
摘要:
题目意思:一个2*b的矩形上有n头牛,现在要用k个矩形覆盖牛。问最少覆盖的面积思路:状态压缩dp 因为b太大,所以得先离散化 f[i][j][k]表示前i列(有牛在的列),用了k个矩形,状态为K所用的最小面积 情况有:1.单独放1个矩形 2.单独放2个矩形 3.由前面放的延伸过来(1个或2个)情况多了点,写起来挺麻烦的。。 1 /* 2 State:Accepted 3 Time:2013-03-19 19:26:02 4 */ 5 #include<cstring> 6 #include<string> 7 #include<cs...
阅读全文
posted @ 2013-03-24 00:28
yzcstc
阅读(237)
推荐(0)