摘要: 1861: [Zjoi2006]Book 书架 Description 小T有一个很大的书柜。这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列。她用1到n的正整数给每本书都编了号。 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿下一本。由于这些书太有吸引力了,所以她看完后常常会忘记 阅读全文
posted @ 2017-01-15 21:05 阿波罗2003 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 3223: Tyvj 1729 文艺平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 您需要写一种数据结构(可参考题目标题),来维护一 阅读全文
posted @ 2017-01-15 20:21 阿波罗2003 阅读(170) 评论(0) 推荐(0) 编辑
摘要: Splay树,又叫伸展树,可以实现快速分裂合并一个序列,几乎可以完成平衡树的所有操作。其中最重要的操作是将指定节点伸展到指定位置, 目录 节点定义 旋转操作 伸展操作 插入操作 删除操作 lower_bound&upper_bound 前驱后继操作 可重Splay 名次操作 区间操作 目录 节点定义 阅读全文
posted @ 2017-01-15 10:41 阿波罗2003 阅读(604) 评论(0) 推荐(0) 编辑
摘要: [写在前面的话] 如果想学Treap,请先了解BST和BST的旋转 二叉搜索树(BST)(百度百科):[here] 英文好的读者可以戳这里(维基百科) 自己的博客:关于旋转(很水,顶多就算是了解怎么旋转,建议自行上百度)[here] Treap(= binary search Tree + Heap 阅读全文
posted @ 2017-01-14 09:28 阿波罗2003 阅读(767) 评论(0) 推荐(0) 编辑
摘要: vjudge传送门[here] 题目大意:给一个有(3≤v≤1000)个点e(3≤e≤10000)条边的有向加权图,求1~v的两条不相交(除了起点和终点外没有公共点)的路径,使权值和最小。 正解是吧2到v-1的每个点拆成两个点,中间连一条容量为1,费用为0的边,然后求1到v的流量为2的最小费用流就行 阅读全文
posted @ 2017-01-12 17:43 阿波罗2003 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索。不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的。(不过这道题应该是special judge,因为一题可以多解而且题目中然而并没有什么要求,所以说可以考虑思考一下这道题有木有什么"套路"之类的通法) 比如说有这么一 阅读全文
posted @ 2016-12-30 21:16 阿波罗2003 阅读(364) 评论(0) 推荐(0) 编辑
摘要: Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer elevation in the range 0 .. 100. In the winter, since there is abundant sn 阅读全文
posted @ 2016-12-25 16:40 阿波罗2003 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Farmer John's hobby of conducting high-energy physics experiments on weekends has backfired, causing N wormholes (2 <= N <= 12, N even) to materialize 阅读全文
posted @ 2016-12-25 16:29 阿波罗2003 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 二分匹配传送门[here] 原题传送门[here] 题意大概说一下,就是有N头牛和M个牛棚,每头牛愿意住在一些牛棚,求最大能够满足多少头牛的要求。 很明显就是一道裸裸的二分图最大匹配,但是为了练练网络流(做其它的题的时候,神奇地re掉了,于是就写基础题了)的最大流算法,就做做这道题。 每一个牛都可一 阅读全文
posted @ 2016-12-25 16:10 阿波罗2003 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目背景 T1答案要mod1000000007(10^9+7),请重新提交,非常抱歉! 一天,智障的pipapi正在看某辣鸡讲义学程序设计。 题目描述 在讲义的某一面,他看见了一篇文章。这篇文章由英文字母(大小写均有)、数字、和空白字符(制表/空格/回车)构成。 pipapi想起了他最近刚刚学会写的 阅读全文
posted @ 2016-12-18 17:07 阿波罗2003 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5000)条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许是为了保护该地的旅游资源,Z小镇有个 阅读全文
posted @ 2016-12-11 11:40 阿波罗2003 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才 阅读全文
posted @ 2016-12-03 17:21 阿波罗2003 阅读(260) 评论(0) 推荐(0) 编辑
摘要: Description 公元 2044 年,人类进入了宇宙纪元。L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球。小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航 阅读全文
posted @ 2016-12-03 15:36 阿波罗2003 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 因为数的总和一定,所以用一个人得分越高,那么另一个人的得分越低。 用$dp[i][j]$表示从$[i, j]$开始游戏,先手能够取得的最高分。 转移通过枚举取的数的个数$k$来转移。因为你希望先手得分尽量高,所以另一个人的最高得分应尽量少。 $dp[i][j] = sum[i][j] - \min 阅读全文
posted @ 2016-11-17 20:43 阿波罗2003 阅读(312) 评论(1) 推荐(0) 编辑
摘要: 讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS。 如果用O(pq)的算法对于这道题来说还是太慢了。所以要另外想一些方法。注意到序列中的所有元素都不相同,所以两个序列中数对应的位置都是唯一的,就用第一个序列的元素对第二个序列的元素进行重新编号,记录它们在第一个序列中出现的 阅读全文
posted @ 2016-11-17 20:23 阿波罗2003 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 第一题并不是很难,首先筛出1 ~ sqrt(r)中的所有质数,然后用再用筛法直接筛[l, r]中的质数。筛出来找一遍就行了。 Code 这道题就是道计算题(呵呵)。可以直接算出当n = 9, 99, 999...的情况。那么就可以从高位向低位计算。举个例子应该更好说明。 例如n = 1234的时候, 阅读全文
posted @ 2016-11-17 19:40 阿波罗2003 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 1.hdu 1009 FatMouse' Trade 题目传送门[戳我] 题解传送门[戳我] 2.删数问题 题目&评测传送门[戳我] (PS) 题解: 通过贪心的策略来想,应该是每一次选择局部最优解。 这个局部最优解就是使当前的数最小,所以可以从高位到低位进行查找,使得s[j + 1] >= s[j 阅读全文
posted @ 2016-11-16 21:08 阿波罗2003 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 第一题存在的意义是送分。。(真的没有见过这么简单的数论题,想出正解来了还觉得是错的) 求序列的gcd,如果求出来是1,结果是n,否则是-1 首先呢,随便画个一个很长很长的矩(长)阵(方形),然后随便画一画(手动枚举)。然后就可以发现前n列的情况和前n + 1到前2n的情况很类似,所以可以对每n列进行 阅读全文
posted @ 2016-11-16 20:22 阿波罗2003 阅读(187) 评论(0) 推荐(0) 编辑
摘要: Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean 阅读全文
posted @ 2016-11-15 20:38 阿波罗2003 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 二叉树是一个幌子,其实中序遍历后变成数列。 原问题变成了给定一个数列,问最少把多少个数修改为其他整数,使得数列递增。 考察修改后要满足的条件($b$数组为中序遍历后得到的数组),即 $b_{i}\leqslant b_{i + 1} - 1$ 所以有: $b_{i} - i\leqslant b_{ 阅读全文
posted @ 2016-11-15 20:31 阿波罗2003 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 这一道题的正解是倒推(然后有难度吗?),直接用results[i]表示第i位在某次操作完成后的位置(第几次呢,就看外重循环吧)接着可以分成三种情况 Code #include<iostream> #include<cstdio> #include<cctype> #include<cstring> 阅读全文
posted @ 2016-11-14 20:19 阿波罗2003 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目描述 农场上有N(1 <= N <= 50,000)堆草,放在不同的地点上。FJ有一辆拖拉机,也在农场上。拖拉机和草堆都表示为二维平面上的整数坐标,坐标值在1..1000的范围内。拖拉机的初始位置与所有草堆不同。 FJ开拖拉机时,只能平行于坐标轴(即东、南、西、北四个方向),而且每次开动的一段必 阅读全文
posted @ 2016-11-11 17:31 阿波罗2003 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 第一题就是一个很简单的dp,这么想就很好想出dp方程了 前面的序列是有1到(i - 1)组成,将i插在最前面,将会增加i - 1个逆序对 如果插在第一个数的后面,将会增加i - 2个逆序对。。。以此类推 于是得到了dp方程: 有一点长,也可以用f[i][j - 1]来状态转移,这样方程很简单得多, 阅读全文
posted @ 2016-10-29 16:09 阿波罗2003 阅读(201) 评论(0) 推荐(0) 编辑
摘要: LCA指的是最近公共祖先(Least Common Ancestors),如下图所示: 4和5的LCA就是2 那怎么求呢?最粗暴的方法就是先dfs一次,处理出每个点的深度 然后把深度更深的那一个点(4)一个点地一个点地往上跳,直到到某个点(3)和另外那个点(5)的深度一样 然后两个点一起一个点地一个 阅读全文
posted @ 2016-10-18 11:41 阿波罗2003 阅读(12620) 评论(0) 推荐(10) 编辑
摘要: 不解释,很简单,直接按照题目的方法构造就行了 Code 直接Tarjan,当然也可以直接用深搜(貌似要比Tarjan快一点,其实思路还是差不多的) Code(Tarjan) 1 #include<iostream> 2 #include<cstdio> 3 #include<cctype> 4 #i 阅读全文
posted @ 2016-10-17 15:02 阿波罗2003 阅读(283) 评论(0) 推荐(0) 编辑