07 2014 档案

摘要:水题。不过,题意。。呵呵了。。围一个凸包,求出面积,然后除以50就可以了。#include #include #include #include using namespace std;const int MAXN=10500;struct point { int x,y;}p[MAXN];int ... 阅读全文
posted @ 2014-07-31 22:04 chenjunjie1994 阅读(235) 评论(0) 推荐(0)
摘要:按位枚举,按最小价值,最小砍掉树剪枝就好了。#include #include #include #include #include using namespace std;const int MAXN=20;const int inf=190000000;int n,l;int st[MAXN],... 阅读全文
posted @ 2014-07-31 21:25 chenjunjie1994 阅读(229) 评论(0) 推荐(0)
摘要:给题意跪了。。。题目输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否稳定。所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点。这样,只需判断每条边是否有大于等于三点即可。注意,一条直线的凸包是NO#include... 阅读全文
posted @ 2014-07-31 21:20 chenjunjie1994 阅读(280) 评论(0) 推荐(0)
摘要:直接求凸包,输出即可。#include #include #include #include #include using namespace std;const int MAXN=100;int n,l;int st[MAXN],stop,cnt;int ans[MAXN];struct poin... 阅读全文
posted @ 2014-07-31 15:13 chenjunjie1994 阅读(139) 评论(0) 推荐(0)
摘要:求凸包,然后加上一个半径为L的圆周就好了。因为每到一个凸包的顶点时,需要保持最小间距为L,则多个顶点围起来会有360度。在输出时,不要把结果直接转化主INT,因为这个不是四舍五入。#include #include #include #include #include using namespace... 阅读全文
posted @ 2014-07-31 11:26 chenjunjie1994 阅读(202) 评论(0) 推荐(0)
摘要:这题是明显的TU包变形。使用卷包裹法可解,而且是必定可以经过所有点的。直观可知,当经过某点后,相当于把之前的点抹去,求剩下点的TU包,递归下去,也就能把点全部经过了。于是,只需把经过的点标记一下就可以了。#include #include #include #include #include usi... 阅读全文
posted @ 2014-07-30 22:44 chenjunjie1994 阅读(246) 评论(0) 推荐(0)
摘要:模板题,注意一下输出就可以。#include #include #include #include using namespace std;struct point { double x,y;};struct triangle{ point t[3];}t;struct Circle{ double... 阅读全文
posted @ 2014-07-30 11:32 chenjunjie1994 阅读(159) 评论(0) 推荐(0)
摘要:水题,就是把一个矩形平分。题意:一个wid*hei的矩形,过底边上的一点(dor,0)做m-1条射线,把这个矩形的面积平均分成m份,求这些射线和矩形的另外一个交点。直接枚举,然而求三角形高底移动坐标即可。#include #include #include #include using namesp... 阅读全文
posted @ 2014-07-30 10:32 chenjunjie1994 阅读(145) 评论(0) 推荐(0)
摘要:PICK定理:格子上的多边形面积=边界上格子点数/2+内部点数-1。利用叉积求出面积。再枚举边上的点数。然后按公式求出内部点数就可以了。关于PICK:http://blog.csdn.net/i_fuqiang/article/details/9817343#include #include #in... 阅读全文
posted @ 2014-07-29 22:22 chenjunjie1994 阅读(259) 评论(0) 推荐(0)
摘要:先判断是否在圆内,然后用叉积判断是否在180度内。枚举判断就可以了。。。感觉是数据弱了。。#include #include #include #include #include using namespace std;const double eps=0.00000001;struct point... 阅读全文
posted @ 2014-07-29 21:16 chenjunjie1994 阅读(250) 评论(0) 推荐(0)
摘要:题意:从一条线段(property)上观察另一与之平行的线段(house),其中有很多与它们都平行的线段(障碍物),求在property得可见整条线段house的最长连续范围的长度。初时的想法是,求出在哪些点的范围可以看到整个HOUSE。 后来在DIS上找了几组数据,就变得都要特判了。再想想,既然找... 阅读全文
posted @ 2014-07-29 20:33 chenjunjie1994 阅读(347) 评论(0) 推荐(0)
摘要:可以证明O是三角形ABC的垂心。作图辅助线,一个很重要的技巧是延长中线等中线。可以证明三角形DNA全等于ABC。然后通过角度变换容易证明AQ垂直于BC。#include #include #include using namespace std;struct point{ double x,y;}A... 阅读全文
posted @ 2014-07-29 15:22 chenjunjie1994 阅读(227) 评论(0) 推荐(0)
摘要:可以通过顶角角度来计算切线与坐标轴的坐标开始还以为有公式可以算,谁知道原来是解二元一次方程,靠。。#include #include #include #include using namespace std;const int MAX=1050;struct point{ double x; in... 阅读全文
posted @ 2014-07-28 22:27 chenjunjie1994 阅读(186) 评论(0) 推荐(0)
摘要:不知 是怎么看出的精度不够,吸经验吧。#include #include #include #include #include using namespace std;char str[1000050];int dir[10][2]={{0,0},{-1,-1},{0,-1},{1,-1},{-1,... 阅读全文
posted @ 2014-07-28 20:50 chenjunjie1994 阅读(162) 评论(0) 推荐(0)
摘要:一条直线,必定可以通过旋转和平移使得它和一个上顶点一下顶点相切,这样的直线是最优的。因为这样能确定了直线所能到达的最远X。这样的两个顶点就规定了它的上下界,所以,枚举上下顶点,注意判断是否能到达入口处。只需判断直线是否与每个横切面的直线都有相交。#include #include #include ... 阅读全文
posted @ 2014-07-28 11:53 chenjunjie1994 阅读(145) 评论(0) 推荐(0)
摘要:由于到达点时不能绕墙,因为这是无意义的,所以,两点间的最小墙依然是按照直线所穿过的墙计算。#include #include #include #include using namespace std;const double eps=0.000000001;struct point{ double... 阅读全文
posted @ 2014-07-28 11:49 chenjunjie1994 阅读(165) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/metaphysis/article/details/6926997先向作者表达一下敬佩吧,十分巧妙地利用了状态压缩。这道题有点组合数学的味道,当一个格子选后,就把行最大值与格子值相等的行标志位置1.这样,当111111111111即是求的状态了。这样,可以... 阅读全文
posted @ 2014-07-27 11:24 chenjunjie1994 阅读(313) 评论(0) 推荐(0)
摘要:内部也是相交#include #include #include #include using namespace std;struct point{ int x,y;};struct edge{ point start,end;}line[4],the;void swaped(int &x,int... 阅读全文
posted @ 2014-07-26 11:03 chenjunjie1994 阅读(139) 评论(0) 推荐(0)
摘要:开一个数组做成队列来搜索就好了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int MAXN=100010; 9 10 typedef struct po... 阅读全文
posted @ 2014-07-25 21:55 chenjunjie1994 阅读(209) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std;const int Max=1050;struct e{ int x1,x2;}edge[Max];struct c{ int x,y;}cal[4];int n,m;int X1,Y1,... 阅读全文
posted @ 2014-07-25 16:10 chenjunjie1994 阅读(112) 评论(0) 推荐(0)
摘要:枚举每两点的直线,看连线中是否存在线段交点,若存在,即这两点的直线不存在。建图,DIJK就可以了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 cons... 阅读全文
posted @ 2014-07-24 22:30 chenjunjie1994 阅读(216) 评论(0) 推荐(0)
摘要:中学的 又用上了。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 int x1,y1,x2,y2,x3,y3,x4,y4; 8 double k1,k2,k3,d1,d2; 9 double x,y;10 11 ... 阅读全文
posted @ 2014-07-24 20:13 chenjunjie1994 阅读(239) 评论(0) 推荐(0)
摘要:题目可以转化成是否存在这样的一条直线,穿过所有的线段。这是很容易就能想到的。然后,假如只有一个端点重合,那么我们可以知道,必定会有属于两条线段的某两个端点连出的直线可以穿过所有线段。这是枚举的思想。那么,我们该怎么判定直线与线段有交点呢?不妨通过跨立的定义来做,这是经人点醒了才想到的。在求线段是否有... 阅读全文
posted @ 2014-07-24 16:35 chenjunjie1994 阅读(192) 评论(0) 推荐(0)
摘要:第一道计算几何。二分一下用叉积来判。。看了DIS上说要INT64,就改INT64了。。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int Max=5050; 7 8 struct ... 阅读全文
posted @ 2014-07-23 23:48 chenjunjie1994 阅读(160) 评论(0) 推荐(0)
摘要:这道题好吧,一开始便是拓扑排序的想法,搞了好久,试了多组测试数据,没错啊,可是没过。。。作孽啊,竟然忘了拓扑不能处理环,白浪费了一晚上。。。只好用动态规划了。。DP【time】【city】表示在time时刻到达city的最迟出发时间,当然,在这个时间不一定到city。转移方程挺简单,不说你也会。 1... 阅读全文
posted @ 2014-07-23 08:22 chenjunjie1994 阅读(510) 评论(0) 推荐(0)
摘要:二分+并查集二分枚举边权,再用并查集判连通 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 const int MAXN=110; 8 const int MAXM=10100; 9 const ... 阅读全文
posted @ 2014-07-22 20:21 chenjunjie1994 阅读(151) 评论(0) 推荐(0)
摘要:一次FLOYD,再枚举。注意题目要求的输出是什么哦。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int inf=9999999; 8 const int MAXN=505; 9 ... 阅读全文
posted @ 2014-07-22 17:07 chenjunjie1994 阅读(182) 评论(0) 推荐(0)
摘要:求的是无向图的点连通度。开始便想到网络流,既然选的是点,当然就要拆点加边了。但无论如何也不敢往枚举源汇点的方向想,因为网络流复习度很高。看看网上大牛的,都是枚举,再看数据,原来N才50个点,枚举无压力啊。看来自己以后要注意分析一下复杂度了。总结:1)无向图点连通度看来没有什么好的算法。网络流。把点i... 阅读全文
posted @ 2014-07-22 15:06 chenjunjie1994 阅读(183) 评论(0) 推荐(0)
摘要:很容易发现是网络流的题目,但最少边怎么求呢?初时想不到,但画图后忽然发现可以这样:求一次网络流最小割后,把满流的边置1,不满流的置INF。再求一次最大流即可。为什么呢?是否会存在一些边当前不满流,但有可能是最少边数最少割的边呢?否。因为按照DINIC的求法,每次都是增广容量最少的路,若当前不满流,则... 阅读全文
posted @ 2014-07-22 10:57 chenjunjie1994 阅读(238) 评论(0) 推荐(0)
摘要:无向图最小割。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=150; 7 const int inf=10000000; 8 int vis[MAXN],combine[MAXN],wa... 阅读全文
posted @ 2014-07-21 22:06 chenjunjie1994 阅读(159) 评论(0) 推荐(0)
摘要:不吐槽。。 1 #include 2 #include 3 #include 4 5 //无语的水题。节哀吧。且这道题不严谨,因为没说是无环。算了,不吐槽了。优先队列+BFS 6 7 using namespace std; 8 const int inf=1000000... 阅读全文
posted @ 2014-07-21 21:48 chenjunjie1994 阅读(493) 评论(0) 推荐(0)
摘要:一个源点,一个汇点,明显是网络流的问题,但据说用网络流来求最小割,会超时。。囧,那出题的人是怎么想的。。。用SW的算法来求最小割。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=310; ... 阅读全文
posted @ 2014-07-21 20:29 chenjunjie1994 阅读(170) 评论(0) 推荐(0)
摘要:无向图全局最小割算法求 G=(V, E)中任意 s-t 最小割的算法:定义w(A, x) = ∑w(v[i], x),v[i] A ∈定义 Ax 为在x 前加入 A 的所有点的集合(不包括 x)1. 令集合 A={a},a为 V中任意点2. 选取 V - A中的 w(A, x)最大的点 x加入集合 ... 阅读全文
posted @ 2014-07-21 17:11 chenjunjie1994 阅读(169) 评论(0) 推荐(0)
摘要:这道题唯一一个注意的地方是,如出现X\/Y=0这种关系时,X=0,Y=0。已经是可以肯定的关系了,所以可以连边X->-X。我也错了上面这地方。看来,还不够。以后要细心才好。 1 #include 2 #include 3 #include 4 #include 5 #include... 阅读全文
posted @ 2014-07-20 20:42 chenjunjie1994 阅读(187) 评论(0) 推荐(0)
摘要:还是那句话,做2SAT题时,找出矛盾点基本上可解了。这道题也是这样题意是说给出一个圆上的 n 个点(0~n-1编号),然后在指定的 m 对点之间各连一条线(可以在圆内,也可以在圆外,可以是曲线,这点真心坑爹,开始一直木有看明白),然后问你是否能使这些线都不相交当两条线在同一边会有交点时,即会有矛盾,... 阅读全文
posted @ 2014-07-20 16:45 chenjunjie1994 阅读(301) 评论(0) 推荐(0)
摘要:二分+2SAT的题写错了HIGH和LOW与MID的变换,TLE了好几次。。按HATE和LIKE关系先加边,再用距离的限制加边。dist(i,S1)+dist(S1,j)>limitXi->~XjXj->Xidist(i,S2)+dist(S2,j)>limit~Xi->Xj~Xj->Xidist(i... 阅读全文
posted @ 2014-07-20 12:18 chenjunjie1994 阅读(117) 评论(0) 推荐(0)
摘要:这题是二分+2SAT.总结一下SAT题的特征。首先,可能会存在二选一的情况,然后会给出一些矛盾。据这些矛盾加边,再用SAT判定。这一道题好像不能直接用printf("%0.3lf"),因为这个是四舍五入的,这道题好像不能四舍五入,只好选减去0.0005再按这个格式输出了。 1 #include ... 阅读全文
posted @ 2014-07-20 10:29 chenjunjie1994 阅读(197) 评论(0) 推荐(0)
摘要:逻辑错误的代码 1 //想了很久,发现自己做这道题时犯了一个大BUG。我的思路是,把一组钥匙看成一对X,-X。把 2 //门确定的关系连边。其实这样是有错的,因为边的意义是“必须”,而实际上,门确定的只是矛盾 3 //关系。不是必须是,不是门上锁其中一个选或不选就能影响到另一个。 4 ... 阅读全文
posted @ 2014-07-19 20:50 chenjunjie1994 阅读(150) 评论(0) 推荐(0)
摘要:好吧,这次估计是明白边的含义了。X\/Y= -X->Y = -Y->X 这就达成了选了-X必须选Y的目的了。对于这道题,必须要明白题目了。每一个队(三人一队)或者队长留下或者其余两名队员同时留下 : 就可以得到 X\/(Y^Z)=1 而不是互斥的。以及 X->-Y -X->Y 1 #includ... 阅读全文
posted @ 2014-07-19 14:11 chenjunjie1994 阅读(136) 评论(0) 推荐(0)
摘要:加深了对有向边意义的理解了。2-SAT 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int MAXN=2010; 9 const int ... 阅读全文
posted @ 2014-07-19 10:48 chenjunjie1994 阅读(286) 评论(0) 推荐(0)
摘要:2-SAT问题有必要写一下边的含义。所谓,选i必选j的意思是,因为每一对中只能有一个被选,则矛盾的对中若其中一被选i,另一个不可能是j',因为存在矛盾,所以必选 j. 1 #include 2 #include 3 #include 4 #include 5 6 using namespa... 阅读全文
posted @ 2014-07-19 09:24 chenjunjie1994 阅读(197) 评论(0) 推荐(0)
摘要:裸的FLOYD 求最小环。 1 #include 2 #include 3 using namespace std; 4 const int inf=100000000; 5 const int MAXN=105; 6 int n,m,minc; 7 int map[MAXN][MAXN],di... 阅读全文
posted @ 2014-07-18 16:51 chenjunjie1994 阅读(154) 评论(0) 推荐(0)
摘要:floyd求最小环。注意,该算法是用于无向图的。若为有向图,直接用原始的floyd求得点对间的距离,再枚举点对即可。(个人直觉是这样,没试过)改进的floyd求无向图最小环:可以用以下代码:POJ 1734 1 #include 2 #include 3 #include 4 #include... 阅读全文
posted @ 2014-07-18 16:33 chenjunjie1994 阅读(232) 评论(0) 推荐(0)
摘要:次小生成树。求出两点间最短路径的最大权值,再把要加入的边与之比较即可。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int MAXN=1010; 8 const int MAXM=... 阅读全文
posted @ 2014-07-18 10:16 chenjunjie1994 阅读(243) 评论(0) 推荐(0)
摘要:求一次最小成树,求一次小生成树,若相等,则不唯一。否则,唯一。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 const int MAXN=105; 8 const int inf=100000... 阅读全文
posted @ 2014-07-18 08:43 chenjunjie1994 阅读(150) 评论(0) 推荐(0)
摘要:这道题涉及次小生成树,有必要先弄明白次小生成树是怎么一回事。次小生成树,顾名知义。一个定理是,次小生成树可以由最小生成树交换一条边得到。这怎么证明,可以上网搜一下。但有必要提醒的是,交换过来的这样一条边,必须是未成使用过的(即不是最小生成树的边)。而且,交换走的边,必须是已存在的,而且是两点间最短路... 阅读全文
posted @ 2014-07-18 08:42 chenjunjie1994 阅读(171) 评论(0) 推荐(0)
摘要:这题难在破环。对于不是环的情况,只需按照一般的树形DP来做,一步一步往根递推就可以了。对于环,则枚举其中一点的两种情况,取或不取,然后再递推,就可以了。当到达某结点的下一结点为环开始的点时,退出即可。 1 #include 2 #include 3 #include 4 #include 5... 阅读全文
posted @ 2014-07-17 14:02 chenjunjie1994 阅读(277) 评论(0) 推荐(0)