首页 > 其他分享 >Codeforces Round 890 (Div. 2) supported by Constructor Institute A-E1

Codeforces Round 890 (Div. 2) supported by Constructor Institute A-E1

时间:2023-08-07 19:56:46浏览次数:37  
标签:890 bi submission Institute 最大值 supported mid 1856 codeforces

A n=50非常小 所以直接暴力枚举 枚举每次把某个数以下的全部减完 然后看一下是否上升就行 

https://codeforces.com/contest/1856/submission/217275334 

 

B题直接 贪心 前面优先放最小的 最后一个放最大的  然后如果重复了就到前面去看能不能调整一下 

https://codeforces.com/contest/1856/submission/217288823

 

C题 首先我们考虑最后形成的是一个什么形状 手玩后发现应该从最高的值那里开始以此递减 不够的补上 直到遇到一个不用补的 并且最后一个数字补不了 

形象化的来说 假设最高点为i 则改变后的为bi , bi-1 .... bj 且abs(bi+1 - bi) == 1 

比如现在有 1,3,4

我假设现在最大值为5 ,并且从第一个位置开始 

所以变化后第一个数为5 第二个数发现比4要小 (如果比4大我们直接结束了 因为你要让当前位置为某个值 他后面那个数必须得比这个值-1要大 , 3 , 3 操作一次只能变成4,3) 然后给他补成4 , 到第三个数发现不用补了 所以直接break 然后算一下花费就可以了

注意如果到了最后一位发现最后一位不满足 直接break 因为不可能给最后一位补

所以最后我们二分最大值 枚举从每个位置开始是最大值 看是否满足就行 

https://codeforces.com/contest/1856/submission/217291691 

D题 

考虑如果询问q(l , r)和q(l,r-1) 假如 二者相等 证明没有出现新的逆序队 即a【r】 为最大值 而题目恰好让我们维护的是最大值 

令f(l,r) 为最大值的下标 mid = (l + r) >> 1 ; 

令i为f(l , mid) j 为f(mid+1,r) 

如果q(l , j)==q(l,j-1)证明a[j]是l到j的最大值 而j又是mid+1到r的最大值 所以f(l,r)=f(mid+1,r) 

反之 则说明前面有比mid+1到r的最大值还大的 f(l,r)= f(l,mid)

每次转移前询问两次即可 

 

E1 对于每个节点作为lca时统计贡献 则其贡献只取决于有多少节点大于它 多少节点小于它 并且这两部分的点一定来自于不同的子树 也就是说 要么一整颗字数都大于它 要么一整颗子树都小于它 

假设大于它的点有x个 小于有y个 贡献为x*y 

现在问题转化为怎么分配最大 

和一定差小积大 

尽可能的平均分配就行 所以应该我们要计算出所有分配的情况 然后找最平均那个  

算分配情况用一个典型的背包就行 

复杂度n^2 

https://codeforces.com/contest/1856/submission/217350235 

 

总结 写了四个题 d是补的 大概知道是像线段树一样二分着问下来 但是那个性质没摸出来 不知道咋转移 还是差了点意思 

标签:890,bi,submission,Institute,最大值,supported,mid,1856,codeforces
From: https://www.cnblogs.com/Vellichor/p/17612559.html

相关文章

  • Codeforces Round 890 (Div. 2)
    A.TalesofaSort题目大意Alphenhasanarrayofpositiveintegers\(a\)oflengthn.Alphencanperformthefollowingoperation:Forall\(i\)from1ton,replace\(a_i\)with\(\max(0,a_i−1)\).Alphenwillperformtheaboveoperationuntil\(......
  • Codeforces Round #890 Div.2
    link题号:1856A~E2A题面:给定一个正整数\(n\)和一个长度为\(n\)的序列\(a\),重复执行以下操作直至\(a\)序列单调不减:\(\forall1\lei\len\),\(a_i=\max(a_i-1,0)\)。求一共需要执行多少次操作。多测,共\(t\)组数据。对于所有数据,保证\(1\let\le500\)......
  • Codeforces Round 890 (Div. 2) A-E1
    A.TalesofaSort题意:给出一个长为n的数组a,每次操作可以使得所有的数-1,最小不会小于0,问至少需要多少次操作才能使得a变得有序。Solution把数组a排序,从大到小遍历,如果当前的\(a[i]\)不是原来的话,那么要想让它有序,必须进行当前的\(a[i]\)次操作,这样才能使得它有序voidsolve()......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute
    Preface现在开始严格按照双号上分法来打CF了,大致就是每次比赛都拿两个号中分较少的那个打,这样可以保证两个号的最高分不降然后昨天打完就后悔了,没有拿hl666那个号打导致没抓住难得的上分机会,本来可以打到橙名渡劫局的但分全加在Kusanagi_Misuzu那个号上了不过昨天这场其实可以......
  • 【题解】Codeforces Round 890(CF1856)
    赛时过了A-E1,rk195可惜是E2傻逼了不会背包优化了,直接连普及组水平都不到了。A.TalesofaSort题目描述:给定长度为\(n\)的序列\(a\),每次操作为对于所有\(i\)将\(a_i\)变为\(\max(a_i-1,0)\),询问最少多少次操作之后可以让序列\(a\)单调不降。题目分析:唯一能改变......
  • Codeforces Round 890 (Div. 2)
    TalesofaSort题解找到最大的能够产生逆序对的数即可暴力\(O(n^2)\)枚举即可constintN=2e5+10,M=4e5+10;intn;inta[N];voidsolve(){cin>>n;intans=0;for(inti=1;i<=n;++i){cin>>a[i];}fo......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute ————C - T
    关于这场div2,只能说一言难尽C题可以二分的,赛时看到n<=1000,直接往\(O(n^2)\)考虑,想了一会贪心的话能写出来,但是,细节太多没调出来,G掉打分。\(O(n^2)\)做法:思路:每次让i为起点,往前贪心枚举,并且当前位置如果满足,也要枚举当前区间,细节就是要注意上下限,赛时,漏了一种上界小于下届的情......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute 题解
    A.TalesofaSort关键就是找逆序对记一组逆序对下标为\(l,r\),则求出最大的\(a_l\)即可B.GoodArrays记要构造的GoodArray为\(b\)前置:\(\forall1\lei\len,b_i=1\)然后\(O(n)\)扫一遍看一下有没有重复,有重复就\(b_i\leftarrowb_i+1\)扫完之后,记\(sum=\sum_......
  • msm8909_wk2124_SPI转串口485
    项目使用的是高通的msm8909平台,采用广和通SC806开发板,开发环境采用Ubuntu18.04。SC806默认有两路串口,对项目来说不够使用,需要进行转接,所以采用了wk2124将一路SPI转换为4路串口,然后再加485芯片,转换为4路485接口。接下来详细看看整个配置过程。概述说明:本文档会将为开提供的官方文......
  • 漏洞复现报告:CVE-2019-2890 反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2019年10月16日漏洞编号CVE-2019-2890威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0......