自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

九野的博客

新窝:cygmasot.com

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj 2955 区间dp 括号匹配

题意:求一个合法括号,问最长长度  思路:暴力dpdp[i][j] 表示 区间[i,j] 上的最优解#include#include#includeusing namespace std;inline int Max(int a,int b){return a>b?a:b;}#define N 105char s[N];int dp[N][N];

2013-11-28 20:55:10 1565

原创 codeforces 366D 求1-n点最大区间长度 枚举区间左端+二分区间右端dfs判可行

题意:给定n个点m条边的无向图下面m条边 每条边都有一个区间,只有在该区间内的点可以通过 问从1-n点 最长 的一个区间  长度 枚举左端,二分右端,dfs判断是否可行 #include#include#include#include#include#include#include#includeusing namespace std

2013-11-25 19:32:13 2055 2

原创 POJ 1129 四色定理+spfa

题意:最多有26个字母n行表示有n个字母下面n行给出 该字母和哪些字母相邻问:至少要几种颜色染色后相邻字母不同色 四色定理至多4种 暴力枚举#include#include#include#include#include#include#includeusing namespace std;#define N 30struct E

2013-11-24 18:43:14 1433

原创 POJ 1741 点分治

题意:给定n个点的树, K值下面n-1条边问 两点之间距离 采用点分治,无根树转有根树时 根为树的重心(可以把树高度降低,防止树退化成链)思路:对于一棵 以u为根的树以下我们成(a,b)为合法点对(即dist(a,b) (a, b) 之间路径是唯一确定的。 将点对分2类:1、两点间路径经过 u 点2、两点间路径不经过u点 = 两点都在u的同一子树

2013-11-22 22:59:46 1960

原创 HDU 4118 树型dp 求树中每个点移位所需总 最小路径和

题意:T个测试案例n个点下面为一棵带权树问:每个点上站一个人,每个人都走到另一个点上,需要的 总路径和最小   输出这样的路径和思路:(百度借的)ans = Σ (每条路长 l )*(经过这条路的最大次数 f )f = 2 * 这条边左边节点数和右边节点数最小值k. (这样左边的每一个点一定能够对应右边的某个点)这个k可以dfs 求得. #pragma co

2013-11-21 20:27:12 1751

原创 SGU 134 树的重心

题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=134134. Centroidtime limit per test: 0.5 sec. memory limit per test: 4096 KBYou are given an undirected connected graph, wi

2013-11-20 22:35:10 1835 1

原创 POJ 1655 树的重心

gx巨巨的题意:此题要求我们求一棵树的重心。给定一棵N个结点的树,求该树的所有重心。重心的定义如下:删掉某结点i后,若剩余k个连通分量,那么定义d(i)为这些连通分量中结点数的最大值。所谓重心,就是使得d(i)最小的结点i。算法分析:建图;树的基本操作:以结点1为根,计算出每个结点所在的子树的结点数。枚举每一个结点,若将其删掉,那么考虑剩余的所有连通分量。1

2013-11-20 22:19:37 1984

原创 HDU 3635 并查集+路径压缩+记录每个点移动次数

题意:给定n个点 oper个操作每个点有1个龙珠下面2种操作:T u v 把u点所有龙珠搬到vQ u  问u点当前所在城市 u点所在城市有几个龙珠 u点被移动几次 思路:并查集可以求出 u 点所在城市,记录每个点的 son(子节点数)可以求出 某城市的龙珠数量用step 记录每个点被移动了几次 #include#includeinline int

2013-11-19 22:10:06 1678

原创 SGU 143 树形dp 求联通块的最大权

题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=143题意:给定n个点下面每个点权值(下标从1开始)无向树 问一个联通块的最大权值是多少(必须有点)#include#includeinline int Max(int a,int b){return a>b?a:b;}#define N 16010

2013-11-19 19:09:00 2641 2

原创 HDU 4787 在线AC自动机 分块(模式串和母串交叉给出,多次求getFail)

题意:给定T个测试数据n个操作+ 插入单词? 询问母串中有多少个子串 在上面出现过( 子串被加密,即←移动L位 (L为上次询问的答案) ) 思路:因为模式串和母串交叉给出,正常来说应该是,每次询问前都要getFail,这样显然会超时)所以我们用一个小型ac自动机 buf , 每次插入都插入到 buf 中,并重建一下buf 的getFail若buf的节点数 >

