自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 spoj GSS7(树链剖分 + 线段树区间合并)

题目连接#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2013-12-28 16:40:53 1077

原创 hdu 4680(数据结构)

题目链接比赛时一看这题操作这么多, 还有gcd三角形神马的以为是个神题, 后来发现这题其实挺基础的, 就是用并查集和平衡树同时维护若干集合, 合并时用启发式第二个删点操作是并查集中的经典操作, 做法就是找一个新的点替代原来的点类似http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18692, 第一种查询找到最小次

2013-10-18 12:33:58 1298

原创 sgu 507 (启发式合并)

题目链接题意就是求一棵树以每个内节点为根的子树中所有叶子节点的权值差的最小值, 做法就是对每个子树维护一颗平衡树然后向上递推合并时用启发式。。。#include #include #include #include #include using namespace std;inline int read() {//used to read 32bit posit

2013-10-17 23:20:05 1234

原创 hdu 3726 (数据结构综合(好题))

题目链接LRJ白书上的例题, 最近复习数据结构时又A了一遍这题, 此题很经典同时考察了数据结构中的离线,平衡树, 并查集, 启发式合并等多个常用技巧, 其中离线将所有操作反向处理值得回味, 详细讲解可以看白书。#include #include #include #include #include using namespace std;inline int read(

2013-10-17 22:04:41 1330 2

原创 spoj STRLCP (数据结构 + hash)

题目链接

2013-09-30 22:28:03 963

原创 hdu 4391

题目链接  典型的sqrt(n)分块题目, 不过是个插段问段, 做法还是大同小异。。。。#include #include #include #include #include using namespace std;const int sz = 400;inline int readint() { char c = getchar(); while (!isdig

2013-09-07 09:46:07 665

原创 hdu 4635(强连通分量)

题目链接不难得到如下结论:如果原图不是强连通, 那么最优解肯定是只剩两个强连通分量且每个分量内都为完全图, 可以列出数学表达式不难发现最后的结果只和两个分量中的点数的乘积有关, 由于两者的和一定使两者的差尽可能大, 但一个点如果既有出度又有入度就不能单独将它作为最后的一个点, 所以我要考虑只有出度或者入度的点。#include #include #include #inclu

2013-08-25 13:40:24 748

原创 hdu 3488(费用流)

题目链接同这题#include #include using namespace std;const int N = 2005;const int M = 10005 << 3;typedef int LL;const LL INF = (int)1e9;struct Cost_Flow { struct Edge { LL cap, flow,

2013-08-19 21:17:04 619

原创 hdu 3435(费用流)

题目链接算是偶然发现的一种题型吧, 这种题目的最明显特征就是要求每个点都在一个或几个不含重复边的环上, 然后一般都是求这些环的最小或者最大权值和, 具体做法就是拆点将一个点u拆成点u 和 u' ,源点连每个u容量为环的个数u'点汇点容量也为环的个数, 若有边 则需要连u和v', 大致就是这样吧。。。。#include #include using namespace std;

2013-08-19 21:08:21 833

原创 spoj FTOUR2(树的分治)

题目链接QZC树的分治论文第二道例题, 自己想了想觉得没什么思路, 后来看了论文中的解法看到中间时想到了一个线段树优化dp的解法, 论文中也提到的令dp[L] 标示从当前根结点向下经过L个crowded节点的最长路径值,在进行分治时用两个dp数组, dp1表示当前根节点前i - 1棵子树的dp值, dp2表示第i棵子树的dp值,用线段树维护dp1的值,我们每次dfs一个子树时得到dp2

2013-08-17 11:18:36 1158

原创 hdu 4670 (树的分治)

题目链接 经典的男人八题的改编题目, 从边权到了点权, 而且每个节点有30个三进制的状态, 但其实做法还是和原来大同小异的在处理子问题时需要用到一个map, 复杂度为n * log(n) * log(n) * 30#include #include #include #include #include #include #include using namespac

2013-08-16 10:30:19 1104

原创 hdu 4674 (缩点 + 倍增LCA)

