自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KIJamesQi的博客

大神养成中。

  • 博客(13)
  • 收藏
  • 关注

原创 lightoj1101 ASecret Mission

题意给你张图,n个点m条双向边,有正边权。然后是Q个询问<u,v>,表示u到v的路径上的最大值的最小。分析求一个MST是显然的,按照最小边权的贪心把图连通。然后就是普通的树链剖分。/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :***

2016-07-25 15:14:14 411

原创 hdu5413 CRB and Roads(topo + bitset)

给定一张有向图,对于边e<u,v>e<u,v>,如果去掉它的话,u仍然可以到达v的话,那么这条边就是多余边。 显然的一个思路是倒着做。先topo一遍,然后倒着来,这里需要用到bitset(也是赛后才知道有这种东西)const int maxn = 2e4 + 10;vector<vector<int> > G,mp;int in[maxn];int rec[maxn];int top;i

2016-07-18 23:04:54 565

原创 hdu5411 CRB and Puzzle(矩阵)

题意给一个有向图,从任意点开始走,最多走m步,求图案总数。分析令dp[i][j]表示走了j步最后到达i的方案数,则dp[i][j] = ∑dp[k][j-1].然后矩阵加速。(ps:这种矩阵加速求方案数常在字符串里面,AC自动机)。答案为∑dp[i][j],所以需要在加一维来纪录dp[i][j],j=[1,m]./*****************************************

2016-07-18 22:56:49 371

原创 hdu5410 CRB and Birthday(背包)

这题就是背包,二进制优化下就好了。 不懂二进制优化的就看看背包九讲/*****************************************Author :Crazy_AC(JamesQi)Time :2016File Name :*****************************************/// #pragma comment

2016-07-18 22:45:42 303

原创 hdu5409 CRB and Graph(bcc)

题目中critical的定义:对于边e<u,v>e<u, v>成为critical边的充要条件是删除这条边之后u、v不连通了,由于这图是无向图,所以显然是桥边。然后针对桥边构造一条边,使得删除边e<u,v>e<u,v>之后,u、v还是连通的。要求u v,u⪇v,u \ v,u \lneq v,u尽量的大,其次v尽量的小。分析: 1.e<u,v>e<u,v>不是桥边,那么就是0 0. 2.e

2016-07-18 22:38:00 516

转载 Lightoj-1330 Binary Matrix(网络流+构造)

题目链接 给定一个r*c的01矩阵,但是只给了每行和每列的和,问能不能构造一个01矩阵出来;如果能救出最小字典序的01矩阵。 首先判断所有行的和是否等于所有列的和,不等就直接impossible结束了。 然后建图就是套路了。建立一个超级原点vs=0,超级汇点vt=r+c+1; 然后是行号[1,r],列号[r+1,r+c]。w[vs][row] = row[i],w[col][vt]

2016-07-18 20:25:41 522

原创 hdu3468 Treasure Hunting(二分图)

在一个n*m的格子里面,有一些宝藏和一些聚集地; ‘.’ :表示空地,可以通过; ‘*’ :表示宝藏,可以通过; ‘#’ :表示墙,不能通过; ‘A’ ~ ‘Z’ || ‘a’ ~ ‘z’ :表示聚集地;聚集地具有等级,就是他们的字典序;从最低字典序聚集地进入,从最高字典序聚集地出。且每次只能从一个聚集地出发去偷宝藏后要到其字典序后一个聚集地去,例如:A->x1->B->x2

2016-07-08 15:53:07 440

原创 hdu3191 How Many Paths Are There(次短路计数dp)

次短路好算,这题多了个计数; dp[u][1],dis[u][1]分别表示到u最短的路径条数和最短路的长度; dp[u][2],dis[u][2]分别表示到u次短的路径条数和次短路的长度; if (dis[u][kind] + cost[u][v] < dis[v][1]) 表示可以更新最短,那么同时次短也会被原来的最短所更新掉,产生了两个新状态,都要添加到队列中。 else if (

2016-07-08 12:14:05 662

原创 hdu1827 Summer Holiday(scc应用)

因为联系是单向的,且具有传递性,所以一个边强连通分量里面最多只需要通知一个人,那么就取代价最小的那个。然后就缩成DAG图,找入度为0的点就好了。const int maxn = 1001;int head[maxn], pnt[maxn<<2], nxt[maxn<<2], ecnt;int dfn[maxn], low[maxn], depth;int indeg[maxn];int Mi

2016-07-07 14:30:19 315

原创 poj2762 Going from u to v or from v to u?

对于任意两个点x,y要存在一条x->y或者y->x的路径。显然是缩点然后判断是不是一条链。const int maxn = 1010;int n, m;vector<vector<int> > G;int dfn[maxn], low[maxn], depth;int belong[maxn], block;int in[maxn], mark[maxn];stack<int> st;

2016-07-04 14:41:39 360

原创 poj2112 Electricity(割点应用)

给定一张无向图,求删除某个点后图形成的连通快数目,求最大。 邻接表会TLE。。。 统计每个割点所连接的双连通数目,和全部有多少个连通快。const int maxn = 10010;// vector<vector<int> > G;int head[maxn], pnt[maxn<<2], nxt[maxn<<2], ecnt;int dfn[maxn], low[maxn], de

2016-07-03 11:22:49 349

原创 poj3189 Steady Cow Assignment(枚举+多重匹配)

有n头牛和b个棚,每个棚有容量上限。每头牛对每个棚有个喜欢程度,现在给牛分配住棚且棚中牛的数目不能超过该棚的上限。 先输入n,b。然后n行,每行有b个数字x[j],表示该头牛对棚子x[j]的喜欢程度是j。现在求一种分配方法使得任意两头牛对所在棚的满意程度的差值最小,输出最小差值。方法:枚举棚子满意度的上下限[low, high],然后做多重二分图匹配。const int maxn = 1010

2016-07-02 22:57:32 400

原创 poj2594(可相交最小路径覆盖)

直接先传递闭包,等同于扩边,最后就是一般最小路径覆盖的做法了。const int maxn = 501;int g[maxn][maxn];int linker[maxn];bool vis[maxn];int n, m;bool dfs(int u) { for (int v = 1;v <= n;++v) { if (g[u][v] && !vis[v]) {

2016-07-01 23:57:57 379

空空如也

空空如也

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

TA关注的人

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