zoukankan      html  css  js  c++  java
  • 省选模拟61 题解

    A. GTM

    考虑一个点 $(x,v)$ ,能够碰到的点 $(x',v')$。

    有 $(x',v')$ 满足 $x'<x,v'>v$ 或者 $x'>x,v'<v$。

    然后有这样一个结论,我们将所有的点按照 $v$ 排序,然后在每个点能影响到的是一个连续区间。

    区间的左端点分别对应着 $v'$ 最小的满足 $x'>x$ 的点,右端点同理。

    证明的话对于区间外的点,显然不成立,对于区间内的点画画图就可以发现是正确的。

    然后考虑每次怎么求这个东西,然后发现其实这些区间还有一个很好的性质,他们是满足左右端点分别单调的。

    这样将所有的区间按照 $(l,r)$ 二元组排序,直接做一个简单树状数组优化 dp 就好了。

    B. 字符串游戏

    可以把每轮游戏画成一张图,那么可以发现每个字符是连续的。

    然后有一个没想到的贪心。

    从右往左依次考虑每一个字符的归属,是还可能选择的最靠右的字符。

    然后考虑贪心的构造这条路径,每次尽可能向上走。

    然后可以维护每个横坐标的高度,每次操作的转移就是区间内每个 $i$,使 $h_i=h_{i+1}+1$。

    因为当前枚举的后面就没用了,所以显然可以用平衡树来打加法标记维护。

    然后好写一点的做法是用带删除的线段树维护。

    并不会这个东西,查了之后发现其实就是给线段树上的每个节点维护一个有效节点个数。

    然后还像以前一样进行线段树操作就好了。

    另外一个做法是这样的,其实只要维护当前折线中每个拐点的位置。

    每个拐点其实就对应着纵坐标变化 $1$,所以拐点的个数其实就是纵坐标的大小。 

    然后每次操作就是给整体拐点 $-1$ 处理,然后加入一个拐点,前者打个标记就好了。

    C. ACE

    大概想到了可以直接用钦定来容斥出恰好 $0$ 次经过特殊边。

    然后这个题的思路是,因为本题的每个连通块都是一样的。

    所以可以预处理出每个连通块钦定了 $i$ 条边的方案数,这样形成的路径数就是 $k-i$。

    把这些东西写成一个多项式的形式,然后做一下 $n$ 次幂之后,$x^i$ 就表示最终钦定了 $i$ 条边的方案数。

    但是没有考虑先后连接的顺序,所以乘一个阶乘即可计算出总的方案数,然后乘上个容斥系数就可以统计答案了。

  • 相关阅读:
    hdu 5795 A Simple Nim 博弈sg函数
    hdu 5724 Chess 博弈sg+状态压缩
    hdu 3094 A tree game 树上sg
    2017"百度之星"程序设计大赛
    hdu 6134 Battlestation Operational 莫比乌斯反演
    HDU 6143 Killer Names DP+快速密
    HDU 6107 Typesetting 倍增
    HDU 6096 String 排序 + 线段树 + 扫描线
    HDU 6086 Rikka with String AC自动机 + DP
    HDU 6073 Matching In Multiplication dfs遍历环 + 拓扑
  • 原文地址:https://www.cnblogs.com/skyh/p/12628946.html
Copyright © 2011-2022 走看看