随笔分类 -  ACM_POJ

POJ - 1523 SPF
摘要:题目要求割顶集,并且还要求出去掉割顶之后剩下的图连通数目。tarjan算法求出割顶后直接枚举就可以了吧。一开始想到利用iscut[u]的次数也就是点u被判定为割顶的次数求连通分量数,还有利用与结点u相连的点的bccno不同的编号来判定,都是不行的,具体原因自己想清楚比较好。以后就不会犯这样的错误了。代码:#include #include #include #include #include #include #include #include #include #include #include #include #include #define esp 1e-6#define pi aco 阅读全文

posted @ 2013-09-30 17:37 rootial 阅读(152) 评论(0) 推荐(0) 编辑

POJ - 1094 Sorting It All Out 拓扑排序
摘要:题意描述:给定前n个字母的关系描述,根据输入的m组描述(类似A#include #include #include #include #include #include #include #include #include #include #include #define esp 1e-6#define pb push_back#define mp(a, b) make_pair((a), (b))#define in freopen("in.txt", "r", stdin);#define out freopen("out.txt&quo 阅读全文

posted @ 2013-09-21 17:37 rootial 阅读(208) 评论(0) 推荐(0) 编辑

POJ - 2711 Leapin' Lizards
摘要:题目大意:在一个网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高 度减1(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为1,则蜥蜴离开后消失。以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同 一个石柱上。这个应该还算是比较难的网络流的题目了吧, 至少对我这个刚刚接触新手的人来说只这样的,AC的过程是痛苦而又备受煎熬的,最后一步步调试下来成功提交的那刹那,感觉全身满满的正能量,闲话少扯了. 阅读全文

posted @ 2013-09-06 18:57 rootial 阅读(608) 评论(0) 推荐(0) 编辑

poj crane
摘要:1 #include 2 #include 3 #include 4 #include 5 #define N (10010>1; 55 build(lson); 56 build(rson); 57 PushUp(rt); 58 } 59 60 void update(int p,int del,int l,int r,int rt) 61 { 62 if(l==r) 63 { 64 double rad=getrad(del); 65 Rotate(rt,rad); 66 return; ... 阅读全文

posted @ 2013-08-10 09:05 rootial 阅读(259) 评论(0) 推荐(0) 编辑

poj1436 Horizontally Visible Segments
摘要:这是一个区间更新的题目,先将区间放大两倍,至于为什么要放大可以这样解释,按照从左到右有4个区间,y值是[1,5],[1,2],[3,4],[1,4]如果不放大的话,查询[1,4]区间和前面区间的”可见“情况时,由于[1,2],[2,3]将2,3端点覆盖,最终得不到[1,5]和区间[1,4]”可见“的情况,而实际上两者的[2,3]区间是可以存在一条水平线将其直接相连的。接下来将要更新的区间按照x从小到大排序,然后依次查询,查询之后再更新就行。这样可以得到一个描述各个区间的相互关系的图G[N],G[i]存储的是在区间i右边的”可见“的区间,最后暴力统计一下,就可以解决问题了。 1 #includ. 阅读全文

posted @ 2013-08-08 20:16 rootial 阅读(195) 评论(0) 推荐(0) 编辑

poj 3225 Help with Intervals
摘要:最近在做线段树的专题,发现HH大牛有一个非常好的专题博客,http://www.notonlysuccess.com/index.php/segment-tree-complete/ ,所以很多博客都是看了他的解题后凭着回忆和自己的理解再写的一遍代码,所以呢别说我抄袭就行了,我只是想加深自己的回忆,在这里感谢HH大牛这么规范,简洁的代码,让我这个新手学起来找到一点感觉。言归正传,下面开始回忆>.=r时,而且操作又是将该区间全部变成0,或者全部变成1,就可以不向下更新了,直接cover[rt]=1,或者0,(根据情况),XOR[rt]应当变成0,由于整个区间情况一致。所以以后遇到rt节点对 阅读全文

posted @ 2013-08-07 19:09 rootial 阅读(222) 评论(0) 推荐(0) 编辑

POJ 2528 Mayor's posters
摘要:一个线段树关于区间更新的题目。贴海报最后求能够看见的海报的数目,按照贴的顺序依次对线段树的[l,r]区间进行更新,注意使用延迟标记。由于数据较大,所以必须先离散化处理,即取海报的区间的两端的值存储下来,然后排序映射到1,2,3,......n然后对每张海报按照区间端点对应的映射号更新即可。 1 #include 2 #include 3 #include 4 #define N 11111 5 #define M 11111111 6 #define lson l,m,rt=r) 24 { 25 color[rt]=c; 26 retu... 阅读全文

posted @ 2013-08-06 23:20 rootial 阅读(154) 评论(0) 推荐(0) 编辑

POJ 3468 A Simple Problem with Integers
摘要:这个题目涉及到线段树的成段更新,中间需要注意变量的类型是 __int64,update函数用来更新[L,R]区间的数,当L=r时,可以不向下更新,将增加值c存储在记录该节点的对应区间应该增加量的变量中,也就是进行color[rt]+=c操作,等到下次更新该区间时向下更新或者查询区间和时更新。顺便提醒一下自己:以后遇到用long long ,__int64的题目里面变量最好统一一个类型,不然很容易混淆。代码: 1 #include 2 #include 3 #define N 100010 4 #define maxn (1>1;25 build(lson);26 build(r... 阅读全文

posted @ 2013-08-06 18:29 rootial 阅读(165) 评论(0) 推荐(0) 编辑

POJ 2075 Tangled in Cables 最小生成树
摘要:简单的最小生成树,不过中间却弄了很久,究其原因,主要是第一次做生成树,很多细节不够熟练,find()函数的循环for判断条件是 pre[i]>=0,也就是遇到pre[i]==-1时停止,i就是并查集的代表元、 1 #include 2 #include 3 #include 4 #include 5 #define MAXN 1000 6 #define MAXE 1000010 7 #define LEN 25 8 #define esp 1e-9 9 10 char name[MAXN][LEN]; 11 int n,m; 12 13 typedef struct 1... 阅读全文

posted @ 2013-07-30 00:20 rootial 阅读(216) 评论(0) 推荐(0) 编辑

POJ_1220_Nmber Sequence
摘要:上网查了一下进制转换的算法,发现一个性能比较好的:m进制转换成n进制,先用例如62进制ABC转换成10进制,就是用余位c(第一个数余位数值为0)乘以原基数from,加上A表示的数值,然后得到一个数,对to(要转换的进制)取商替换字符A,注意要用相应字符替换相应位这里是s[0],然后取模作为计算下位时的余位,当计算到最后一位时把余位存起来,因为这就是要准换成的数字的第一位,最后逆序输出就行。最终直到s字符串所有位都是0,反复操作过程中可以改变遍历的下限也就是从第一个不为0的地方开始乘基数取模。代码: 1 #include 2 #include 3 #define N 10010 4 5 cha. 阅读全文

posted @ 2013-07-27 00:28 rootial 阅读(159) 评论(0) 推荐(0) 编辑

POJ_3321_APPLE_TREE
摘要:poj上面的一道求子树上苹果的题目,网上看了很多题解,下面我来回忆一下,基本来源于大神的微博,http://blog.csdn.net/zhang20072844,我来做个搬运工。先将树的n条边上节点重新标号,让每一棵子树上的节点编号构成一个连续的区间,然后利用dfs将第i个节点表示的区间下限,上限存进数组low[u],high[u]。树状数组c[i]=a[i-2^k+1]+a[i-2^k+2]+.....a[i],也就是i-2^k+1到i之间的苹果总数,每一个a[i]表示树上一个分叉,i是经过重新标号后的表示节点的值。可以通过add(low[i],1)为第i(原苹果树中标号)个节点增加一个苹 阅读全文

posted @ 2013-07-23 00:11 rootial 阅读(196) 评论(0) 推荐(0) 编辑

POJ - 3264 Balanced Lineup 线段树解RMQ
摘要:这个题目是一个典型的RMQ问题,给定一个整数序列,1~N,然后进行Q次询问,每次给定两个整数A,B,(1 2 #include 3 #define INF 1000010 4 #define max(a,b) ((a)>(b)?(a):(b)) 5 #define min(a,b) ((a)>(b)?(b):(a)) 6 7 typedef struct res 8 { 9 int mx,mi;10 } pair;11 12 typedef struct node13 {14 struct node *lc,*rc;15 int ld,rd;16 pair r... 阅读全文

posted @ 2013-07-21 20:04 rootial 阅读(237) 评论(0) 推荐(0) 编辑

导航