首页 > 其他分享 >2023年 2月 做题记录

2023年 2月 做题记录

时间:2023-07-13 22:44:16浏览次数:49  
标签:符合要求 记录 线段 2023 更新 答案 ans 区间

前言:
记录2月一些好题的解法,同时有可能会补以前写过的题目。

CF718C Sasha and Array

对于每一个下标 \(i\) 记数对 \(S_i=(a_i, b_i)\)。代表第 \(i\) 个位置斐波那契数列的前第 \(0\) 项和第 \(1\) 项是 \(a_i\) 和 \(b_i\)。例原数组中 \(a[3]=3\),则 \(S_{3}=(1, 2)\)。考虑对 \(a_i\) 加 \(x\),\(S_i\) 变成了原本的 \(a_i\) 和 \(b_i\) 向后推了 \(x\) 项后组成的新数对。
继续考虑区间的查询和更新。我们用线段树维护。对于区间 \([l, r]\)。在线段树上维护\(\displaystyle S_{[l,r]}=(\sum_{i=l}^{r}a_i,\sum_{i=l}^{r}b_i)\)。统计区间 \([l, r]\) 的时候返回 \(b_{[l, r]}\)。修改时,有性质,若有若干个满足 \(a_{i}=a_{i-1}+a_{i-2}\) 数列,则数列 \(f\) 满足 \(\displaystyle f_{i}=\sum a_{i}\),则 \(f\) 同样满足 \(f_{i}=f_{i-1}+f_{i-2}\)。所以更新时直接将 \(S_{[l, r]}\) 按斐波那契的规律向后推即可。

P3616 富金森林公园

洛谷的题解中给出了一些根据高度凹凸来讨论答案变化的做法,但讨论较为复杂,而且细节较多。这里给出一种较为清晰的解法。将露出水面的相邻山峰进行连边。易得,在任一水面的情况下,答案为露出山峰所构成的连通块的数量。而联通块的数量不好直接表示,转化为露出水面的山峰数减去露出水面的边数(即边连接的两山峰均在水面上的边),因为在任意两座露出的山峰间建边,都会使连通块的数量少 \(1\)。先将初始情况时,不同水面时的答案预处理出来,放进一个数组里,即 \(ans[i]\) 表示水面高度为i时的答案。考虑更新一座山峰,\(ans\) 数组会如何变化,发现需要区间修改。使用线段树维护即可。

CF474F Ant colony

区间不符合要求的数难以统计,可以转换成区间长度减去区间符合要求的数。区间中符合要求的数,一定是区间所有数的 \(gcd\)。在线段树上记录区间最小值及其出现次数和区间 \(gcd\)。若区间最小值等于区间 \(gcd\),则符合要求的数既是区间最小值的出现次数;否则区间里没有符合要求的数。

CF803G Periodic RMQ Problem

维护动态开点线段树,不建出真实的树,只有在更新和查询需要时新建节点。可以发现,在新建节点时,此节点的区间之前没有被更新过,我们需要给其初始状态,故使用st表实现 \([1, n]\) 内最小值的 \(O(1)\) 查询。

CF718C Sasha and Array

线段树维护区间和和区间加标记。这题主要困难在区间标记的下传。可以参考CF718C Sasha and Array的做法,维护起始的数对作为标记,更新时使用矩阵维护标记下传和区间和更新(斐波那契的转移和求和矩阵)。

P4247 [清华集训2012]序列操作

有 \(c \le 20\),可以在线段树上维护答案数组 \(ans\),\(ans[i]\)表示选 \(i\) 个数的答案。
1.区间信息合并。易得有 \(\displaystyle ans[i]=\sum_{j=0}^{i}ans_l[j]*ans_r[i-j]\)。其中 \(ans_l\) 和 \(ans_r\) 是线段树上左右子区间的答案数组。
2.区间取相反数方式。对于 \(ans[i]\),若 \(i\) 为偶数,答案不变;若 \(i\) 为奇数,答案变成相反数。

3.区间加的更新方式。较为困难,待补全。

