随笔分类 -  题解

1
摘要:注意到,要求一个值域是 {1,1} 的序列的子段和有多少种不同的取值,实际上就是求它的最小子段和 a 到最大子段和 b 之间有多少个整数。因为可以证明,每个处于 [a,b]Z 中的数,都至少有一个子段与之对应——要得到和为 b1 的子段 阅读全文
posted @ 2024-12-27 14:52 XYukari 阅读(11) 评论(0) 推荐(1) 编辑
摘要:“同种颜色的边不成环”可以等价转化为“同种颜色的边构成森林”,所以同种颜色的边最多 2n+m1 条。总共有 n 种颜色,所以合法的最大边数为 (2n+m1)n。 有解条件 (2n+m1)n2nm,化简得 m2n1。 处理完了无解情况,下 阅读全文
posted @ 2024-12-20 13:39 XYukari 阅读(15) 评论(0) 推荐(0) 编辑
摘要:发现 k109,肯定不能直接模拟了。但是注意到,如果最小值 min×m>max 存在,我们可以直接给每个数乘上 mkn,最后再处理剩下的 kmodnm 即可,这个复杂度是 阅读全文
posted @ 2024-12-14 20:40 XYukari 阅读(8) 评论(0) 推荐(0) 编辑
摘要:C - 11/22 Substring 枚举每个 /,从 / 出发向左右两边扩展到最远。因为每个点最多能被访问一次(向右只扩展 2,向左只扩展 1),复杂度为 O(n)。 int ans = 0; for (int i = 0; i < n; i++) { if (s[i] != '/') 阅读全文
posted @ 2024-12-11 13:16 XYukari 阅读(7) 评论(0) 推荐(0) 编辑
摘要:C - Kaiten Sushi 把寿司都放到一个堆里,从前往后扫 A 数组,如果当前食客 Ai 小于等于堆顶,就取出堆顶,记录这份寿司被第 i 个人吃掉。复杂度 O(nlogm)。 D - Keep Distance 搜索回溯,但每一步从 10 枚举到 阅读全文
posted @ 2024-12-07 19:35 XYukari 阅读(11) 评论(0) 推荐(0) 编辑
摘要:A. King Keykhosrow's Mystery 题意可以转化为存在 k1,k2 使得 m=a×k1+n=b×k2+n。消去余数 n 得到 a×k1=b×k2,即 a,b 的公倍数。所以 阅读全文
posted @ 2024-12-01 18:55 XYukari 阅读(37) 评论(0) 推荐(0) 编辑
摘要:B. Shohag Loves Strings 注意到两个相同字母 aa 的 f(p) 为偶数,所以如果找到两个相邻相同字母输出即可。如果没有相邻相同的两个字母,则说明字符串相邻的字母一定不同,再考察三个相邻的字母的情况,发现三个字母均不同,如 abc 时 f(p) 也为偶数,又找到 阅读全文
posted @ 2024-11-25 21:00 XYukari 阅读(9) 评论(0) 推荐(0) 编辑
摘要:A. lz的吃饭问题 print("lz" if (lambda a,b: a*b)(*map(int, input().split())) < (lambda a,b: a*b)(*map(int, input().split())) else "gzy") B. lz的数字问题 把数字按字符串处 阅读全文
posted @ 2024-11-23 15:13 XYukari 阅读(23) 评论(0) 推荐(0) 编辑
摘要:首先考虑计算 f([a1,a2,,ak]):发现对于在同一条斜线上的 ai, aii 的值是相同的。统计出 aii 的众数 x,则 kx 次操作就可以将这一段变成连续数组。 处理好了第一个长度为 k 的段,向右滑 阅读全文
posted @ 2024-11-10 16:55 XYukari 阅读(4) 评论(0) 推荐(0) 编辑
摘要:D 根据题目给出的构造方式,Sn 的长度会达到 2n 数量级,没法求出 Sn,所以考虑递推。 设 dpi,l,rSiT[l,r] 区间以子序列的方式出现了多少次,可以写出转移方程:\(dp_{i,l,r} 阅读全文
posted @ 2024-11-10 16:53 XYukari 阅读(7) 评论(0) 推荐(0) 编辑
摘要:传送门。显然可以 O(n) 地找到 pos 所属的 si 段,所以我们只需要得到 si 即可。不难发现,删除元素的规则应该是从 1n 枚举每个元素,删除它前面“紧邻的”比他大的元素(例如对于 eadcb 中的 b 删除掉 dc)。 赛时一直在 阅读全文
posted @ 2023-10-10 20:01 XYukari 阅读(70) 评论(0) 推荐(0) 编辑
摘要:传送门。每个数作为最大值时的贡献显然是 ai×cnticntiai 在多少种染色方案中作为最大值出现,我们主要来对每个数求 cnti。 我们对于从 1n 枚举元素,求出它和能被它染成绿色的所有元素中的最大值 \(mx 阅读全文
posted @ 2023-10-09 14:28 XYukari 阅读(20) 评论(0) 推荐(0) 编辑
摘要:方法一:差分 因为是先修改后查询,很容易想到差分,但因为数据值域 [109,109] 过大,所以不能使用差分数组,而应用 map 进行存储,如代码所示: map<int, int> diff; // 正常进行差分操作 for(auto& f : flowers) diff[f[0]]+ 阅读全文
posted @ 2023-09-28 16:22 XYukari 阅读(8) 评论(0) 推荐(0) 编辑
摘要:传送门。有这样一个结论,由 x 得到的反转区间 [a,b] 的对称轴就是 x 所在的题给区间 [l,r] 的对称轴,且 [a,b][l,r]。 这个结论有什么用?如果没有这个结论,我们离线 q 次询问得到的是一系列散乱的反转区间。因为反 阅读全文
posted @ 2023-09-27 08:44 XYukari 阅读(89) 评论(0) 推荐(0) 编辑
摘要:传送门。有这样一个结论:一个后缀中[i+1,n] 中所有的正数都可以被取到,所以维护一个正数后缀和 si,枚举每个位置 i,如果 i 为奇数,答案对 ai+si+1max,否则对 si+1max。 下面证 阅读全文
posted @ 2023-09-26 13:34 XYukari 阅读(38) 评论(0) 推荐(0) 编辑
摘要:异或和按位处理的典型例题。要求所有子区间异或和乘区间长度的总和,朴素的方法是 O(n2) 地枚举区间,显然无法通过。 因为涉及异或和,而异或运算不进位,故自然地想到把 ai 写成二进制形式,单独研究每一位的贡献,最后再合并。这是处理此类问题的一般思路。 1. 二进制拆分 比方说, 阅读全文
posted @ 2023-09-26 12:54 XYukari 阅读(155) 评论(0) 推荐(0) 编辑
摘要:基环树上的“追及相遇”问题。 考虑什么情况下,Valeriu 能“无限期”地从 Marcel 手中逃离。参考样例 1,我们发现当 Valeriu 进入基环树的环中,他总能通过预判,逃往 Marcel 的反方向,避免被抓;而如果两者都在子树中,Marcel 就能步步紧逼,将 Valeriu 堵在叶子结 阅读全文
posted @ 2023-09-22 13:56 XYukari 阅读(12) 评论(0) 推荐(0) 编辑
摘要:传送门。要求使得区间和小于 k 的子区间长度,显然可以二分处理。二分区间长度,枚举区间左端点,check 两项内容:区间是否合法(符合 himodhi+1=0 ),区间和是否小于 k。对于当前区间长度,只要有一个区间满足条件,即返回真。 区间和可以通过前缀和 \ 阅读全文
posted @ 2023-09-22 11:05 XYukari 阅读(39) 评论(0) 推荐(0) 编辑
摘要:考查异或的基本性质。 对于操作2,用两个变量 X0,X1 记录 si=0/1 位置的异或和,在查询时直接输出即可。那么,在操作 1 如何更新 X0,X1? 如果操作 1 只改变一个数,比如将 si0 改为 1,那么我们只需将 \(a_ 阅读全文
posted @ 2023-09-21 21:21 XYukari 阅读(19) 评论(0) 推荐(0) 编辑
摘要:传送门。博弈论问题基本思路是先确定“状态”,即先手必胜或者先手必败。这里定义“必胜/必败”为走到当前格子的人的结局(赛时因为搞混了走入的人和走出的人,导致浪费大量时间)。 不难发现,一个位置是“必胜”还是“必败”完全取决于它前面的位置——如果前面有(能合法走入的)“必胜位置”,则当前位置一定是“必败 阅读全文
posted @ 2023-08-31 19:26 XYukari 阅读(14) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示