2013-11-19 16:27:04 4946 6

原创 POJ 1961 KMP 求前缀循环节 位置及次数

#include#include#define N 1000100char T[N];int f[N], len;void getFail(){ f[0] = f[1] = 0; for(int i = 1; i < len; i++) { int j = f[i]; while(j && T[i]!=T[j]) j = f[j]; f[i+1]

2013-11-19 13:15:20 1767

原创 HDU 4786 生成树 并查集+极大极小值 黑白边 确定选择白边的数量

题意:给定一个无向图n 个点 m条无向边u v valval == 1 表示边(u, v) 为白边 问能否找到n个点的生成树, 使得白边数为斐波那契数思路:并查集求图是否连通( 是否存在生成树) 求出 最多白边树 的 白边数量求出 最少白边树 的 白边数量 若[最少, 最多] 区间内存在斐波那契数 ,则满足条件(也就是说,白边的数量是连续有解

2013-11-18 21:01:42 2122

原创 HDU 4267 线段树 离散点区间更新, 自叶子节点至根单点查询

题意:n个数字下面n个数字表示数列2个操作1 [u, v]  k  add[u,v ]区间 (u点要计算)每隔k个位置,该数字+add 2 pos询问 pos下标的值(下标从1开始)思路:因为k很小, 可以直接存 k[11] 注意查询时, 先找到 pos 所在的 叶子节点再向上 添加 对应k位置的值    #include#i

2013-11-18 20:48:37 1617

原创 HDU 4276 树形dp + 背包

题意:n 个点 maxtime的时间下面给定一棵树及走过该边需要的时间最后一行给定 每个点的宝藏价值 问在maxtime时间内能否 从 1->n ,若能输出最多能获得的宝藏价值 思路:对于树,除了1->n的路径, 若去其他点则要走回头路所以我们可以先走到终点, 最后时间 - 1-n路径花费的时间, 再把该路径的边花费改为0这样就是 剩下时间 ,走非路径上点

2013-11-18 13:25:22 2281

原创 强连通分量及缩点tarjan算法解析

强连通分量:简言之 就是找环(每条边只走一次,两两可达)孤立的一个点也是一个连通分量  使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点) 定义:int Time, DFN[N], Low[N];DFN[i]表示 遍历到 i 点时是第几次dfsLow[u] 表示 以u点为父节点的 子树 能连接到 [栈中] 最上端的点 int

2013-11-16 22:49:41 723715 32

原创 HDU 3836 tarjan求强连通分量

#include#include#include#include#include#include#include#include#include#include#include#define N 20200#define inf 10000000using namespace std;inline int Min(int a,int b){r

2013-11-16 09:36:05 2898

原创 HDU 1827 强连通缩点

#include#include#include#include#include#include#include#include#include#include#include#define N 1010#define inf 10000000using namespace std;inline int Min(int a,int b){re

2013-11-16 09:07:38 2527

原创 HDU 3078 LCA转RMQ

题意:n个点 m个询问下面n个数字表示点权值n-1行给定一棵树m个询问 k u vk为0时把u点权值改为v或者问 u-v的路径上 第k大的数  思路:LCA转RMQ求出 LCA(u,v) ; 登山坡式找到路径上所有点并记录其权值排序输出k大的数#include#include#include#include#include#inc

2013-11-14 18:57:47 1669

原创 POJ 3417 删边求不连通方法 LCA转RMQ+树型dp

