小技巧
文章平均质量分 68
杂项
小酒窝.
研一菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
D. Tournament Countdown(交互题)
如果朴素询问的话,从最底层每次询问两个,分别询问每一局的胜者是谁,一共 n-1 局,得到最终胜者的询问次数为 n-1。这样将初始的 n 人四个四个求出初胜者,得到 n/4 个胜者,再不断进行下去,最终剩下 2 个或者 1 个。注意题目给的询问次数限制有提示作用,不是平白无故给你的,如果把这个看懂的话,题目也就差不多了。三局一共 4 人,分别记为 a, b, c, d。例如图中的 1, 2, 3, 4。每次可以询问系统两个人胜利的场次。次询问的条件下,求出最终的胜者。进行两两决斗,胜者进入下一轮。......原创 2022-08-07 11:03:27 · 364 阅读 · 0 评论 -
哈希小题两则 —— 哈希集合、哈希搜索路径
E - Prefix Equality —— 集合哈希题意给定一个长度为 n 的数列 A,数列 B。有 m 次询问,每次询问给出两个位置 x, y:数列 A 的前 x 个位置构成的集合 与 数列 B 的前 y 个位置构成的集合 是否完全相同?(集合不考虑元素顺序和元素重复)1≤N,Q≤2×1051 \leq N, Q \leq 2 \times 10^{5}1≤N,Q≤2×1051≤ai,bi≤1091 \leq a_{i}, b_{i} \leq 10^{9}1≤ai,bi≤109,1原创 2022-05-10 18:22:38 · 324 阅读 · 0 评论 -
CCPC威海 D. Period——预处理
题目来源题意:给定长度为 n 的字符串 s,一共 m 次询问。(1≤n,m≤106)(1 ≤n, m≤10^6)(1≤n,m≤106)每次询问给出一个位置 x,判断该位置之前有多少个位置 i 满足:s[1 ~ i] = s[n-i+1 ~ n]。分析:就是问,有多少个前缀等于后缀。(一开始题目理解错了,以为最长前后缀就可以。。后面又想到二分,wa了之后发现没有单调性ww,这个错误犯过几次了。。如果对于每次询问都遍历其前缀的话,虽然能用字符串哈希将每次比对的时间复杂度降为O(1),但是复杂度最原创 2022-04-02 23:05:23 · 625 阅读 · 0 评论 -
E - Average and Median(平均数,中位数转化,二分,dp)
Linking题意:从 nnn 个数中挑选若干数。条件:对于每个位置 iii,该位置和下一位置至少有一个被选。问,挑选的数的 平均数 和 中位数 最大分别为多少? (中位数:除2上取整)思路:发现如果一个数列满足其平均数不小于 mid,那么 mid 就可以往右走,继续判断,直到不满足了,那么这个 mid 就是能够满足的最大平均数。于是就可以用 二分答案。中位数同理。碰见平均数和中位数就想转化平均数:给出一个平均数 mid,判断是否能够挑选出若干数其平均数不低于 mid 呢?如果是,就往原创 2022-01-25 09:57:46 · 1034 阅读 · 0 评论 -
CF 1262C. Monsters And Spells(区间合并)
Linking题意:有 n 个怪兽,每只怪兽在第 kik_iki 个时间点出现,每个怪兽有血量 hih_ihi。k1<k2<⋯<kn(1≤ki≤109),h1,h2,…,hn(1≤hi≤ki≤109)k_1<k_2<⋯<k_n (1≤k_i≤10^9),h_1,h_2,…,h_n (1≤h_i≤k_i≤10^9)k1<k2<⋯<kn(1≤ki≤109),h1,h2,…,hn(1≤hi≤ki≤109)对于一个时间点,如果前原创 2022-01-22 15:32:31 · 326 阅读 · 0 评论 -
CF 1609D. Social Network(并查集,集合合并)
Linking大意:一共n个人,m个连接操作x y,让x和y成为朋友。现在对于 i 从1到m,可以选择 m 种操作中的 i 个进行,但是要使得前 i 个操作都要被满足。求朋友最多的那人的朋友个数。(2≤n≤103,1≤m≤n−1)(2≤n≤10^3,1≤m≤n−1)(2≤n≤103,1≤m≤n−1)思路:对于 i 从1到m遍历:如果当前的操作已经满足了,那么就可以连接其他的集合,使得某人的朋友个数最多,也就是使得一个集合最大。当前操作满足了,就多了一个连边的机会,k++。(k初始为1)如原创 2022-01-06 11:27:39 · 643 阅读 · 0 评论 -
Hidden Anagrams(哈希,前缀和)
题目链接题意:给出两个长度为n的字符串A,B,各自找出一个子串使其能够匹配,输出最长匹配串长度。匹配子串:其中各元素的种类和个数都相同。(一个串再排列后可变为另一串)思考:一开始想到的是二分,以为短的串匹配了,长的串才能匹配。其实不是这样。比如:abcd与bdac,长度为4匹配了,但长度为3并不匹配。当两个子串完全相等时是这样,但现在不考虑元素顺序,这种思路就不行了。正解是哈希。如果是朴素做法的话,应该是先遍历子串长度,再遍历A序列中子串开始的位置,再遍历B序列中子串开始的位置,再判断这原创 2021-10-03 20:53:21 · 135 阅读 · 0 评论 -
Codeforces Round #739 (Div. 3) D. Make a Power of Two(枚举、双指针)
将一个字符串进行若干次下列操作,使其变成2的幂数:1、 删除任意位置的元素2、 在最右端添加一个元素求最少操作次数。思考:能表示出来的2的幂数一共才60多个,所以直接遍历。遍历所有的可表示出来的2的幂数(63个),判断操作次数,取最小值。如何判断数x变成一个数y的最少操作次数呢?元素只能在最右端添加,所以x前面与y匹配的个数才是有效的。比如 10542 要 转化为 1024,只有102是有效的。求匹配个数,可以用双指针实现。要转化为y,就要删除x中多余的,然后加上原创 2021-08-19 10:24:10 · 118 阅读 · 0 评论 -
CF 1584D. Guess the Permutation(交互题)
题目链接题意:交互题。有一段长度为 n 的原始排列数组 (a[i] = i) 被 i,j,k 三个数字控制所翻转:区间 [i,j-1] 翻转,区间 [j,k] 翻转。(区间翻转:首位置和末位置互换,次位置和末次位置互换…)对系统最多可以有40次询问,每次询问输入 l,r,返回的是 [l,r] 这段区间中的逆序对数。求处理这段数组所用的 i,j,k。前言:第一次做交互题,先搞清楚玩法:可以向系统提出一定次询问,每次系统会给出问题的答案。需要根据这些答案,来推算出题目的答案。一般和二进制原创 2021-11-22 21:35:21 · 512 阅读 · 0 评论 -
K-clearing(map容器!)
题目大意:给出一个数列和一个数字k,如果这个数列中有数字k的话,就把数列中的所有数-1,重复这个操作,直到数列中没有数字k。思路:一开始是想着用模拟做的,一直循环-1,直到没有为止。。但是一看数列长度10^6,数字大小10 ^9,这样做肯定TLE;然后队友大佬给指了路,如果能一直减的话,这个数列中一定有从k开始连续的数,一共有多少连续的数,就能够减掉多少!(因为,第一次减1肯定会有k的,那么,如果能减两次就得有k+1了,如果能减3次就得有k+2…)之后,就可以将出现的数标记下来。然而,问题来了..原创 2021-04-10 15:31:35 · 153 阅读 · 0 评论