自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点也不二

永不丧失对生活的热情,人生就是要不停地战斗! by nndxy

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

原创 2016网易内推笔试编程题合集(一)

本文章收录了2016年暑期网易内推笔试编程题合集(一),共八题,题目来源于牛客网。

2016-08-12 16:54:52 12668 9

原创 HDU_子序列系列

HDU 子序列系列持续更新中……

2016-08-08 15:35:22 575

转载 linux strace命令

strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

2016-08-03 17:28:34 1124

原创 HDU_1058 && HDU_3199(指针 + dp)

题意:素因子只有2、 3、 5或7的数被称为humble数。现在要得到第n个humble数是多少。分析:一个新的数产生,肯定是min(x * 2, y * 3, z * 5, w * 7),现在是x, y, z, w如何确定。我们可以初始化dp[1] = 1,然后设置4个指针p1 = p2 = p3 = p4 = 1,然后呢,刚刚提到的x, y, z, w就分别对应dp[p1], dp[p2], dp[p3], dp[p4],也就是说dp[next] = min(dp[p1] * 2, dp[p2] *

2016-08-01 11:52:01 624

转载 GDB十分钟教程

本文介绍了十来个gdb常用调试命令,转载以做留存。

2016-07-26 16:02:32 572

原创 linux下Makefile用法(基础)

掌握make的用法,Makefile的内容,能在linux下C++编程。

2016-07-25 16:57:00 16375

原创 linux系统常用命令

linux系统常用命令持续更新中……

2016-07-23 16:15:23 495

原创 HDU_多重背包系列

HDU 多重背包系列持续更新中……

2016-07-23 12:12:48 1275

原创 HDU_完全背包系列

HDU 完全背包系列持续更新中……

2016-07-23 12:01:13 2832

原创 HDU_01背包系列

HDU 01背包系列持续更新中……

2016-07-22 12:22:29 5851

原创 HDU_1248_寒冰王座(完全背包 / 暴力)

分析:此题一眼看时,裸完全背包。再仔细看,发现数字上的规律,150 + 200 = 350 意味着可以看做只有两种道具,所以只需要一遍循环暴力即可。

2016-07-22 11:19:21 706

原创 Codeforces Round #335 (Div. 2) D. Lazy Student

题意:有一个 n 个点、m 条边的无环无重边图,现在告诉你这m 条边的权值,并且指出了该图的最小生成树上的 n-1 条边(标号为1),现在要你还原整个图。当然有多组解,只要输出一种可行解就行,若不能还原则输出 -1。分析:我的想法是,指定最小生成树上的边都是与 点1 直接连接的边,即 1 与 2、3、4、……、n 相连;根据kruskal算法,首先对所有的边按照升序排序,对于标号为 1 的点,按照顺序构成与 1 相连的边,并且沿途存好新增的点,这里我用队列存;对于标号为 0 的边,它只可能由之前得到的除

2015-12-11 23:34:02 771

原创 BestCoder Round #53 (div.2) C.Rikka with Graph II(dfs)

分析:dfs。找到度数为 1 的点,跑一遍dfs得到最大距离,如果等于 n 则可行,否则不可行。如果度数为 1 的点超过两个,则不可行。

2015-12-10 19:04:36 611

原创 BestCoder Round #63 (div.2)

BestCoder Round #63 (div.2) : A(暴力),B、C(dp) ……

2015-12-09 16:33:09 500

原创 HDU_5586_Sum(最大连续子段和)

题意:给出一个数字串 A1 ~ An,你可以选择一个连续的子串 [l, r],使得里面所有的数字 Ai 的值变成 f(Ai) = (1890 * Ai + 143) % 10007,或者你也可以不要选择。最后要求所有数字的和最大是多少。分析:最大连续子段和。很明显得可以想到,要使得最后的数字和最大,那么就是求一个区间 [l, r] 使得增量最大,也就是说使得 Σ (f(Ai) - Ai) 最大,那么很明显就转换成了最大连续子段和问题了。

2015-12-09 08:58:31 819

原创 CDOJ_1147 (最短路条数)

分析:最短路条数问题。求最短路的条数只需要在dijkstra上面加一个数组sumt[]记录就行,sumt[v] 表示从源点 s 出发到 v 的最短路条数,当 dist[v] > dist[u] + d[u][v] 时,更新sumt[v] 的值就是 sumt[u];当 dist[v] == dist[u] + d[u][v] 时,sumt[v] += sumt[u];判断是否存在无数条最短路,即看是否存在这样的一条边(u, v),边权为 0,并且其中一条最短路经过这条边,也就是 源点 s 到 u 的最短距离

2015-11-18 20:03:45 1934

原创 2012-2013 Waterloo Local Contest, 13 October, 2012 A题(最短路变形)

题意:不久后滑铁卢将会变得非常冷,但是幸运的是,很多建筑都被桥梁和隧道连接着,所以你不需要总是走在外面。但是现在建筑物之间的连接是错综复杂的,很难知道某两个建筑物之间的最优路线,所以需要你写程序判断。给出 n 个点,m 条无向边,以及 p 个查询,边分为两种,一种是暴露在外面的边,用 O 表示,另一种是在室内的边,用 I 表示;最优路线遵循以下规则:1)尽可能使得路径上暴露在外面的边最少;2)在满足第一个条件的情况下,尽可能使得总路程最少。每次查询给出一个 起点 s 和终点 t,求

