自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点一点的进步

  • 博客(35)
  • 资源 (4)
  • 收藏
  • 关注

转载 POJ 计算几何入门题目推荐

计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点

2013-10-17 12:56:02 1585

原创 SGU 176 Flow construction 有源汇 有上下界的最小流

题意就是给出一个图。有源汇然后每条边都有容量的上下界限制。问的是是否有一个最小流,使得每条边得流量都满足流量限制,并且流量守恒我使用的是二分的方法。每次二分都要重新构图,然后计算。#include #include #include #include #include #include #include #include #include #include

2013-10-31 10:47:23 1677

原创 HDU 3749 Financial Crisis 点双连通分量

给一个无向图, n 然后给出若干的询问(方法:求点的双连通分量。然后一个割点,有可能属于多个点双连通分量。所以我们要是用vector把每个点属于的点双连通分量的编号都存起来。然后我们要计算每个点双连通分量中的边的个数。 因为有那种只有一条边的双连通分量。计算的方法就是查看边得两个端点所属的双连通分量,如果两个端点有同属于的一个双连通分量,就把对应的数目加1

2013-10-30 21:42:52 2222 1

原创 ZOJ 3570 Lott's Seal 计算几何

题目大意是有一些点,然后我们要用一个六角星形将任意这些点连成的直线覆盖。 并且这些点构成的凸包面积必须满足小于某个值六角星形的中心点和半径已经给定了。就是一个判定问题了。首先要判断所有点是否都在六角星形内我们观察这个形状,发现是两个三角形组成的图形。那么只需判断某个点是否在某个三角形内即可这里就用到叉积就行了。然后对所有点求个凸包。求个面积然后看这些

2013-10-30 17:22:35 996

原创 ZOJ 3562 Alice's Sequence I 中国剩余定理 不互质

不互质的中国剩余定理就不能直接方程组那样搞了两个两个的搞就行然后求出的解之间的间隔是固定的。#include #include #include #include #include #include #include #include #include #include #include #define MAXN 111111#define MA

2013-10-30 17:08:37 1326

原创 POJ 2074 Line of Sight

思路很清晰。首先排除掉不在house和pro之间的障碍物然后对每个障碍物,将站在直线上不能看到整个house的区间求出来。最后对这些区间,扫一遍,贪心求一下即可#include #include #include #include #include #include #include #include #include #include #inclu

2013-10-24 22:53:49 1050

原创 POJ 1584 A Round Peg in a Ground Hole 圆是否包含在凸包内

首先判断是否是逆时针给出的多边形。用叉积判断即可。如果不是逆时针,就reverse成逆时针的。然后判断是否是凸包,还是用叉积。然后就判断圆心是否在凸包内很好判断,用叉积,逆时针扫一遍点就行。然后就要判断圆心到各个边得距离要大于半径。这里最好用叉积,以免丢了精度,叉积就是那个四边形的面积,除以边长就是点到边得垂直距离。#include #includ

2013-10-24 22:51:20 891

原创 POJ 3449 Geometric Shapes

判断多边形是否相交只需把多边形拆成一条条的线段,然后看线段是否相交即可其中需要注意的是正方形顶点的求法,最好不使用三角函数去求。看我代码中的方法。然后就比较好搞了#include #include #include #include #include #include #include #include #include #include #includ

2013-10-24 22:48:23 1423

原创 POJ 1039 Pipe

枚举任意两个点作为直线。看是否能穿越整个管道即可。判断相交使用叉积。#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005#define MAXM 211111#def

2013-10-24 22:46:21 717

原创 POJ 2826 An Easy Problem?!

这题的恶心程度一流。卡精度貌似丧心病狂。。WA了一版。最后G++过不了,C++过的。考虑好DISCUSS中的情况基本就行了、#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100

2013-10-24 22:44:57 850

原创 POJ 3347 Kadj Squares

贪心即可对于一个方块。如果比之前的方块边长小。就可以塞到之前方块的下面如果比之前的方块边长大。 就要靠在之前的所有方块上比一下。找最大的一个位置就是。#include #include #include #include #include #include #include #include #include #include #include #de

2013-10-24 22:43:03 685

原创 POJ 1696 Space Ant 贪心

每次选择向左偏移角度最小的下一个点即可。或者说左边点最多的点。#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005#define MAXM 211111#define eps 1e-

2013-10-24 22:39:24 639

原创 POJ 1410 Intersection 线段交

计算几何入门判断线段是否与一个矩形相交包含在内部也算那么判断是否在矩形内部,只需叉积即可判相交就判断跟矩形的四条线段相交即可#include #include #include #include #include #include #include #include #include #include #include #define

2013-10-24 22:37:44 725

原创 POJ 1066 Treasure Hunt 线段交

要到达目标点。必然会经过一系列的线段在这些线段上,在哪里开门都是一样的。所以只需枚举边上的点到目标的点连接的线段中间交多少线段,求最小即可#include #include #include #include #include #include #include #include #include #include #include #define

2013-10-24 22:35:50 677

原创 POJ 2653 Pick-up sticks 线段交

直接暴力即可,因为题目中说了top line不超过1000个。所以理论复杂度不会非常大#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005#define MAXM 211111#

2013-10-24 22:34:02 758

原创 POJ 1556 The Doors 计算几何+ 最短路

计算几何入门枚举任意两个点,看连成的线段之间是否交于其他线段,如果中间没交与其他线段,表明两个点可通过直线到达然后将所有的这种都跑出来。 建图求最短路即可#include #include #include #include #include #include #include #include #include #include #includ

2013-10-24 22:32:30 877

原创 POJ 1269 Intersecting Lines 直线交

计算几何入门无非是平行, 重合和相交#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005#define MAXM 211111#define eps 1e-8#defi

2013-10-24 22:29:58 671

原创 POJ 3304 Segments 线段交

计算几何入门将所有的线段的端点存起来,枚举任意两个端点构成的直线,看是否能穿过所有线段即可#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005#define MAXM 21

2013-10-24 22:26:30 607

原创 POJ 2318 TOYS 二分+叉积

入门计算几何判断在哪个区域内只需看跟某条线的叉积即可可以保证单调性,所以可以进行二分#include #include #include #include #include #include #include #include #include #include #include #define MAXN 100001#define MAXM

2013-10-24 22:24:42 722

原创 [Usaco2010 Mar]balloc 农场分配

Farmer John最近新建立了一个农场,并且正在接受奶牛的畜栏分配请求,有些畜栏会看到农场美妙的风景。:)农场由N (1 (1 这样的话奶牛可以在这段牛棚里面转悠。(当然,这段畜栏必须要有足够的空间)给出M (1 具体做法就是对请求,按照r关键字递增排序,然后r相同就按照l递减排序。总的来讲就是优先截止早的区间,相同的话就优先区间长度

2013-10-24 21:53:43 2028

原创 Uvalive 4865 Data Recovery 最大流

题意就是给一个50 * 50的矩阵然后给出每行每列元素的和和一个初始矩阵矩阵中有些是未知,有些是已知然后我们求目标矩阵就是把能确定的元素的值求出来,实在不能确定的就置为-1所有矩阵元素的值在0-100之间看到范围很小。第一反应是求一个最大流先把已经给出的元素都从每行每列的和中减掉。然后左边为行结点,右边为列结点然后源点向行结点连边列结点向源点

2013-10-15 13:09:44 973

原创 后缀数组练习题若干

POJ 1743    不可重叠最长重复子串二分答案。 即子串的长度,假设为k时。利用height数组,将排序后的后缀分为若干组。每组内的height值都不小于k。然后只需查看组内是否有满足要求的两个不会产生重叠的子串即可。#include #include #include #include #include #include #include #defin

2013-10-13 21:00:12 3664

原创 [Usaco2006 Nov]Corn Fields牧场的安排 壮压DP

看到第一眼就发觉是壮压DP然后就三进制枚举子集吧。这题真是壮压入门好题。。。对于dp[i][j] 表示第i行,j状态下前i行的分配方案数。那么dp[i][j]肯定是从i-1行转过来的那么由于不能挨着放,那么我们肯定是枚举i - 1行状态时不能包含j的任何一位。那么只要令k = ((1 是这样枚举k的子集int sub = k;do{    sub

2013-10-12 12:08:14 2080

原创 [Usaco2009 Feb]Revamping Trails 堆优化 Dijkstra

。。这题一眼就看出就是一个二维DPdp[i][j]表示到点i使用了j次免费边的最短距离MD 卡SPFA。。遂写dij。 AC#include #include #include #include #include #include #include #include #define eps 1e-8#define MAXN 11111#d

2013-10-10 00:20:50 2081

原创 Investigating Div-Sum Property Uva 11361

给定正整数a, b, k统计在a 那么首先观察,a, b的范围是int类型。所以说a, b中肯定数字的和不会超过90.那么k>90的时候显然直接输出0就行了。然后可以每次都预先处理出一个三维数组f[i][j][p] 代表的是i长度的数字,各数字之和模k余j,该数模k余p的数字个数这个很容易然后算某个数的时候按位一个一个往后算就行了#include #i

2013-10-09 13:47:46 1335

原创 POJ 1737 统计有n个顶点的连通图有多少个 (带标号)

设f(n)为所求答案g(n)为n个顶点的非联通图则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2)其中h(n)是n个顶点的联图的个数这样计算先考虑1所在的连通分量包含哪些顶点假设该连通分量有k个顶点就有C(n - 1, k - 1)种集合确定点集后,所在的连通分量有f(k)种情况。其他连通分量有 h(n - k)种情况因此

2013-10-08 22:13:28 6042 1

原创 UVA11174 Stand in a Line

题意是:村子里有n个人,有多少种方式可以把他们排成一列,使得没人会排在他父亲的前面然后给的关系大概是一个森林的样子看训练指南中的讲解才豁然开朗设f(i)是以节点i为根的子树的排列方法数则 f(i) = f(c1)* f(c2) *f(c3) * f(c4).....* f(ck) * (s(i) - 1)! / ((s(c1)! * (s(c2))! .... *

2013-10-08 21:04:04 1024

原创 SPOJ DQUERY 求区间内不同数的个数 主席树

这题跟HDU3333差不多吧。离线的做法很简单,不再说了以前做过。主席树的做法就比较暴力了。。什么是主席树呢。。其实是某种称号。在该题中的体现是可持久化的线段树。对于一个数如果以前没出现过就插入到主席树中否则就删除以前那个。再插入主席树。注意,所有的更新和删除都是建立了新的节点来保持其历史状态的。。对于T[i]我们存的是从

2013-10-07 22:50:14 4686

原创 UVALive 6198 A Terribly Grimm Problem

题目大意是给出L,H      10^10范围为[L, H]这个连续的整数区间寻找一个序列。序列的长度要跟[L, H]一样然后序列中的数都是素数,并且互不相同并且序列中第i个数 要求是L + i -1的一个素因子 最后要求序列的字典序最小然后可以看到L,H很大但是我们需要注意的是,这个序列长度肯定不会很大太大了肯定满足不了题目的要求。

2013-10-06 01:03:44 1248

原创 UVALive 4959 Jumping monkey

题意就是:一个猎人在森林里捕猎。然后有只猴子,喜欢躲树的后边,猎人看不见它然后给出了一张图,表示有哪些树是相邻的。数据保证任意图中两个树都可以直接或间接的到达猎人有一个枪,每次他可以选择一颗树,然后射子弹。如果猴子躲那个树后边,就被打死了。但是如果没躲那个树后边,猴子会利用猎人换子弹的时间立刻蹦到这个树相邻的树上躲藏,问猎人应该怎样击打树才能保证必然能击打中猴子

2013-10-06 00:43:14 1367

原创 UVALive 4957 Fake scoreboard

题意就是有n个队伍和m个题目给出了每个队伍解决的题目数量每个题目也给出了被解决的次数然后求一个方阵。N,Y表示每个队伍是否过了哪个题目。要求字典序最小。这题给人的第一反应就是网络流。虽然用网络流并不是最优算法。但绝对是最直观的。行和列分成两部分点。源点向行连边。行向列连边列向终点连边就行了然后字典序要求最小。

2013-10-06 00:31:07 1403

原创 Project Euler problem 67

这水题。。#include #include #include #include #include #include #define eps 1e-8using namespace std;int dp[111][111];int main(){ freopen("C:/data.txt", "r", stdin); for(int i = 1; i <

2013-10-01 18:27:52 1132

原创 Project Euler problem 66

pell方程及连分数wiki如下http://zh.wikipedia.org/wiki/%E9%80%A3%E5%88%86%E6%95%B8http://zh.wikipedia.org/zh-cn/%E4%BD%A9%E5%B0%94%E6%96%B9%E7%A8%8B主要应用的是 对于连分数 ,前四个收敛(编号  到 )是用普

2013-10-01 18:19:27 1684

原创 Project Euler problem 65

。。水题。直接模拟这个过程即可arr = []arr.append(2)for i in range(1, 50): arr.append(1) arr.append(2 * i) arr.append(1)up = 1now = 99down = arr[now]for i in range(now - 1, -1, -1): ta = arr[i] * down

2013-10-01 12:31:50 1032

原创 Project Euler problem 64

这题直接模拟就行了。然后就看算出来的这个式子是否以前出现过比如样例中的a5 = 1,  7/(sqrt(23) - 3)这个23是固定的所以只要看1, 7, -3这个组合以前出现过没用hash就行。当然我用的是python的dic直接传一个tupleimport mathdef gao(n): m = int(math.sqrt(n)) if m * m

2013-10-01 11:48:22 1005

归并排序实现

使用C++实现了归并排序,有注释,简明易懂

2013-06-11

堆排序实现

使用C++实现了堆排序,有注释,简明易懂

2013-06-11

插入排序实现

使用C++实现了插入排序,有注释,简明易懂

2013-06-11

java 俄罗斯方块源码

代码可直接运行, 主要功能有基本的俄罗斯方块,加速,开始,暂停等

2011-12-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除