题目链接当时看到这道题目有点想法后来看到59交0AC, 就知道肯定有不少trick,赛后看了题解才知道原来有这么多种情况。。。其实所有的情况大致可以这么划分, u 和 v是否相同, u, v不同时, 设u所在环是cu, v所在环是cv, p所在环是cp, 根据cu == cv再划分出两种cu != cv时再根据cu == cp || cp == cv再划分出两种情况, 基本就是这样

2013-08-15 09:07:24 1224

原创 poj 3281 (拆点网络流)

题目链接下周要给学弟讲网络流了, 最近复习了一下发现了这题,这道题主要考察的就是构图, 如果只有食物或者饮料那么这题就很水了, 由于每一头牛都要有和一种食物还有一种饮料匹配那么可以考虑将牛拆成两个点然后左边和食物相连右边和饮料相连, 食物和源点相连, 饮料和汇点相连。#include #include #include #include #include #inc

2013-08-14 00:42:55 866

原创 zoj 3165(二分图最大点权独立)

题目链接模型很明显, 但要注意输出解的方式, 需要先找出割边, 确定最小点权覆盖然后再求补集。#include #include #include #include #include #include #include #include using namespace std;const int N = 205;const int M = N * N * 2

2013-08-13 23:37:21 699

原创 hdu 3599(网络流 (不相交路径))

题目链接题意就是求给定两点间有多少条不含重复边的最短路, 先求出最短路然后构出最短路径图即保留原图中div[v] == dis[u] + w(u, v)的边然后再跑一遍最大流即可, 注意n = 1时答案为0#include #include #include #include #include #include #include #include usin

2013-08-13 10:14:41 1387

原创 SRM588 div2

昨天晚上做的, 一开始跟宿舍哥们说了两句话, 导致第一题出的慢了, 后来出了500pt, 之后一直再做1000pt, 打完后有个bug一直没调出来所以就遗憾的两题了。。。 今早把1000pt交上发现是对的。。。一句话 还是太弱了!!!!250pt: 不解释500pt:由于歌曲最多只有15种, 所以可以枚举2 ^ 15种情况, 如果确定了是那几首歌曲那么所用的总时间就是歌曲时间的和再

2013-08-13 08:25:56 900

原创 hdu 4614(线段树)

题目链接挺基础的一个线段树题目,两种操作, 第二种就是区间和, 第一种的话起始下标也很容易得到, 主要是终点下标需要思考一下, 我的做法是记录下当前剩余多少花还没放, 然后找到第一个剩余花小于当前区间总空位的个数的区间, 然后根据左子区间的剩余情况再递归直到叶子节点, 线段树每个节点维护三个统计量空位的个数第一个空位最后一个空位, 以及一个lazy标记。#include #include

2013-08-12 19:50:14 700

原创 hdu 4614(数学 + 乱搞)

题目链接多校第二场的题目, 首先可以确定lcm(a, b)是周期,然后求出一个周期内的结果, 在一个周期内需要分段考虑, 同一个段内的差值都是相同的, 所以直接模拟每段求再累加就可以了#include #include #include #include #include #include using namespace std;typedef long long

2013-08-12 12:40:01 723

原创 poj 4045 (树形dp)

题目链接去年金华邀请赛的B题, 其实就是个挺简单的树上的统计     #include #include #include #include #include #include using namespace std;const int N = 50005;const int M = N << 1;typedef long long LL;const LL INF

2013-08-12 11:05:56 679

原创 hdu 4606(线段相交 + 最短路 + 最小路径覆盖)

题目链接多校第一场的题目, 这题很综合, 考察了很多点, 首先对于这种二维平面上带有障碍的最短路在LRJ的白书上有提到, 然后对于后一部分由于城市的占领有顺序所以得到了一个DAG, 然后再二分相邻两点间的最长距离每次用最小路径覆盖判断人数是否小于等于给定人数就可以了。。。。#include #include #include #include #include #incl

2013-08-12 10:45:04 727

原创 hdu 4631(增量最近点对)