2015-11-16 23:41:59 972

原创 2015 Asia BeiJing Regional Contest A. Xiongnu's Land(二分)

题意:在一个二维坐标系中,给定一个矩形陆地,左下角坐标为 (0, 0)、右上角为 (R, R),在陆地中有 N 个矩形状的不重叠的绿洲,给出每个绿洲的左上角坐标 (L, T)、以及宽度 W 和高度 H。现在要你用 x = n ( n 为整数) 的一条竖线把整个陆地分成左 (left) 右 (right) 两部分,满足以下两个条件:1)左边绿洲的总面积大于等于右边绿洲的总面积,并且绿洲面积差应尽可能小;2)在满足第一个条件下,尽可能使得左边陆地的面积尽可能大。分析:二分。在二分的过程中(我是左开右

2015-11-16 00:14:06 1261 4

原创 HDU_4431_Mahjong(模拟)

题意:打麻将。三种胡牌方法。题意应该都懂。分析:模拟。枚举放的那张牌,然后分别用三种胡牌方法判断是否能胡牌。第一种方法是普通的胡牌,枚举每一对作为眼睛,然后判断剩余的牌是否满足;第二种是七对,直接判断即可,注意的是,四张相同的牌不能作为两对看待;第三种也好判断,直接根据题意即可。

2015-11-15 15:23:27 1151

原创 HDU_4115_Eliminate the Conflict(2-SAT)

题意:Alice和Bob在玩剪刀石头布,神奇的是Alice能够猜出Bob要出的手法,所以她总是会赢。现在对Alice给出M个限制(a, b, k),如果 k = 1,则代表在第a轮和b轮Alice必须用不同的手法;如果 k = 0,则代表第a轮和b轮Alice必须用相同的手法。如果Alice在某局中中输了则输出 no,否则输出 yes。分析:2-SAT问题。在某一轮中Alice要想不输,则有两种手法(a1, a2)可以使用;现在当 k = 1 ,那么在 a1 == b1的情况下会发生矛盾,所以连边 a1

2015-11-14 15:23:57 817

原创 POJ_4002 && HDU_4122 Alice's mooncake shop(RMQ)

题意:Alice开了一个24小时营业的月饼店,从2000年1月1号0点开始营业,营业M个小时。Alice只在整点时刻做月饼,做月饼不花时间。每一个时刻做月饼的成本不一样,每个月饼的保质期为T,月饼的存储费用是每块月饼每小时花费S。现在又N个订单,问完成这些订单需要花费的最少成本。分析:RMQ预处理即可。此题关键是对表达式化简,假设点餐时间是nowT,若在 i 时间做月饼,那么一个月饼的花费是 cost[i] + (nowT - i) * S,化简得(cost[i] - i * S)

2015-11-10 17:14:19 1112

原创 HDU_4123 && POJ_4003 Bob’s Race (dfs / bfs + RMQ + 尺取)

题意:一棵树上有 N 个节点、N - 1 条边,现在给每个询问一个Q,在节点区间 [ 1, N ] 内找出一个最大的区间,使得以里面节点为起点的最长路径的极差小于等于Q。分析:该题就是三个算法的结合。1)预处理出每个节点能到达的最长路径,这个由三次 dfs 或 bfs 即可得到(树上每个节点的最长路径求法:点击这里);2)用RMQ预处理出区间的最大值以及最小值;3)用尺取法求得最大区间。设定两个指针 s、t 分别指向数组头,然后开始往后扫,如果区间的max[s, t] - min[s, t] <=

