- 博客(448)
- 收藏
- 关注
原创 Go语言-interface
1 接口是一个或者多个方法签名的集合2 只要某种类型拥有给接口的所有方法前面,即算实现该接口,无需显示申明实现哪个接口3 接口只有方法申明,没有实现,没有数据字段4 接口可以匿名嵌入其他接口,或嵌入到接口中5 将对象赋值给接口时,会发生拷贝,而接口内部存储的是指向这个复制品的指针,既无法修改复制品的状态,也无法获取指针6 只有当接口存储的类型和对象都为nil时,接口才等于nil
2017-10-11 21:42:37
405
原创 同步,异步,阻塞,非阻塞 和 几种网络模型
1. 同步,异步,阻塞,非阻塞同步和异步同步异步关注的是消息通讯机制,在我的理解里,同步和异步是在操作系统层面的概念。异步通常通过系统调用来返回结果。 - 同步: 就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。 - 异步: 异步的概念和同步相对。调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻
2017-04-16 15:58:22
778
原创 ZOJ 3231 - Apple Transportation(上下界费用流)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3231题意:n个点 有点权和边权的树,要使得树上的点权尽量平均,求出最小花费。思路:最终的状态是 每个点的点权是 avg 或者avg+1,则每个点都有一个容量下界avg,每一个连一条容量为avg的边到汇点t。而容量上界为avg+1,则每一个点还要连一
2015-10-13 14:32:31
610
原创 ZOJ 3232 - It's not Floyd Algorithm(强连通缩点+Floyd)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3232题意:n*n 的矩阵表示图的连通性,求出至少需要多少条边才能实现连通性。思路:根据矩阵建图,Cij = 1则建边(i->j)。题目转化为在原有图的基础上删边,使得连通性相同。对于一个强连通分量中,n个点则需要n条边,而对于一个树来讲,n个点
2015-10-13 13:50:56
500
原创 UVAlive 7037 - The Problem Needs 3D Arrays(网络流‘最大密度子图)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=94761#problem/C题意:序列T,r(S)表示子序列S(不连续)中的逆序数对,L(S) 表示S 的长度,求出 r(S) / L(S) 的最大值思路:r(S) 可以看成边,L(S) 可以看成点,使得 E / V 最大,则题目转化为 求解 最大密度子图。
2015-10-11 21:09:05
771
原创 HDU 4409 - Family Name List(模拟树+lca)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4409思路:模拟输出树,暴力求解LCAAC.#include #include #include #include #include #include #include using namespace std;const int maxn = 30005;char s
2015-10-10 18:09:32
451
原创 HDU 4408 - Minimum Spanning Tree(最小生成树计数)
有边权的最小生成树计数 模板#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include using namespace std;typedef long long ll;const int N = 105; //点的个数const
2015-10-10 14:43:56
615
原创 UVALive 5094 - THE MATRIX PROBLEM(差分约束)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=94075#problem/G题意:给出一个矩阵,和范围【L,R】,求出是否存在a序列和b序列,使得 Cij * ai / bj 在L和R范围内。思路:可以得到式子 C * a/b >= L , C * a/b
2015-10-08 15:36:15
389
原创 UVALive 5874 - Social Holidaying(一般图匹配带花树)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93936#problem/E题意:给出n个家庭的人数,m个房子的容纳人数,两个家庭的总人数等于房子的容纳人数,则可以入住,求出可以入住的最多的家庭对。思路:一般图求最大匹配不可以用 二分图,要用 一般图匹配带花树。具体解释:http://wenku.baidu
2015-10-06 21:46:17
529
原创 ZOJ 3760 - Treasure Hunting(网络流‘最小割’最大点权独立集)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3760题意:有n个点,每个点的价值是x&y,求出一个集合,使得集合中任意两点之间的 gcd(xi^yi^xj^yj, p)> 1。求出集合的最大点权。思路:要使得别人与自己的公约数不为1.则p必定为偶数。两个点的异或值都为偶数则异或为偶数,两个点的异
2015-10-05 22:37:07
472
原创 UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是
2015-10-04 22:19:17
708
原创 **HDU 4276 - The Ghost Blows Light(树形DP)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4276题意:给出一棵树,从1走到n,总时间为T,每走一条边需要花费一定时间,每个结点有一定价值,问在指定时间内回到T的能获取的最大价值。思路:先跑一次dfs,得到从1~n必走的路径,将这些路径值置0.再一次dfs跑树形DP+分组背包,dp[i][j]: 表示到i点花费j时间得到的最大
2015-10-04 22:02:11
386
原创 关于树:直径,重心
树的重心:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心 #include #include #include using namespace std; const int N = 20005; const int INF = 1<<30; int
2015-10-01 21:05:39
667
原创 HDU 3721 - Building Roads(DFS`树的直径)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3721题意:n个点的有边权的树,移动一条边(即改变边的两个端点),使得树的直径最短。思路:移动的边在原树的直径上,移动后原树变成两棵子树,求出两棵子树的直径。枚举子树直径上的点,决定移动边的两个端点,求出最小的距离。AC.#include #include #includ
2015-10-01 19:55:10
472
原创 HDU 4123 - Bob’s Race(树形DP + RMQ)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4123题意:给出一颗n个点的有边权的树,Q个询问,给出m,求出连续的最长区间,每个点能到达的最长路径,最大值与最小值得差小于等于m。思路:两个dfs,得到每个点可以到达的最大路径。O(n)。RMQ 求区间最小值最大值。O(nlogn), 询问O(1).AC.#includ
2015-10-01 10:01:22
476
原创 POJ 3237 - Tree(树链剖分)
题目:http://poj.org/problem?id=3237题意:给出有边权的一棵树,三个操作:1.修改边权。2.将u->v 的路径边权取反。3.输出u->v 路径的最大边权。AC.#include #include #include #include #include using namespace std;const int inf = 0x
2015-09-30 15:17:32
448
原创 HDU 3830 - Checkers(二分LCA)****
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3830题意:给出直线上三个点的初始位置,和最终位置,每次可以选择一个点经过另一个点等间隔跳跃,但是不能经过两个点。求出是否能从初始状态到达最终状态。能的话输出最小步数。思路:将一个状态作为一个点,建二叉树。其根为状态能到达的三点等距的状态。若题目给出的初始位置和最终位置都能到达同一个
2015-09-30 15:07:34
721
原创 HDU 3966 - Aragorn's Story(树链剖分)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3966题意:n个点的树,每个点都有权值。q个询问:Q u : 输出u点的权值。I u v d:将u到v的路径上点的权值增加d。D u v d:将u到v的路径上的点的权值减少d。思路:树链剖分。修改点权。相关论文:http://blog.sina.com.cn/s/blog_7a1
2015-09-24 20:58:07
370
原创 ***HDU 4429 - Split the Rectangle(LCA'暴力求解)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4429题意:一个大矩阵中有m条水平或竖直直线,将其分成m+1个小矩阵。有q个询问,输入两个点,要使得两个点在同一个矩阵,可以拿掉一些边,但是拿掉边之后要使得两个矩阵能合成一个矩阵。求出最后剩下的最多的矩阵数量。思路:将图转化成树。大矩阵为根,一条直线分割矩阵,一个矩阵变成根的左儿子,
2015-09-17 23:37:13
723
原创 *HDU 4427 - Math Magic(dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4427题意:k个数的和为n,最小公倍数为m,求出k个数的序列有多少种(顺序不同算不同)思路:dp【i】【j】【k】:前k个数和为j lcm为k的方案数。第一维使用滚动数组才不会爆内存,先将1000以内两数的lcm预处理,记录m的约数。m的约数与约数的lcm也是m的约数。AC.
2015-09-17 18:19:33
474
原创 HDU 4424 - Conquer a New Region(最大生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4424题意:n个点的树,i点到j点的路径最大价值是i到j点的路的权值最小值,以一个点为源点,使得从这个点到其他点的总价值最大。思路:将边权值按照从大到小排序,枚举每一条边,此时的边为当前所有边的最小边,判断将u集合合并到v集合还是 v集合合并到u集合,使用并查集实现。最后集合的祖先就是源
2015-09-17 16:06:34
514
原创 HDU 4421 - Bit Magic(2-SAT)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4421题意:给出一个矩阵,询问是否存在一个a序列,使得符合矩阵中,b【i%2=1】【j%2=1】= a[i]|b[j] ; b【i%2=0】【j%2=0】= a[i] & a[j];其他b【i】【j】 = a[i]^b[j].思路:将数的每个二进制位分别建图,跑2-SAT.AC.
2015-09-17 15:21:43
420
原创 HDU 4784 - Dinner Coming Soon(BFS)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4784题意:n个点m条边,从1出发,有钱数R,在T时间内到达终点n。且除了起点和终点起点有k个维度。起点和终点在0维上。途中可以买卖盐,以使得钱数尽可能地多。途中的点有多个维度,只能从k维跳到(k+1)维,花费时间为1,在各维度上进行买卖不需要时间。每条有向边有时间和花费。求出到达终
2015-09-15 21:18:12
503
原创 POJ 1776 - Task Sequences(哈密顿图)
题目:http://poj.org/problem?id=1776题意:给出一个n*n的矩阵,若第i个任务做完之后可以做第j个任务,则矩阵的第i行第j列为1,否则为0。机器完成一项任务之后会自动转到下一个任务,否则机器会自动停止。求出最少的启动次数,输出每次启动次数完成的任务个数和任务序列。思路:题目给出一个竞赛图(即任意两点之间有且仅有一条有向边的有向图),则竞赛图一定存
2015-09-12 18:24:38
933
原创 UVA216 - Getting in Line(哈密顿图)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=90847#problem/C思路:经过每条边一次。递归回溯。AC.#include #include #include #include #include #include using namespace std;const int inf =
2015-09-09 20:29:06
574
原创 POJ 2337 - Catenyms(欧拉回路)
题目:http://poj.org/problem?id=2337题意:将所有的单词首尾相连链接起来,且每个单词只可使用一次,问是否存在方案,若存在,输出字典序最小的方案。思路:使用全部单词且每个单词仅使用一次,可以联系到有向图欧拉路径。每个单词对应一条有向边,u为单词首字母对应的数字,v为单词尾字母对应的数字,建一条u指向v的边。判断有向图是否存在欧拉路径:1)并
2015-09-09 14:35:14
417
原创 POJ 1041 - John's trip(欧拉回路)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=90847#problem/A题意:求无向图的欧拉回路是否存在,若存在则输出字典序最小的路径。思路:先判断是否存在欧拉回路。对于无向图,所有的数的度都为偶数则存在。dfs 枚举边,得到答案。AC.#include #include #includ
2015-09-08 12:56:06
449
原创 ***HDU 3237 - Help Bubu(状压DP)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3237题意:给出n本书的高度(25现在你可以移动至多k本书,求出最小的杂乱度。思路:书的高度只有 0~7,所以可以使用状压来表示书的高度的状态。如果前i本书中存在高度为h的书,那么s的第h位表示为1.dp[i][j][s][h]: 表示前i本书取走j本,书的高度状态为s,且最
2015-09-06 18:45:58
570
原创 HDU 3234 - Exclusive-OR(并查集)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3234题意:n个数,R条指令。I u w : 表示第u个数是w。I u v w: 表示第u和v 个数的异或值是 w。Q k (k个数的下标):输出这k的数异或值。思路:并查集中,设fa[u]为u的祖先,val[u]为u与根异或的值。若 fa[u] = fu, fa[v]
2015-09-06 13:39:55
483
原创 HDU 4940 - Destroy Transportation system(网络流)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4940题意:给出一个强连通图,每条边有两个权值,破坏边的权值和修建边的权值。询问是否存在一个集合S及其补集T,使得从S到T破换的边的权值和X,从T到S破坏的边和修建的边的权值和Y,满足X 思路:有上下界的网络流。如果所有流出的流量等于流回的流量,那么便满足 X 建图:1:
2015-09-05 16:52:24
498
原创 HDU 4406 - GPA(网络流‘费用流)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4406题意:复习m门课,有n天的复习时间,每一天只能复习k个课时。给出m门课的学分和基础分。n*m的矩阵:1表示i天可以复习课程j 。花一个课时复习该课程则可以增加一分。在使得没有课程不及格的情况下,求出最高的GPA(给出相关公式)。思路:每科的绩点f(x, w) = (4.0 -
2015-09-04 17:06:39
414
原创 POJ 1364 - King(差分约束)
题目:http://poj.org/problem?id=1364题意:一个序列含有n个数,有q个限制条件,表示为区间和(s,s+n)> k 或是 区间和(s,s+n)思路:Si 表示前i个数的和,则题目条件表示为 Si+n - Si k: 建边(i+n,i,-k-1)。此时建成的图不是连通图,则建立一个超级源点n+1使图连通,建边(n+1,i,0)。若图存在负环,则
2015-09-03 18:21:56
414
原创 HDU 4274 - Spy's Work(树形DP)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4274题意:给出n个点的树,树上的节点权值为其子树的节点权值和(大于等于1),给出一些节点的限制条件,判断这些条件是否成立。思路:midp:表示该节点权值的下限,madp:表示该节点权值的上限。按照题目所给的限制条件,赋值dp数组。在dfs中更新 midp,节点的权值上限无法
2015-09-03 16:47:17
412
原创 HDU 3440 - House Man(差分约束)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3440题意:给出n个房子的高度,每一次跳跃最远的距离D。从最矮的房子开始,按高度顺序跳跃,终点为最高的房子。可以随意移动房子,但是不能改变原来的顺序,求出起点到终点的最远距离。思路:设0为原点,Si 表示i房子到原点的距离。Si - Si-1 >= 1: 建边(i, i-1, -
2015-09-03 12:49:56
570
原创 ***HDU 1529 - Cashier Employment(差分约束)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1529题意:给出一天中24个小时,每个小时至少需要的工人数,有m个工人,每个工人有其开始时间,每个工人持续工作8小时。求出完成一天的工作最少需要多少人。思路:num[i]为从i时刻开始工作的人数x[i] 为 i时刻实际工作的人数r[i]为 i 时刻至少需要工作的人数Sn表
2015-09-02 22:41:49
787
原创 *POJ 1201 - Intervals(查分约束)
题目:http://poj.org/problem?id=1201题意:给出n个区间【a,b】,每个区间一个c,表示在集合Z中,此区间至少有c个共同元素。询问集合Z至少有多少元素。思路:对于区间【a,b】= c. sa 表示区间【0,a】的共同元素,即 sb - sa >= c ,所以建边(a,b+1,c),(为了防止端点重复,则区间变为【a,b+1),eg:【1,3】=1
2015-09-01 21:30:37
414
原创 POJ 3159 - Candies(查分约束)
题目:http://poj.org/problem?id=3159题意:给n个人派糖果,m组数据,(u,v,w)表示u比v的糖果少的个数不超过w,u-v 最后求出n比1最多 多多少糖果。思路:查分约束。对于(u,v,w)小值向大值建边(u,v).由于要一系列满足不等式,所以应该去(u,v)的最小值,所以转换为求最短路。spfa算法+栈优化。AC.#i
2015-09-01 10:04:01
497
原创 *Codeforces Round #316 (Div. 2)- D. Tree Requests (dfs+二分)
题目:http://codeforces.com/contest/570/problem/D题意:n个点的一棵树,每个节点都有自己的字母,m个询问,问u节点的子树中高度为h的点是否可以组成回文序列。思路:dfs,求出每个点的dfs序,以及记录每个深度的节点的字母的序。字母数量的奇数个不超过1,则可以组成回文序列。二分求出询问节点对应的区间,判断是否可以。AC.#in
2015-08-31 22:01:09
456
原创 POJ 3162 - Walking Race(树形DP)
题目:http://poj.org/problem?id=3162题意:树中节点的直径,最大值与最小值的差值不超过m的最大区间。思路:步骤1:求树的直径。步骤2:求出区间,维护两个单调队列,一个递增一个递减。AC.#include #include #include #include #include using namespace std;const
2015-08-29 17:26:23
412
原创 Codeforces Round #290 (Div. 2) - C. Fox And Names (拓扑排序)
题目:http://codeforces.com/problemset/problem/510/C题意:题目给出的单词按照字典序排列,求出符合这些排列的 26个字母的排列。思路:拓扑排序。AC.#include #include #include #include #include #include using namespace std;cha
2015-08-27 20:16:37
444
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人