题目链接CLJ神犇的题目, 其实这题解法并不难, 算是个经典问题解法的简单变形吧, 对于最近点对这个问题, 一般有两种做法, 有一种针对随机数据很快的O(n ^ 2)解法, 还有一种严格O(n * log(n))的分治算法, 对于一般的题目前者会比较快,如果不熟悉这两种做法可以参考http://www.csie.ntnu.edu.tw/~u91029/PointLinePlane2.htm

2013-08-10 20:25:58 783

原创 hdu 4665 (dfs / 2-SAT)

题目链接多校第六场的题目, 比赛时没什么想法, 后来看GYZ神犇的解题报告里用的是O(n ^ 2)的2 - SAT解法, 但本弱菜还是没想到如何构图, 后来看别人都是用dfs过的, 自己写了一版觉得还是挺好写的, 而且速度也很快, 但复杂度不知如何分析, 一开始觉得dfs应该会T的, 毕竟需要递归2000层, 后来想了想觉得这题有一定的特殊性, 因为题目只要求输出一组解, 而且如果相同

2013-08-09 20:30:36 744

原创 uva 11990(动态逆序对)

题目链接    刘汝佳的数据结构专场题目, 题目就是给定一个1~n的排列求删除某个数后剩下的逆序对的个数, 我一开始的做法是树状数组套Treap后来T了, 又翻了白书, 白书上的解法是用到了一个静态的BST,因为这题的特殊性, BST只需要有删除动能, 所以再用Treap就显得大才小用了, 而且用静态的常数也小了很多, 套Treap总的复杂度是(n + q) * log(n) *

2013-08-07 14:11:27 1795

原创 zoj 1232(Floyd预处理 + 状态图上的最短路(好题))

题目链接思想挺好的一个题目, 跟这个题做法类似, 但要多一步预处理, 详见代码。。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2013-08-06 01:55:45 774

原创 SRM 584 div1 lev3(最小树形图)

题目链接闲来无聊在TC上搜罗图论题目, 无意中发现了这题, 此题构图其实挺好想,我一开始想的是费用流后来构完图才发现是个最小树形图。。。 只是觉得div1 lev3的题目不应只有这种程度吧。。。。#include #include #include #include #include #include #include #include #include #inclu

2013-08-05 22:55:11 790

原创 poj 3164(最小树形图)

题目链接最小树形图的模板题, 原理和代码都是从这位神牛的博客http://blog.csdn.net/wsniyufang/article/details/6747392学到的。。#include #include #include #include #include #include #include #include #include #include #i

2013-08-05 22:45:46 656

原创 SRM 573 div1 lev2(状态图上的最短路)

题目链接从一个神牛博客上无意中发现的题目, 由于TC上的图论题目本来就少, 所以就好奇的想做做, 题意就是给定一个50个点的图, 每个点有一个高度, 从一个点u到另一个点v的条件是u, v直接相连, 并且h[u] >= h[v],每个点的高度可以改变代价为改变前后高度差的绝对值, 求从点0到点n - 1的最小代价。一开始没什么思路, 后来看了神牛的解法后发现这题其实就是lrj白书上提到的状

2013-08-05 21:04:21 1020

原创 hdu 4341(分组背包(好题))

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4341分组背包问题, 由于一条直线上的要按照顺序取, 如果一条直线上有n个金矿, 对于这条直线则有n + 1 种决策, 而且是互相矛盾的, 所以可以将这n个物品重新组合一下, 转化成一个分组背包问题, 详见代码。。。#include #include #include #inclu

2013-08-04 21:40:08 818

原创 poj 3160(强连通缩点 + dp)

题目链接:http://poj.org/problem?id=3160很陈旧的题目吧算是, 缩点后得到DAG, 然后就是带点权的最长路, 唯一值得注意的是一开始的图的点权可能是负的, 由于可以经过某个点但不取该点的权值, 所以可以把负的权值当做0来处理。。。#include #include #include #include #include #include

2013-08-04 21:14:28 757