题意:n个点m条无向边下面n-1行给定原树m行给定新边 问删一条老边和新边使得图不连通的方法 首先,对于一条新边(u,v),加入后 成环 u, v, LCA(u,v)所以删除新边(a,b)以及这个环上的没有被其他环覆盖的边    即可分成两部分。所以问题转化为求每条边被环覆盖的次数    设dp[x]表示x所在的父边被覆盖的次数    引进一条新边(a,

2013-11-12 22:09:05 2483

原创 LCA转RMQ 模版及解析 + LCA倍增法模版

九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/15490519 LCA:  最近公共祖先 则 LCA(2,3) = 2 ; LCA(3,4) = 5; LCA(1,2) = 5; LCA(1,5) = 5; RMQ: 区间最值问题, 给定一组数,在O(logn) 的复杂度内回答区间的最值 (一般采用线段树

2013-11-11 23:21:15 5517

原创 HDU 2874 LCA转RMQ裸题

题意: 给定无环无向 不一定连通的图,求任意点间最短距离 n个点 m条无向边 que个询问下面u v dis 为边及边长 下面que行u v表示u v点最近距离 思路:LCA转RMQ ,用并查集判断点是否连通 #include #include #include#include#define N 10010using names

2013-11-11 21:41:00 2008

原创 RMQ转LCA

数组里的最小值做根左边的数在左子树右边的数在右子树递归建成整棵树就从rmq转成lca了左右的数 是数组中 相对父节点 下标 比如对数组 7 5 8 1 10建出的树是这样的

2013-11-11 19:00:06 1741

原创 FZU 2138 && FOJ11月赛G题 容斥

思路:根据容斥,另所有不拿奖的人都出2题#include#include#includeusing namespace std;char s[200];int a[10];int main(){int i,j,k,m,n,T;scanf("%d",&T);while(T--){int all;scanf("%d",&all);in

2013-11-10 20:28:01 2002 6

原创 FZU 2135 && FOJ11月赛E题

借个代码:#include#include#include#includeusing namespace std;const int maxn=100100;const int inf=1000000000;struct node{ int l,r;}pp[maxn];int a[maxn],ans[maxn];int main()

2013-11-10 20:26:04 1559

原创 FZU 2135 && FOJ11月赛D题 模拟题

模拟题:#include#include#includeusing namespace std;char s[200];int main(){int i,j,k,m,n,T;scanf("%d",&T);while(T--){scanf("%d",&n);scanf("%s",s);sort(s,s+n);if(s[0]=='0'){

2013-11-10 20:23:19 1463

原创 FZU 2132 && FOJ11月赛A题 概率

#include#include#include#includeusing namespace std;double cal(int n,int k,double p){double sum=pow(p,k)*pow(1-p,n-k);for(int i=1;i<=k;i++)sum=sum*(n+1-i)/i;return sum;}int main(

2013-11-10 20:14:48 1449

原创 FZU 2134 && FOJ11月赛C题 树状数组

中文题意不再赘述 思路:一边维护 1-n的和 一边累加 1- 输入的数u 和树状数组裸题 #include#include#includeusing namespace std;inline int Max(int a,int b){return a>b?a:b;}inline int Min(int a,int b){return a<b?a:b;}

2013-11-10 20:12:02 1586

原创 RMQ 的 ST算法模版

转自gx巨巨http://blog.csdn.net/u012350533/article/details/14645881 /*ST算法:基于动态规划求区间最值的算法。分为预处理和查询两部分预处理:定义 F[i][j] 为从 i开始到 i+2^j-1 区间内的最值 , 我们可以讲这段2^j的区间分成两部分长度都为2^(j-1)的相同区间区间1 为 i..

2013-11-10 10:32:24 2889 1

原创 HDU 4772 模拟题

题意:给定n*n的2个矩阵问 用第二个矩阵通过翻转变换 使得与第一个矩阵匹配数字最多 最多的匹配数是多少  #include#includeinline int Max(int a,int b){return a>b?a:b;}inline int Min(int a,int b){return a>b?a:b;}#define N 50int

2013-11-09 18:11:17 1811

原创 HDU 4771 BFS + 状压

题意:给定n*m的地图#为墙 @为起点下面K个坐标 问:遍历K个给定坐标,需要的最小步数 思路:因为K 最大只有4 状压 当前是否走过某点用二进制 的 i 位 0、1表示 第i个点是否走过 与hdu 1429题相似 http://www.cnblogs.com/xianxingwuguan/p/3301318.html #include

2013-11-09 18:06:43 3701 5

原创 HDU 4770 模拟题

题意:给定n*m的地图问用L型能否覆盖所有 . 且不允许覆盖到*L型形如:***可以允许一个L 旋转 思路:二进制枚举所有状态因为只有15个.  #include#include#includeusing namespace std;inline int Max(int a,int b){return a>b?a:b;}i

2013-11-09 17:59:26 2213

原创 LightOJ 1427 求每个模式串在母串中出现的次数

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27301题意:t个测试数据n个模式串母串n个模式串 问:求每个模式串在母串中出现的次数 思路:对于每个模式串,记录该串的单词结尾在字典树中的节点标号在母串匹配字典树时,沿着失配边走过的节点都是母串的子串, 因此在失配过程

2013-11-08 20:56:21 2100

原创 HDU 4115 2-sat 石头剪刀布 拆点+约束

题意:2个人玩石头剪刀布A和Bn轮 m个约束条件(对A的约束)下面n个数字表示B的出发 (1为石头 2为布 3为剪刀)下面m行表示约束条件u v papa  papa = 1 表示 u v轮 A必须出一样 =0 表示u v轮必须出不一样 问A能否全胜 把一轮拆成: 出0 2 4的方法和 不出 1 3 5的方法#include#include#

2013-11-05 23:10:56 2066 1

原创 HDU 4421 2-sat

模版题题意:求是否存在这样的数组a使得b数组对应等式成立 问:给定b数组,求是否有这样的a数组思路:对于每一个二进制位:是否存在一个二进制位使得该式成立然后2-sat 31次即可 #include#include#include#include#include#define ll intusing namespace st

2013-11-05 20:56:15 1701 2

原创 最小割转最大流

http://blog.csdn.net/vsooda/article/details/7397449未AC

2013-11-05 19:34:07 1404

原创 HDU 1814 2-sat 求字典序最小解

模版题,按给定边直接建图若有解输出最小字典序解 注意此模版求的就是最小字典序解#include#include#include#include#include#define ll double#define eps 1e-5using namespace std;inline ll Max(ll a,ll b){return a>b?a:

2013-11-05 17:17:56 2138

原创 2-sat模版

#define N 105*2#define M 40000+5//注意n是拆点后的大小 即 n <<= 1 N为点数(注意要翻倍) M为边数struct Edge{ int to, nex;}edge[M];int head[N], edgenum;void addedge(int u, int v){ Edge E = {v, head[u]}; edg

2013-11-05 14:59:14 2441

原创 HDU 3622 2-sat 求引爆所有炮弹的最大半径

打个手熟#include#include#include#include#include#define N 105*2#define M 40000+5#define ll double#define eps 1e-5using namespace std;inline ll Max(ll a,ll b){return a>b?a:b;}

2013-11-04 23:05:04 1605

原创 HDU 4292 网络流 Food

题意:n 个人 f 种食物 d 种饮料f 个数字表示每种食物的个数d个数字表示每种饮料的个数n行f列i行j列表示 第i个人是否喜欢 第j 种食物  n行d列同上 当一个人同时有吃有喝就被满足,问最多能满足多少人 思路:设0为源点[1, f ] 表示食物 (若i行j列是 Y 则建边  addedge(i, f+j , 1) )把人拆点拆成

2013-11-02 19:39:45 1350

原创 HDU 4289 最小割=最大流 求去掉最少点权值使得 起末点不连通

题意:n个点 m条边下面起点 和终点n行表示点权值m条无向边 问:去掉一些点需要的花费为该点的点权值,问要最少多少花费可以使得起点 和 终点 不连通 网络流裸题,按题目直接可以建图; #include #include #include #include using namespace std;#define ll int#d

2013-11-02 19:31:03 1755

九野的模版3.15.10.pdf

http://blog.csdn.net/acmmmm

2015-12-19

空空如也

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

TA关注的人

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