摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5172 判断一个区间是否为全排列是: 1、区间总和 = (1 + R - L + 1) * (R - L + 1) / 2; 2、区间没有重复数字 记录数组a[i]表示第i个数上一次在那个位置出现。 那么最需要在[
阅读全文
摘要:https://www.hackerrank.com/contests/101hack38/challenges/sorted-subsegments/problem 首先要注意到可以二分答案,比如当前位置是4,二分答案是2,是可以的,往大的找找就好。 然后把 >= 2的变成1, < 2的变成0,然
阅读全文
摘要:http://www.ifrog.cc/acm/problem/1117?contest=1016&no=1 其实我是第一次这样用线段树。 首先把所有出现过的数字全部离散化。那么数字就是从[1, 100000]了。 把他们看成一个个独立的节点。每次插入一个数字,就在那个位置加1. 那么线段树维护区间
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6012 我们希望能够快速算出,对于每一个温度,都能够算出它在这n颗植物中,能得到多少价值。 那么,对于第i科植物,在[0, L[i] - 1]这些温度中,得到的价值是低温那个价值,同理在[L[i], R[i]]中,
阅读全文
摘要:https://www.hackerrank.com/contests/101hack44/challenges/palindromic-subsets 如果有3个a。2个b。1个c。 每个a看成不同的,那么能选出多少个不同的回文串呢? 从回文串入手,因为回文串最多只有1种字母是奇数个。 那么,如果
阅读全文
摘要:http://poj.org/problem?id=2104 由于这题的时间限制不紧,所以用线段树水一水。 每个节点保存的是一个数组。 就是对应区间排好序的数组。 建树的时间复杂度需要nlogn 然后查询的时候,对于线段树覆盖了的区间,可以直接二分即可。 查询复杂度需要logn^2 所以复杂度需要m
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4366 今日重新做了这题的分块,果然是隔太久了,都忘记了。。 首先,用DFS序变成一维的问题 关键是它有两个权值,该如何处理呢? 首先假设我们的DFS序列是List, 那么,对其进行分块。对于每一个块,先按能力排序
阅读全文
摘要:Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5560 Accepted Submission(s): 2532 Pro
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1542 我的做法是把x轴的表示为线段,然后更新y 不考虑什么优化的话,开始的时候,把他们表达成线段,并按y排序,然后第一次加入线段树的应该就是最底下那条,然后第二条的时候,我们可以询问第二条那段区间,有多少是已经被
阅读全文
摘要:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 给定一串平衡的序列,要求交换两个位置之后,问其是否还平衡。 首先要注意到交换的是两个位置,这两个位置没有大小之分,所以要判断是否swap他们,保持相对大小 然后如果我们把'('当成是1,把')
阅读全文
摘要:首先说下我写的线段树吧。 我是按照线段树【完全版】那个人的写法来写的,因为网上大多数题解都是按照他的写法来写。 确实比较飘逸,所以就借用了。 节点大小是maxn是4倍,准确来说是大于maxn的2^x次方的最小值的两倍。 lson 和 rson 用宏定义写了。因为是固定的量。 线段树不必保存自身的区间
阅读全文
摘要:给定一颗树,每个节点都有忠诚和能力两个参数,随意指定一个节点,要求在它的子树中找一个节点代替它,这个节点要满足能力值大于它,而且是忠诚度最高的那个。 首先,dfs一下,处理出L[i], R[i]表示dfs序,则R[i] - L[i] + 1 就是当前i这个节点拥有的子孙个数。 对于一颗树,dfs的时
阅读全文
摘要:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1453、 题目:给定一个大小为100000的数组,里面的数字最大也是100000。现在叫你求出一段子序列,使得他们任意两个数差的绝对值都不能超过k 其实这题的关键是数字的范围,不超过100000,这样
阅读全文