原创 hdu 2242 (Tarjan + 树形dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2242挺基础的一个图论dp综合题目, 开了IO以后暂时rank1。。。。#include #include #include #include #include #include #include #include #include #include using nam

2013-08-04 15:05:49 614

原创 uva 11994(LCT)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=3145给出一个森林, 要求支持三种操作:    1.将节点x和它的父节点p[x]的边砍断, 并使x成为y的一个子节点, 若x为y的祖先则忽略,

2013-07-30 11:34:10 898

原创 spoj 4155 (LCT)

题目链接:http://www.spoj.com/problems/OTOCI/LCT模板题#include #include #include #include #include #include using namespace std;const int N = 30006;const int M = N << 1;inline int max(int

2013-07-29 20:33:39 809

原创 hdu 4010(LinkCutTree)

题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=4010LinkCutTree的模板题, 感觉LCT的思想和树链剖分差不多, 都是把树拆成若干条树链, LCT就是用Splay树维护每条链, 以节点的深度作为关键字, 代码主要是参考了这位神牛的blog:http://www.shuizilong.com/house/archives/hdu-401

2013-07-29 19:54:32 893

原创 SRM 586 div2

今天的题目感觉挺水, 还剩25min时我就提交了三题。。。。250pt:水,直接模拟即可。500pt:给出一个线性分段函数查询一些平行于x轴的直线与该函数有几个交点,也差不多是模拟吧将原函数分段和直线判相交,感觉怎么搞都可以的。。1000pt:定义一个字符串的value为所有出现的字母的最右出现减去最左出现下标的差值的和, 要求长度为L(L 可以这样考虑,如果一个字母只出现一次则它

2013-07-28 02:38:46 670

原创 hdu 4601 (bfs + dfs + trie)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4601题意很简单就是给出一个类似trie的树形结构, 每个节点表示一个单词, 要求查询从某个点u向下走m步可以获得的字符串的字典序最大的hash值。做法就是建出一棵与原树对应的trie树, 对其dfs获得原树每个节点对应单词的rank值, 考虑到查询的特殊性然后对原树进行层次遍历, 使得同一层的点在

2013-07-26 22:37:22 1045

原创 hdu 4605(离线 + dfs + 树状数组(好题))

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4605多校第一场的题,赛后看了题解感觉这题也不是很难, 比赛时忙于别的题目这题都没看, 还是经验不足啊, 这道题就是利用dfs结合树状数组或者平衡树(可以支持查找当前集合小于val的元素个数的数据结构)统计从根结点到当前点的一条树链上的权值,向下递归时插入回溯时再删除, 需要把所有查询离线处理, 每

2013-07-25 11:59:48 867

原创 poj 3680(网络流)

题目链接:http://poj.org/problem?id=3680经典的区间k覆盖模型, 费用流求解。#include #include #include #include #include #include #include #include using namespace std;typedef int LL;const LL INF = 1000

2013-07-24 21:17:28 589

原创 hdu 3499 (最短路)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3499题意:给定一个有向带权图,点数n 解法: 做两遍单源最短路, 一遍正向,一遍反向,枚举每条边, 将其权值减半,所求答案即为min{dis[s → u] + dis[t → v] + w / 2}, 复杂度为最短路复杂度。#include #include #include

2013-07-24 13:52:56 673

原创 uva 11082(网络流)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=2023&mosmsg=Submission+received+with+ID+12094940题意是已知一个矩阵的行数和列数和前i行的的和已经前j列的和, 矩阵每个元素的值都

2013-07-24 11:53:23 739

原创 zoj 1455(差分约束)

题目链接:http://210.32.0.220/onlinejudge/showProblem.do?problemCode=1455典型的差分约束题目, 不等式很好列但此题求的是满足约束的最小值, 原来看到网上有最大值求最短路, 最小值求最长路的说法但本人觉得有点烦, 所以都转化成求最短路, 所以要求加负号的最大值, 注意超级点的确立, 细节详见代码。#include #

2013-07-23 00:16:01 1171 1

空空如也

空空如也

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

TA关注的人

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