2015-11-10 16:57:33 773

原创 HDU_2196_Computer(树上节点的最长路径 · dfs / bfs)

题意:求以树上每个节点为起点的最长路径。分析:以树上最长链的两个端点为起点分别遍历整棵树,期间更新节点的最大值,这样子就可以得到每个节点的最长路径。这个是可以证明的。所以只需要三次dfs或者bfs即可。先以任意一个点为起点,遍历整棵树,得到最长链的一个端点S,然后以此端点S遍历整棵树,得到另一个端点T,再以端点T遍历整棵树,期间更新每个节点的最大值。

2015-11-10 16:12:53 1063

原创 HDU_4780_Candy Factory(最小费用流)

题意:M 台机器生产 N 颗糖果,有如下规则(1)生产每颗糖果的时间为[si, ti],如果从pi(si < pi < ti)开始,那么产生费用 K * (pi - si);(2)每台机器开始使用时需要一个启动时间 C[i][j] 以及启动费用 D[i][j],代表 i 糖果触发 j 机器启动,需要时间C[i][j],花费D[i][j];(3)当一台机器生产完 i 糖果后 可继续生产 j 糖果,期间需要一个缓冲时间为 E[i][j],花费 F[i][j];现在问生产完所有糖果所花费的最小费用

2015-11-01 17:44:58 937 2

原创 ACM ICPC Vietnam National Second Round I. Space Tour(预处理 + 枚举)

题意:给你一个 M * N 的迷宫,‘1’代表可行点,‘0’代表不可行点。从起点出发,可以沿四条路线行走:(1)up -> right -> up -> right -> ...... (2)right -> down -> right -> down -> ...... (3) down -> left -> down -> left -> ...... (4)left -> up -> left -> up -> ...... 可得到从起点开始能走的点的总和。现在要你确定一个起点,使得所能走的点

2015-11-01 17:13:55 778

原创 KM算法模板(HDU_2255)

最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大。解决这个问题可以用KM算法。理解KM算法需要首先理解“可行顶标”的概念。可行顶标是指关于二分图两边的每个点的一个值lx[i]或ly[j],保证对于每条边w[i][j]都有lx[i]+ly[j]-w[i][j]>=0。如果所有满足lx[i]+ly[j]==w[i][j]的边组成的导出子图中存在一个完美匹配,那么这个完美匹配肯定就是原图中的最大权匹配。理由很简单:这个匹配的权值之和恰等于所有顶标的和,由于上面的那个不等式,另外

2015-10-31 01:16:01 1357

原创 二分图带权匹配的KM算法以及费用流建模

从理论上分析,KM算法的时间复杂度比费用流要好,但是实际上和较好的费用流算法比起来运行效率是差不多的,KM算法优势仅仅在于编程容易。而对于十分稀疏的图,许多优秀的费用流算法效率是很高的。这并不说明KM算法不如费用流,毕竟在ACM竞赛中,编程的复杂度也是一个相当重要的需要考虑的因素。

2015-10-31 00:16:23 676

原创 HDU_3666_THE MATRIX PROBLEM(差分约束+spfa+slf优化)

题意:给你一个 N*M 的矩阵 x[N][M],问是否存在这样的两个序列( a[1], a[2], a[3], …… a[N] ),( b[1], b[2], b[3], …… b[M] ),使得对于任意的 x[i][j],都有 L <= x[i][j] * a[i] / b[j] <= U。此题也可以演变为差分约束问题,对不等式进行变形可得:L / x[i][j] <= a[i] / b[j] <= U / x[i][j];如何把它变成相减的形式呢?可以两边同时取对数,即可得:log(a[i]) - l

