上一页 1 2 3 4 5 6 ··· 21 下一页
摘要: 传送门 题目:简单理解就是,我们需要开车从s点到t点。车上有一个导航,如果当前点为x,则导航会自动为你提供一条从x到t的最短的路线(如果有多条,则随机选一条),每走到下一个点则会实时更新最短路线,当然,如果你按着之前提供的路线走到下一个点,则路线不会更新。题目提供一条确定的路线,如果按着提供的路线走 阅读全文
posted @ 2020-12-21 19:55 SummerMingQAQ 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 传送门 思路: 我们知道b = [a, a + m], 我们需要满足Gcd(a, m) = Gcd(b, m), 假设g = Gcd(a, m),那么Gcd(a, m) = Gcd(a + k * g, m)(a + k * g ∈ b),两边同除以g, Gcd(a / g, m / g) = Gc 阅读全文
posted @ 2020-12-21 10:25 SummerMingQAQ 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 思路: 设tx为t类别字符的个数。 ①对于长度小于2的t明显是"YES"②对于字符类别只有1个的t明显是"YES"③对于字符类别有2个的t,如左上图:如果str[l] != str[r],那么我们构造的t也应该是str[l] != str[r],且s字串和t的str[l]和str[r]是相反的,即如 阅读全文
posted @ 2020-12-03 19:35 SummerMingQAQ 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 传送门 思路: 我们需要抓住唯一的重要信息点"ci",我的做法也是在猜想和尝试中得出的,之后再验证算法的正确性。 我们在构造中发现,如果树上出现了相同的数字,则会让树的构造变得不清晰。 我们尝试用不同的数值a[1]~a[n]去构造树,我们唯一知道的信息就是"ci",如果a[1]~a[n] = 1~n 阅读全文
posted @ 2020-12-01 20:43 SummerMingQAQ 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 传送门 思路:对于每一个询问,我们都需要知道,从根节点出发,重量为X的球到达v点期间,往左走了几个点(比X大的几个,比X小的几个),往右走了几个点(比X大的几个,比X小的几个)。我们可以用dfs从根节点出发,先遍历左子树,再遍历右子树,对于遍历到的当前节点,我们查看是不是有到该点的询问,如果有,就需 阅读全文
posted @ 2020-11-21 19:32 SummerMingQAQ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 传送门 思路:我们需要求距离为d+1的LIS,我们可以用延迟更新方法,a[]为该点数值,f[]为以改点结尾的LIS长度。当inx - d - 1 > 0时,我们才更新这个点的信息,这样就解决了距离的问题。 1 #include <iostream> 2 #include <cstdio> 3 #in 阅读全文
posted @ 2020-11-13 20:03 SummerMingQAQ 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意:一条水平直线上有树和蘑菇,已知每颗树的坐标,高度和向左,向右倾倒的概率,已知蘑菇的坐标和该蘑菇的价值,求蘑菇价值总和的期望值。 思路:可以知道一颗树的倾倒可以看做一个区间的概率更新,我们可以离散化蘑菇的坐标点,然后区间更新该区间所有蘑菇的概率,然后遍历所有蘑菇的期望值。 这里我们可 阅读全文
posted @ 2020-11-13 19:53 SummerMingQAQ 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 传送门 样例(x): 8 15 16 17 19 27 36 29 33 结果(t1) 15 15 16 18 26 35 28 32 思路:我们可以把最左端和最右端当做两个水龙头,每个水龙头流量的上限就是a[x]. 我们通过贪心,我们尽可能的使用左边的流量,例如样例(x),我们流到第二个点的时候, 阅读全文
posted @ 2020-11-04 09:22 SummerMingQAQ 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 传送门 思路:根据三角形性质,我们容易得到: a + gcd(a, b)^2 > b a + b > gcd(a, b)^2 b + gcd(a, b)^2 > a 推出: a - b < gcd(a, b)^2 < a + b ① 假设a为偶数,可以得到 a + 2或者a - 2与a配对一定满足 阅读全文
posted @ 2020-10-19 23:08 SummerMingQAQ 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目:给定两个整数u和v,找到最短的数组,使其满足:该数组的(xor)和为u,累加和为v。 思路:我们组成的数组累加和为v,我们可以用二进制表示v,我们知道(xor)会导致相同位为0。我们可以利用前面的内容,拆分v每一位上的信息,例如"100",我们可以拆成两个"010",我们可以用一个数组 阅读全文
posted @ 2020-08-22 22:30 SummerMingQAQ 阅读(156) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 21 下一页