摘要: 树剖+线段树+区间合并 阅读全文
posted @ 2016-11-18 17:01 yohanlong 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题意 给一棵树,三个操作,单点修改,区间求和,区间最大。思路树剖代码#include #include #include using namespace std;#define root 1,n,1#define ls l,m,o'9'){if(c=='-')p=-1;c=get... 阅读全文
posted @ 2016-11-12 23:17 yohanlong 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题意 给你一列数字,要求去掉其中的一些(可以连续可以不连续),使得剩下的数字呈阶梯状排列。 即:5 3 5 3 5 (etc.) 问最多能去多少个?思路一开始以为是DP,但是感觉只能写O(n^2)的,不过网上也有O(n)的,等会儿研究一下。 这里用的是另外的方法。‘ 注意... 阅读全文
posted @ 2016-11-12 12:40 yohanlong 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题意 给你一个无向图(可能不连通,可能有重边),每条边有个限重,货车运输的时候不能超过这个限重,现在问对于一个起点和终点,问货车最多可以运多少货物。思路这道题就是让我们求一个瓶颈路,并且这个瓶颈路一定在最大生成森林上面,用反证法可以知道不在最大生成森林上面的一定是更劣的答案。 所... 阅读全文
posted @ 2016-11-12 10:20 yohanlong 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 直接上代码。 时间复杂度与归并排序一致,但是好写多了有木有。#include using namespace std;int a[6]={0,5,2,1,4,3};int c[6];int lowbit(int x){ return x&(-x);}void update(i... 阅读全文
posted @ 2016-11-11 17:47 yohanlong 阅读(107) 评论(0) 推荐(0) 编辑
摘要: P3373 【模板】线段树 2题意 写一个数据结构(线段树),实现三个操作 1.区间加减 2.区间乘法 3.区间求和思路lazy tag 不解释显然是要打两个tag,一个add,一个mul(multiple)update过程与只有一个tag的情况大抵相同,唯一的不同之... 阅读全文
posted @ 2016-11-11 00:10 yohanlong 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 运用1单点修改,区间查询。 add(pos,x)->在下标 pos 处加上 x query(pos)->返回 1 到 pos 的前缀和那么查询区间 [ l , r ]的操作就是query( r ) - query( l - 1 )例题——洛谷3374代码#include#... 阅读全文
posted @ 2016-11-09 16:48 yohanlong 阅读(178) 评论(0) 推荐(0) 编辑
摘要: HDU 2460 Network题意给一个连通无向图,在这个图的基础上给出一些连边的操作,问每次操作后还剩多少个桥?思路首先跑一次tarjan不用说,这里尤注意与求scc的tarjan不同,关于桥的判断,要在dfs结束回溯的时候直接if(low[v]>dfn[u])判断。然后对于每... 阅读全文
posted @ 2016-11-04 10:52 yohanlong 阅读(180) 评论(0) 推荐(0) 编辑
摘要: POJ 3279 Fliptile题意关灯问题,求最小的操作次数,并给出操作方式。传送门思路注意到该问题有如下性质:一旦第一行的操作状态确定后,其它所有的状态也就随之确定了。具体而言:如果map[i][j]==1,那么为了把它变成0,我们只需要对flip[i+1][j]进行一次操作... 阅读全文
posted @ 2016-10-21 16:44 yohanlong 阅读(128) 评论(0) 推荐(0) 编辑
摘要: HDU 1069 Monkey and Banana传送门题意有一堆方块(三维的),可以把它们叠在一起,求这些方块所能达到的最大高度。思路注意到这个问题颇像LIS,只是元素的key由一维的数字变成了二维的长和宽而已。于是可以把一个方块拆成六个(且一个方块的六种摆放方式不会有两种同时... 阅读全文
posted @ 2016-10-20 20:28 yohanlong 阅读(115) 评论(0) 推荐(0) 编辑