zoukankan      html  css  js  c++  java
  • CSPS_103

      被sdfz踩爆了!

      %%%kai586123

      %%%Gekoo

      %%%sdfz_yrt

      

      T1

        我以为是水题!一直在肝!

        而且为什么每次我的考场暴力都是考后才调出来啊!!

        先记录一下正解的大神做法:

          按顺序考虑每次出牌,每次要出使总胜数不变的最大的牌

          考虑将a和b的牌放在一起排序,那么这个问题变成了:括号匹配

          那么考虑对于一个左括号,每次找一个最靠右的右括号与他匹配(或不匹配),还使得总对数不变

          如果找到的右括号在它右边,那么如果找到的当前位置i的右括号导致对数减少,找到更右的位置i+k一定也导致对数减少

          这点可以直观理解,因为i位置导致对数减少,说明左侧的左括号找不到任何替代的右括号,也说明右侧没有任何“空闲”的括号

          所以出牌的大小对对数的影响有可二分性,问题变成了如何快速维护剩余对数

          Rockstar_B:线段树维护分治

          考虑在值域线段树上维护对数,给每个节点维护2个变量sum[2]和pair表示这个值域区间里“空闲”左括号和右括号的数量和匹配数

          修改后递归回来维护:

          int now=min(sum[lch][0],sum[rch][1]);

          pair[x]=pair[lch]+pair[rch]+now;

          sum[x][0]=sum[lch][0]+sum[rch][0]-now;

          sum[x][1]=sum[lch][1]+sum[rch][1]-now;

          最后对数就是 pair[1]

        然后记录下弱智的暴力做法。

          同样是括号匹配,需要被满足的左括号p两端的答案分别单调

          那么找到的右括号应该满足什么样的性质呢?

          考虑找到的右括号本来就和左括号匹配,那么应该是可以与之匹配的最靠右的那一个

          如何找到,把左括号视为+1,右括号视为-1,那么从头开始跑这个过程,到了p之后的一个位置减为了0

          那么这个0就是最后一个可以被拿走的右括号。原因是,再拿右边的,将导致这个0减为-1,也就是增加了一对失配,对数减少了。

            

          考虑右括号没和左括号匹配,这种右括号就是找不到左括号匹配那种,也就是说跑了一遍+1-1之后,它所在的位置应该为负数(虽然强制赋成0)

          一个比较优的暴力做法就是,先跑一遍+1-1的括号匹配,把所有的失配右括号塞到堆里,并标记不再进堆

          按出牌顺序枚举左括号,首先取出堆顶最优的第二种括号,再暴力找第一种括号,两者取一个max作为此次的手牌

          然后删除这两个括号,重新维护+1-1的前缀和序列。就是从修改的地方开始重新跑。

          再加一个剪枝,如果跑到一个地方发现你求出来的真实值和它原本的值相同,就不用跑了,因为可以想到再跑也不会再有更新了。

      T2

        最大值不好搞,把最小值扔到两边。

      T3

        差分表。

        更细节的我也不会,本题用到了一些性质

        差分表中的差分值具有单调性,即大的差分值一定出现在序列较靠前的位置

        差分表中的k个元素一定作用于序列的前k个元素

        

        于是这些差分值可以用一个堆维护。

        另一个学到的地方是dfs+set建树。

  • 相关阅读:
    hibernate更新
    让hibernate支持mysql的text或者longtext
    hibernate的查询
    微博获取原图时重定向到图片的url
    java判断字符串编码
    爬取微博存入数据库时出错
    循环监听事件出错,只能监听最后一个
    org.hibernate.AssertionFailure: null id don't flus
    eclipse有时候导入了包,但是还是有红线,找不到
    hibernate注解创建表总是失败,显示表不存在
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11809849.html
Copyright © 2011-2022 走看看