2015-10-29 12:42:02 746

原创 《一切都是最好的安排》——加措

心是人生的鼓点,不同的律动带来不一样的人生。生活的一切都是历练,笔直平坦,曲折坎坷,得来惊喜,失去惶恐,用不同的心来丈量,结果也会完全不一样。这个世界很大,我们都是幸运的有缘人,这一切都是最好的安排。

2015-10-26 21:37:40 2764

原创 ZOJ_3656_Bit Magic(2-SAT)

题意:给出一个calculate函数,再给出b数组,问a数组是否存在。分析:2-SAT问题。一开始,想到把每个a[i]转化成31位二进制,也就是相当于把每个a[i]拆成31个点,然后去建图。然而这样子却一直MLE。思路也就止于此。然后看了下别人的题解,发现思路是差不多的。但是他是跑31次2-SAT来判断,也就是对每个a[i]的每一位拿出来,判断31次如果都满足即可输出YES,否则输出NO。

2015-10-21 18:39:46 715

原创 HDU_2853 && HDU_3315 (最小费用流)

题意:有N个人分配M个任务(M >= N),一个人只能接受一个任务,同时一个任务只能分配给一个人,每个人做每个任务都有一个效率值 Eij ,现在告诉你初始匹配方案,要求你改动最少的匹配数,得到最大的效率。分析:最小费用最大流。此题思路并不难,难就难在如何求最少的变更匹配数。这种问题有一个通用的方法来解决,那就是把费用增加一个大于 N 的倍数 K,比如 N = 50,那么 K = 55 即可。然后呢,对于初始匹配连边时,对费用再 -1,那么求最少变更匹配数的时候就是直接等于(-cost % K),最大效率

2015-10-14 17:33:03 544

原创 HDU_3395_Special Fish(最大费用最大流)

题意:有n条鱼,每条鱼最多可攻击其他鱼一次,被别人攻击一次。题目给出一个n*n的矩阵,如果matrix[i][j] == 0,表示 i 不攻击 j;如果matrix[i][j] == 1,表示 i 可以攻击 j,并且费用为value[i] ^ value[j]。现在问在满足条件的前提下获得的最大费用。分析:最大费用最大流。首先应该想到的是,把每条鱼 i 拆成两个点,一个代表攻击(i),一个代表被攻击(i + n)。然后该题目求得应该是最大费用任意流,并非最大流。要转化成最小费用最大流来做,首先把费用变成

2015-10-07 17:23:35 522

原创 HDU_2448_Mining Station on the Sea(最短路 + 最小费用流)

题意:有m个油田、n条渔船以及n个港口,n条船分别停在n个油田上,给出油田与油田之间的距离,油田与港口之间的距离,现在你要把船开回到港口去,一个港口只能容纳一条船,问所有船行驶的总路程最少是多少。分析:最短路 + 最小费用流。构图:加入超级源点s(0),从s指向每条船 i 连一条边,容量为1,费用为0;加入超级汇点t(2 * n + 1),从每个港口 i + n 指向t连边,容量为1,费用为0;最短路求出每条船到每个港口的最短距离,从该条船向每个港口连边,容量为最短路径长度。最后跑一

2015-10-07 16:47:02 735

原创 HDU_3667_Transportation(最小费用流)

