• Atcoder Regular Contest 120 比赛记录 (vp)


    题解

    A,B 略

    C: 这个操作相当于把 ((a,b)) 变成 ((b+1,a-1))

    观察 (a'_i=a_i+i) 这个东西。设我们操作的是 (a_i,a_{i+1}),然后操作完会变成 (a_{i+1}+1,a_i-1)

    (a'_{i}=(a_{i+1}+1)+i=a_{i+1}+(i+1))

    (a'_{i+1}=a_{i}-1+(i+1)=a_{i}+i)

    发现这个东西相当于是交换了 (a') 的两个位置。然后相当于是有两个数组,每次只能交换相邻两个,要把A变成B。这玩意就逆序对做一做就行了。

    D: 把前 (n/2) 小的看做A类,前(n/2)大的看做B类。那如果我们的每一对匹配括号都恰好一个是A,一个是B,那答案就是 (sumlimits_{xin B} x-sumlimits_{xin A} x)

    然后我们一定能构造。就我们维护一个栈,如果当前元素和栈顶类型不同就匹配,否则就直接入栈。

    实况

    A,B比较简单,很快就没了

    C的话,我们可以玩玩发现 (i+a_i) 这个东西。我其实是瞎jb交换了很多次,然后发现一个数原来是 (a),后来变成了 (a-3),而它正好被换出去三格。然后我就发现了其实是在交换 (i+a_i)

    D那个应该是个经典结论。我感觉这个东西好像很难对,我就没这么猜。我还瞪了好久性质,没瞪出来。还他妈睡着了,也许是因为我在下午4点左右vp的缘故吧。众所周知,那会人的精力低下。

    总结

    “对相邻做...操作, 把A变成B”,通常我们会把它转换成交换相邻,从A变到B的问题。

    D题有一个经典结论就是, 我们有2n个数,其中n个0,n个1。我们一定能找到一种括号匹配使得每对匹配括号都包含了一个1和一个0。

  • 相关阅读:
    Redis-数据类型
    文件转二进制流拆分与组装
    word 文件转PDF 预览
    查询数据库还原时间
    Window10主机连接到Docker 中的mysql 数据库
    sqlServer 执行存储过程结果存表中
    启动mysql 镜像
    Java类型转换细节
    IDEA常用插件
    IDEA控制台中文乱码
  • 原文地址:https://www.cnblogs.com/LightningUZ/p/15399172.html
Copyright © 2020-2023  润新知