===图论===
yhf_2015
无。。。
展开
-
【bzoj 1015】[JSOI2008]星球大战starwar
注意:开始的信息可以用邻接链表存虚边,在使用vis数组的时候,要注意要用的值是真是假。 #include using namespace std; const int maxn = 400010; struct node{ int x, y; }; bool cmp(node a, node b){ if(a.x == b.x) return a.y < b.y;原创 2016-08-26 22:54:46 · 400 阅读 · 0 评论 -
【bzoj 3732】Network
注意:此题为货车运输的变式,要先更新最值,在更新节点,不然用更新以后的节点再更新最值就不对了。 先求最小生成树,再倍增求lca。 #include using namespace std; const int maxn = 30010; const int Maxn = 15010; struct edge{ int from, to, dis; }; int _first[Ma原创 2016-08-26 23:09:37 · 417 阅读 · 0 评论 -
【洛谷 1186】 玛丽卡
又是开错了数组……要记住。原创 2016-09-19 22:51:15 · 412 阅读 · 0 评论 -
【洛谷 2341】 [HAOI2006]受欢迎的牛
有空多打几遍,多熟悉一下。 #include using namespace std; const int maxn = 10010; const int maxm = 50010; int n, m; int _first[maxn], _next[maxm], _to[maxm], _cnt; int out[maxn], num[maxm], belong[maxm], _num; in原创 2016-09-20 07:28:47 · 278 阅读 · 0 评论 -
【洛谷 1196】银河英雄传说
简化题意: 有 30000 个元素,初始时每个元素以单独的队列形式存在,支持一下两种操作: 1.动态合并两条队列,将 x 元素所在队列首合并在 y 元素所在队列尾; 2.查询 x 与 y 是否在同一条队列中,若是,查询 x 与 y 间隔元素数量。 共 500,000 次操作。题解: 在父亲节点维护的时候记录每个并查集端点的元素大小,顺便维护一下就好了。#include <bits/stdc原创 2016-10-12 20:02:49 · 546 阅读 · 0 评论 -
【poj 1330】 Nearest Common Ancestors
题意:首先输入一个t,表示数据组数,下面的每组数据的第一行,为n,表示有n个点,接下来是n-1条a b关系,表示a是b的父亲,接下来1行两个数,表示求这两个数的最近公共祖先。思路:先找到树的根,再求两点的lca就好了。代码:#include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int原创 2016-10-18 12:42:09 · 209 阅读 · 0 评论 -
【洛谷 1339】【USACO 09 OCT】热浪 Heat Wave
题意德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品。Farmer John此时以先天下之忧而忧,后天下之乐而乐的精神,身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。 FJ已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点先一共经过T (1 <= T原创 2016-10-24 08:12:04 · 288 阅读 · 0 评论 -
【洛谷 3128】最大流
题目来源:洛谷 3128思路:首先做lca,找到lca以后进行点的标记,开始的位置和结束的位置+1,lca -1,lca的父节点-1,然后做树上差分,顺便记录答案即可。代码:#include <bits/stdc++.h> #define pii pair<int,int> #define mp(a,b) make_pair(a,b) #define fi first #define se seco原创 2016-12-10 17:14:08 · 295 阅读 · 0 评论 -
【BZOJ 1003】[ZJOI2006]物流运输
思路:首先预处理出cost数组,cost[i][j]表示从第i天到第j天满足这些天所有的条件能跑出来的最短路,如果没有路径,值为inf。 然后用O(n2)O(n^2)的动态规划求出答案。 状态转移方程:f[i]=min{f[j]+cost[j+1][i]∗(i−j)+k}f[i]=min\{f[j]+cost[j+1][i]*(i-j)+k\} 因为一开始不需要转换路径,所以答案为f[n]−k原创 2016-12-29 12:57:53 · 252 阅读 · 0 评论