- 博客(9)
- 收藏
- 关注
原创 POJ 3322 Bloxorz I 三维BFS
本来只是打算为今晚的CF热热手的,结果选了道坑爹的BFS。写了350多行的代码还WA了一次。。。。。对于普通的方格有五种情况,如下图所示,对于方格5来说,与1,与2,与3,与4组成的矩形为四种不同的情况,还有一种为竖直站立的情况。对于Easily Broken Grid只存在前四种情况。很显然第三维标记这几种情况即可。思路还算简单,代码写的比较麻烦了。。。。话说今年大年三十哇,
2014-01-30 18:05:18 1862
原创 CodeForces 385C Bear and Prime Numbers 线段树+素数筛
题意:首先给你N个数。然后有M次询问,每次询问给出一段区间,首先找出这段区间内的所有素数,然后计算对于这段区间内第 i 的素数Pi,这N个数中有多少个数能被Pi整除,设有Si个数能被Pi整除,然后输出Si的和。思路:因为这个N个数的范围为 [ 2 , 1000W]memset(mark,0,sizeof(mark)); for(i = 2;i <= 10000000; ++i)
2014-01-25 11:43:16 1292
原创 POJ 3694 Network
求桥,缩点,LCA,还有重边,之后还要加Q条边,每次加完后询问一次桥的个数。。。个人感觉算是比较麻烦的题了。。。给出N个点,M条边,保证所有点连通,数据中有重边,之后加入Q条边,每次加完后,输出一个整数代表图中剩余的桥的数量。首先找出所有的桥,将桥删除,然后将双连通分量进行缩点,用桥将这些点连接起来,然后用LCA处理。对于每条新加入的边,首先判断其两端点被缩进了哪个点,设其分别被缩进了
2014-01-20 13:30:04 820
原创 POJ 3352 Road Construction 边的双连通分量 + 缩点
题意:最少添加几条边使得整个图变为边双联通分量。求出途中所有的桥,删除之。将剩下的边连通分量缩成一个点(此处可用并查集实现)。然后用桥将这些点连通,设图中度为一的点的个数为n,则(n+1)>>1,即为答案。边连通度:是一个原本连通的子图变成不连通所需要删除的最少的边数。桥:删除一条边使得原本连通的图变的不连通,则称此边为桥。边双连通分量:边连通分量大于等于二的子图称为边
2014-01-19 15:22:48 1027
原创 CodeForces 382D Ksenia and Pawns __DFS
题意:给出一个棋盘和两个棋子,'#'可以同时放两个棋子,其他的最多只能放一个。开始时在棋盘上放两个棋子,每一回合两个棋子必须移动且只能按照指示方向移动一个格子。一个棋子移动一步就获得一分,问最后能获得多少分。思路:对于每一个格子,只能走向一个格子,但是可能能从多个格子走过来。则逆向建图就再合适不过了。因为在没有环的情况下,逆向建图每个节点的入度 显然此时可以得到一个森林,也可能只有一棵树。
2014-01-19 09:28:20 1554
原创 POJ 2051 Argus 堆排序 贴个模板
#include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000");#define LL long long intusing namespace std;const int MAXN = 1010;struct N{
2014-01-17 19:52:07 834
原创 CodeForces_GoodBye 2013_F New Year Tree LCA问题
题意:在一棵树上每次在一个节点上增加两个子节点,问每次更新后树上的最长的一条链是多少。设最长链的长度为len,链的两个端点为e1,e2,每次增加点的编号为a1,a2。开始时,显然有len = 2,且可以有 e1 = 2,e2 = 3。每次通过判断a1与e1,e2之间的较长的一段是否大于len,若不大于则无需更新。若大于则更新相应节点,若较长一段为a1与e1,则令e2 = a1,否
2014-01-16 20:23:10 914
原创 浅谈LCA的几种算法
LCA,Lowest Common Ancestor,最近的公共祖先。在一棵树中对于两个节点u , v找出节点T,使得T同时为u,v的祖先。显然这样的T点肯定存在且有可能有多个,其中深度最大的那个点肯定为即为u,v两点的LCA。关于LCA的解法有很多种,暴力枚举,事先需要知道所有询问的离线的tarjan算法和基于RMQ的在线算法,下面说一下自己对这种几种算法的理解。 ⒈最容易想到的暴力搜索
2014-01-10 10:37:44 9187
原创 POJ 3264 Balanced Lineup 最基本的RMQ
其实这个题早就过了,只是当时为了偷懒拿线段树做的。当时肤浅的认为RMQ问题线段树都能胜任,现在才发现毕竟土洋。不过线段树做多了,RMQ就显得很容易理解了。其实RMQ很多算法,不过最通用的应属ST算法,总体思想就是一个很简单的dp。以求区间最大值为例,数组dp[ i ][ j ]记录的是区间[ i , i + (1也就是说是从第 i 个元素开始,连续的 (1不难发
2014-01-03 20:27:31 842
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人