首页 > 其他分享 >Codeforces Round#905 解题报告

Codeforces Round#905 解题报告

时间:2023-10-26 19:12:48浏览次数:42  
标签:min shift 905 Codeforces 差分 max 区间 操作 Round

按理来说最近开始了一天一套 div2 计划,第一天做了一套 Div1,第二天做了 hustfc,第三天因为要赶 latex 期末考试,所以什么也没做。

明天写一下 hustfc 比较牛的几题。

A

暴力怎么做,是不是加加加,然后判断。

B

本质上是让长度为 \(i\) 的后缀全是 \(0\) 那么找到最短的有 \(i\) 个 \(0\) 的后缀求一下逆序对就行了。

C

注意到 \(\min(a)\) 选 \(1\) 或者 \(m\) 最好使,暴力找到 \(\max(a)\) 即可。

差分哦

D

对 \(x\in [1,n]\) 计算是不是在 \(a\) 中存在 \(x\) 的因子。再通过差分计算有多少对子的 \(\rm{gcd}\) 是 \(t\in[1,n]\) 不能输入一个 \(a_i\) 标记一下哦!

E

策略大概就是笛卡尔树上 父亲权值减去儿子权值 × 儿子控制区间长度。换一个想法,如果出现了 \(a_l\ge a_k\le a_r\) 且 \(a_k=\max\limits_{i=l}^r\{a_i\}\) 则需要进行 \(\min\{a_l,a_r\}-a_k\) 次操作。

所有操作其实和 \(k\) 没什么关系,主要是 \(\min\{a_l,a_r\}-a_k\) 的数值。看到 shift,自然想到了复制一倍接到原序列的后面。考虑一个 \((l,r,v)\) 的操作区间。

  • 如果 shift 之后不会破坏 \([l,r]\) 区间的完整性,或者说 shift 的次数不超过 \(\min\{l,n-1\}\) 而且不小于 \(\max \{r-n+1,0\}\),那么对操作代价的贡献是一定的,可以差分进行区间加。

  • 否则破坏了区间的结构。假设 shift 之后剩下了 \([t,r]\) 在序列开头。这时候可能出现 \(k<t\) 而导致可能 \([t,r]\) 无法通过这轮操作把所有元素变成一样的。但是不难发现可以这个问题通过操作 \((k,r,v')\) 来实现,所以进行 \(v\) 次操作即可。

    不难发现此时操作区间长度和 shift 的次数有关,而且是一个二次函数。而对于所有产生间断的情况的贡献全都是二次函数,同一个操作对这些 shift 的二次函数的系数的贡献是一样的,可以进行差分处理。

好久没见到这样的题啦。好有意思。

标签:min,shift,905,Codeforces,差分,max,区间,操作,Round
From: https://www.cnblogs.com/yspm/p/CF1884Solutions.html

相关文章

  • Pinely Round 2 (Div. 1 + Div. 2) (CF1863)
    本来开了某场远古Div1,然后学了一堆前置知识至今仍然不会E。换一场写来得及吗?A.Channel模拟,略。B.SplitSortDescription给你一个长度为\(n\)的排列。每次操作你可以选择一个数\(x\),然后类似于快速排序地把小于\(x\)和大于等于\(x\)的分成两个序列,把它们拼在一起......
  • Codeforces Round 904 (Div. 2)
    A.没想到是暴力,做的很晚B.手玩一下即可C.MediumDesign给定一个长为\(n\)的数组\(a\),和若干条线段\([l_i,r_i]\),你可以选择这其中的任何若干条线段,并让\(a_l\sima_r\)均\(+1\).请你计算可以得到的\(\max(a)-\min(a)\).这题本来想的是先把所有的加进去,得到......
  • 「题解」Codeforces Round 905 (Div. 3)
    before终于有一篇题解是一次性更所有题的了。A.MorningProblemA.MorningSol&Code根据题意模拟即可。#include<bits/stdc++.h>typedeflonglongll;intmin(inta,intb){returna<b?a:b;}intmax(inta,intb){returna>b?a:b;}intT;int......
  • 多模态大模型的grounding能力
    数据集a)QW-VL:VisualGenome,RefCOCO,RefCOCO+,RefCOCOg,b)CogVLM:Visual7W,Flickr30K-Entitiesc)Kosmos2:GRITOFAUnifyingArchitectures,Tasks,andModalitiesThroughaSimpleSequence-to-SequenceLearningFramework将多模态任务统一为seq2seq,最大模型900M文本,图片......
  • 【算法题】2905. 找出满足差值条件的下标 II
    题目:给你一个下标从0开始、长度为n的整数数组nums,以及整数indexDifference和整数valueDifference。你的任务是从范围[0,n-1]内找出2个满足下述所有条件的下标i和j:abs(i-j)>=indexDifference且abs(nums[i]-nums[j])>=valueDifference返回整数数组a......
  • Codeforces 1786 / Codeforces Round #850 (Div.2)
    CodeforcesRound#850(Div.2)https://codeforces.com/contest/1786ProblemA1Non-alternatingDeck(easyversion)ProblemA2AlternatingDeck(hardversion)注意到最多进行\(O(\sqrtn)\)步,直接模拟即可。ProblemBCakeAssemblyLine题目保证了一定是\(n\)个蛋......
  • C#中Math.Round(指定四舍五入)、Math.Ceiling和Math.Floor的用法
    1.Math.Round:四舍六入五取偶Math.Round(17.475728155339805,2,MidpointRounding.AwayFromZero)=17.48Math.Round(0.0)//0Math.Round(0.1)//0Math.Round(0.2)//0Math.Round(0.3)//0Math.Round(0.4)//0Math.Round(0.5)//0Math.Round(0.6)//1Math.Round(0.7)//1Math.Round(0......
  • Meta Hacker Cup 2023 Round 1 题解
    ProblemA:HereComesSantaClaus给一个数列,要求分成若干组,要求每组至少2个数,使得所有组中位数的最大值与最小值之差尽量大,求这个值。#include<bits/stdc++.h>usingnamespacestd;#defineFor(i,n)for(inti=1;i<=n;i++)#defineFork(i,k,n)for(inti=k;i<=n;i++)#define......
  • VK Cup 2016 - Round 1 (CF639)
    A.BearandDisplayedFriends这是Div2的题,不写。B.BearandForgottenTree3这种东西怎么评蓝的?Description给定\(n,d,h\),构造一棵有\(n\)个点,直径为\(d\),高度为\(h\)的树。\(n\le10^5\)。Solution首先\(d>2h\)是无解的,\(d=h=1\)且\(n>2\)的时候也无解......
  • Codeforces Round 905 div2 F题
    记答案为\(ans_i\),表示从1到i次修改出现的字典序最小的数组a,\(c\)数组表示\(ans_i\)出现之后,所有修改的累加和。用一个vector存一下\(ans_i\)之后的所有修改。从1到q遍历每一次修改时,对\(c\)数组进行区间赋值操作,如果\(c\)数组中第一个不为0的数<0,那么\(ans_i\)加上\(c\)中的......