2月份开学,写博客的时间较少,故停更等待有时间继续。

标签:符合要求,记录,线段,2023,更新,答案,ans,区间
From: https://www.cnblogs.com/edisnimorF/p/17552403.html

相关文章

  • 暑假训练2023.7.13
    CodeforcesRound884(Div.1+Div.2)A.SubtractionGame简单构造,输出a+bB.Permutations&Primes2和3都是质数,1不是,因此满足条件的区间一定包含1。把1放到序列最中间,2和3放到两端其他数字随意排列,可以证明此序列得到的素数mex的个数最大,为\(\lfloor\frac{n+1}{2}\rfl......
  • 2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串
    2023-07-13:如果你熟悉Shell编程,那么一定了解过花括号展开,它可以用来生成任意字符串。花括号展开的表达式可以看作一个由花括号、逗号和小写英文字母组成的字符串定义下面几条语法规则:如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。R(x)={x}例如,表达式"a"......
  • 2023.7.13
    今天是养生开始的第一天,我昨天在小诊所买了一些养生的东西,泡一杯茶水,吃一些东西,为未来的消耗做好准备,早上在家里练习乒乓球,中午做一碗番茄炒蛋,下午看了看篮球赛,晚上学习编程1小时,生活再简单不过,不过看你怎么过,世界没有那么难过,就是一定要过去,心平气和地过一天,日复一日,不断进步。......
  • [总结]2023-7-13A组模拟赛
    [总结]2023-7-13A组模拟赛P1心路历程发现今天的题目描述很直接,比昨天的好懂。然后发现T2似乎是数据结构,好像找到了归宿,心里踏实了一点。之后就发现自己不会的计数题但是有两道:T1和T3。T4还以为是板子题,然后发现读不懂。于是就开始干T2(终于不是从T1开始做了!!!),一开始以为要用高级......
  • 2023年7月13日,Stream流,Stream流的获取,Stream流中间聚合操作,Stream流终结操作,Calendar
    Stream流1.单列集合的Stream流获取packagecom.wz.stream01;importjava.util.Arrays;importjava.util.HashSet;importjava.util.List;importjava.util.function.Consumer;importjava.util.function.Predicate;importjava.util.stream.Stream;publicclassstreamDe......
  • 2023.07.13
    2023.07.13CF865DBuyLowSellHighCF32EHide-and-SeekCF266DBerDonalds\(O(n^3)\)预处理出任意两个点间的最短距离\(d(u,v)\)。若餐厅定在边\((u,v,w)\)上,且与\(u\)点距离为\(x\),则最远距离为\(\max\limits_{i=1}^{n}(d(u,i)+x,d(v,i)+w-x)\)。取......
  • Golang 刷题记录
    刷了大概50道题,我个人的结论:在中等难度题中,使用Golang的效率完全是不输于C++的,特别是在Golang没有C++这么完善的STL库的情况下,只借助container包里的三种数据结构,大部分题时间、空间复杂度都可以媲美C++。当然这个hard题是啥情况我这个蒟蒻就不知道咯。再刷洛谷......
  • SMU Summer 2023 Contest Round 3
    SMUSummer2023ContestRound3A.CurriculumVitae题意就是要求\(1\)后面不能有\(0\)的情况下的子序列最长长度,也就是求一个最长不下降子序列,不过由于这是个\(01\)序列,也可以分别做一个前缀和求出\(0\)的数量,后缀和求\(1\)的数量,最后跑一遍循环,找一个最大值即可,这里......
  • 记录
    亚稳态(由边沿提取温故)定义触发器输出信号无法在规定时间内输出确定的状态同步电路定义钟控单元全由一个统一的全局时钟控制避免竞争冒险触发器只在时钟边沿变取值,减少毛刺和噪声缺点到达各个触发器有延迟时钟可能抖动延时单元消耗面积,功耗大异步电路定......
  • 2023-07-13 【动态规划】爬楼梯
    题目链接:爬楼梯详细:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1阶+1阶2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1阶......