题意:求从城市1运送K单位物品到城市n的最小花费。给定的有向边,每条边都有其容量c,并且,产生的费用是 a * ( f * f ),其中f是这条边上的流量,a是给出的系数。分析:这个题貌似是刘汝佳大白书当作一种典型的建图方法:拆边法。假如给定一条边(u,v),其计费系数为a,容量为c,那么可以把(u,v)拆成5条边,费用为(1a,3a,5a,7a,9a),容量都为1,为何这样子建图是有效的呢?很明显,假设流量为1,根据最短路优先原则那么肯定走的是cost=1a的那条边;若流量为2,肯定走的是cost=(

2015-09-23 00:37:04 1273

原创 HDU_3376_Matrix Again(最小费用流)

题意:从矩阵起点(1,1) -> (n,n) -> (1,1) 经过点的权值和最大是多少。每个点只能走一次,从(1,1) -> (n,n)只能往右或往下走,从(n,n) -> (1,1)只能往左或往上走。分析:跟HDU_2686题意一模一样,只不过点数增加了很多,所有用vector会超时,转为结构体数组就行了,然而C++ TLE了,G++ AC。不知为何?建图:首先要想到拆点。加入超级源点s(0),s连向1,容量为2,费用为0;加入超级汇点t(N*N*2+1),点N*N*2连向t,容量为2,费用为0

2015-09-22 18:59:30 533

原创 HDU_2686_Matrix(最小费用流)

题意:从矩阵起点(1,1) -> (n,n) -> (1,1) 经过点的权值和最大是多少。每个点只能走一次,从(1,1) -> (n,n)只能往右或往下走,从(n,n) -> (1,1)只能往左或往上走。分析:最小费用最大流。此题跟POJ_2135类似,只不过这里是点只能走一次,那么使用拆点法,把一个点(u)拆成两个点,连边 u -> u + n*n,容量为1,费用为0;然后对于每一个点u,连接右边点和下边点,容量为1,费用为权值的负值,这样子算出来后就是最小费用,再求负值就是最大权值和了。

2015-09-22 12:11:12 652

原创 HDU_3998_Sequence(最长上升子序列 + 网络流)

题意:求最长上升子序列以及最长上升子序列的个数(每个数只能取一次)。分析:dp + 最大流。首先每个数只能取一次,那么就要对每个点( i )进行拆点,连边 i -> i + N,容量为1;加入超级源点s,对于dp[i] == 1的点,s指向 i 连一条边 s -> i,容量为无穷大;在求最长上升子序列过程中,使得[1,i-1]当中dp[j] + 1 == dp[i]的点 j 向 i 连一条边 j + N -> i,容量为1;加入超级汇点,使得所有dp[i] == LIS的点 i 向 t 连边 i + N

2015-09-18 23:14:47 700

原创 HDU_3468_Treasure Hunting([二分图匹配 / 最大流] + 最短路)

题意:在地图上从A -> B -> C …… -> Z -> a -> b …… -> z 这样走,每次走的都是最短路(可能多条路径),地图上有一些金子,如果在某一条最短路上存在金子,那么只取一个金子。问最多能取多少金子。分析:先bfs预处理出每个点(A.B.C……)到其他点的最短路径,然后对于每个金子,判断其是否在某条最短路径上,假设gold1在(A -> B)的最短路径上,那么A连向gold1,依次类推,就建立了二分图模型了,然后求二分图最大匹配即可。若用网络流,那么所有的边容量设为1;加入超级源点

2015-09-17 09:56:58 667

原创 HDU_3416_Marriage Match IV(最短路+最大流)

题意:有向图中,从起点A走到终点B,每条路只能一次,问最多能走多少次最短路。分析:最短路+最大流。先用最短路预处理出起点与终点到所有点的最短路,然后对于所有的边(u,v,d)判断一下是否在最短路径上(dis[s][u]+d+dis[t][v]==dis[u][t]),保留下这些有用边,容量都为1,然后跑一遍最大流即可。

2015-09-17 09:27:44 515

原创 HDU_3277_Marriage Match III(最大流)

题意:跟HDU 3081差不多,就是多了一个条件,每个女孩可以另外选K个不喜欢的男生。分析:既然题目就多了一个条件,那么建图的话自然和上一题差不多,【点击这里查看HDU 3081构图法】,只要把每个女生拆成两个女生girl_1,girl_2,若girl_1对boy_1不排斥,则连边gilr_1 -> boy_1,容量为1;若girl_1不喜欢boy_1,则连边girl_2 -> boy_1,容量为1,girl_1 -> girl_2,容量为K。然后二分找答案,最大流判可行度即可。

2015-09-14 23:00:14 714

空空如也

空空如也

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

TA关注的人

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