摘要: 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。 阅读全文
posted @ 2016-09-12 10:06 专注如一 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个城市,m条路,首先m条路都连上,接着输出m行,第i行代表删除前i行的得到的连通块个数 题解:正难则反,我们反向考虑使用并查集添边。首先每个点都没有相连,接着倒着来边添加边计算,当两个点父节点相同时连通块不变,否则-1 阅读全文
posted @ 2016-09-12 10:02 专注如一 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n*n的全0矩阵,每次有两个操作: C x1 y1 x2 y2:将(x1,y1)到(x2,y2)的矩阵全部值求反 Q x y:求出(x,y)位置的值 树状数组标准是求单点更新区间求和,但是我们处理一下就可以完美解决此问题。区间更新可以使用区间求和的方法,在更新的(x2,y2)记录+1, 阅读全文
posted @ 2016-09-12 10:01 专注如一 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题意:每个人都有一个独特的排名(数字大小)与独特的位置(从前往后一条线上),求满足排名在两者之间并且位置也在两者之间的三元组的个数 思路:单去枚举哪些数字在两者之间只能用O(n^3)时间太高,但是可以转变思想。我们可以转化为对于每个数字a,求出后面比当前数a大的每个数b,再求出数b后面比当前数b大的 阅读全文
posted @ 2016-09-12 09:59 专注如一 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 基础一维树状数组 题意:左边一排 1-n 的城市,右边一排 1-m 的城市,都从上到下依次对应。接着给你一些城市对,表示城市这两个城市相连,最后问你一共有多少个交叉,其中处于城市处的交叉不算并且每个位置最多只能有有一个交叉。 树状数组:利用二进制特点解决单点更新与满足区间减法的区间求值,例如求区间和 阅读全文
posted @ 2016-09-12 09:58 专注如一 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 很有意思的一道并查集 题意:给你n个点(<=500个),m条边(<=10000),q(<=20000)个询问。对每个询问的两个值xi yi,表示在从m条边内删除[xi,yi]的边后连接剩下的边,最后求连通块的总个数 求连通块的个数很容易想到并查集,即把每两块并在一起(祖先任选),可以相连就减一。但是 阅读全文
posted @ 2016-09-12 09:57 专注如一 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个数,接着三种操作: I p v :告诉你 Xp = v I p q v :告诉你 Xp ^ Xq = v Q k p1 p2 … pk:问你k个数连续异或的结果 注意前两类操作可能会出现与之前告诉你的相矛盾,此时输出“The first n(第几个I) facts are confli 阅读全文
posted @ 2016-09-12 09:56 专注如一 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 这题我一直觉得使用了set这个大杀器就可以很快的过了,但是网上居然有更好的解法,orz。。。 题意:给你一个最大200行50000列的墙,初始化上面没有颜色,接着在上面可能涂四种类型的形状(填充): 圆 :给你圆心坐标,半径,颜色 (1->9) 菱形 :中心坐标,中心向四方的最大值,颜色(1->9) 阅读全文
posted @ 2016-09-12 09:55 专注如一 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 并查集的一道比较考想法的题 题意:给你n个点,接着给你n-1条边形成一颗生成树,每条边都有一个权值。求的是以一个点作为特殊点,并求出从此点出发到其他每个点的条件边权的总和最大,条件边权就是:起点到终点经过的权值的最小值。 如果按照最原始的想法来做的话就是枚举每个点作为特殊点,离线dfs再遍历到每个点 阅读全文
posted @ 2016-09-12 09:54 专注如一 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 好久没有写过图论的东西了,居然双向边要开两倍空间都忘了,不过数组越界cf居然给我报MLE??这个题题意特别纠结,一开始一直不懂添加的边长是多长。。。 题意:给你一些点,然后给一些边,注意没有重边 环,接着给你两种操作: 1 x :求出 x 的集合中最长的边权值 2 x y:合并 x 的集合和 y的集 阅读全文
posted @ 2016-09-12 09:53 专注如一 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 开始给你n个集合,m种操作,初始集合:{1}, {2}, {3}, … , {n} 操作有三种: 1 xx1 yy1 : 合并xx1与yy1两个集合 2 xx1 yy1 :将xx1元素分离出来合到yy1上 3 xx1 :查询xx1集合的元素个数,和元素所有值总和 并查集,1就是合并两个集合,3要记录 阅读全文
posted @ 2016-09-12 09:52 专注如一 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 第三次复习了,最经典的并查集 题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: “1 X Y”,表 阅读全文
posted @ 2016-09-12 09:51 专注如一 阅读(8159) 评论(1) 推荐(2) 编辑
摘要: 自己YY了一个的写法,不过时间复杂度太高了,网上的想法太6了 题意:给你一些矩阵,求出矩阵的面积并 首先按照x轴离散化线段到线段树上(因为是找连续区间,所以段建树更加好做)。 然后我们可以想一下怎样才能使面积相交呢?我们可以注意到如果矩阵入线出现超过一次就一定有面积相交,所以我们记录入线与出线,再排 阅读全文
posted @ 2016-09-12 09:50 专注如一 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 突然想到的节约时间的方法,感觉6翻了 给你n个数字,接着m个询问。每次问你一段区间内不大于某个数字(不一定是给你的数字)的个数 直接线段树没法做,因为每次给你的数字不一样,父节点无法统计。但是离线一下,如果后面的询问可以用前面已经处理过的一些东西,则可以节约时间。换句话说,就是直接把给数字z进行从小 阅读全文
posted @ 2016-09-12 09:49 专注如一 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 以前似乎做过类似的不过当时完全不会。现在看到就有点思路了,开始还有洋洋得意得觉得自己有不小的进步了,结果思路错了。。。改了很久后测试数据过了还果断爆空间。。。 给你一串数字A,然后是两种操作: "1 l r k c":意思是当 l=<i<=r 对(i-a)%k = =0 的每个 Ai 都增加 c ( 阅读全文
posted @ 2016-09-12 09:48 专注如一 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 又是一开始觉得的水题,结果GG了好久的东西。。。 题意是给你n个英雄,每个英雄开始为1级经验为0,最多可以升到k级并且经验一直叠加,每一级都有一个经验值上限,达到就升级。接着给你两种操作:W li ri ei:从第li到第ri个增加经验基数ei,注意这儿ei还需要乘以级数才是真正增加的经验,还有就是 阅读全文
posted @ 2016-09-12 09:45 专注如一 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 开始以为是水题,结果。。。。。。 给你一些只有两种颜色的石头,0为白色,1为黑色。 然后两个操作: 1 l r 将[ l , r ]内的颜色取反 0 l r 计算[ l , r ]内最长连续黑色石头的个数 明显的线段树区间合并,记录lmax(从左端点开始的最长值) rmax(从右端点开始的最长值) 阅读全文
posted @ 2016-09-12 09:44 专注如一 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 开始还觉得是贪心呢。。。 给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面 d=1:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面,但是这儿其面积必须大于下面积木的面积 d=2:你只能 阅读全文
posted @ 2016-09-12 09:43 专注如一 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 其实这个题呢,大白书上面有经典解法 题意是青蛙要跳过长为L的河,河上有n块石头,青蛙最多只能跳m次且只能跳到石头或者对面。问你青蛙可以跳的最远距离的最小值是多大 典型的最大值最小化问题,解法就是贪心二分。其实就是二分答案,再把每次二分出来的答案带入计算是否满足题意,以此来确定这个正确答案在此值的左区 阅读全文
posted @ 2016-09-12 09:42 专注如一 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 开始觉得是规律题的,自以为是的推了一个规律,结果测试数据都没过。。。。看了love神的博客才发现只是把式子展开就找到规律了。不过挺6的是我虽然想错了,但是维护的的东西没有错,只是改改(改了进两个小时好吗????)就过了 题意:给你一串数字,然后两种操作: “= l r x” 是把数组第l位置到r位置 阅读全文
posted @ 2016-09-12 09:40 专注如一 阅读(213) 评论(0) 推荐(0) 编辑