zoukankan      html  css  js  c++  java
  • 考试总结 模拟$102$

    考试过程

    T1题意真的很恶心人,看了好久的题意,

    看到环,惯性思维想着拆成2n,然后比较显然的单调栈,感觉自己一直在强制往上套,

    接着发现用单调递减的栈维护,若两个点之间的点都小于等于这个点,那就算一个贡献

    然后就想着2n的瞎特判,写了1h30min多,只好放弃

    很不爽的来到T2,一看模拟只有20分,心里mmp地调了一会暴力,规律很显然,而且提示很明显:DP,

    但由于放不下T1,只好拿到T2 40,就匆忙地写T3的拓扑DP,因为之前见过好多,所以直接写55分的暴力

    然后就去调T1的暴力,最后紧紧张张的qj过了样例,然后交题,评测机很慢,

    只看到了T2的11/18/18我就知道eooo凉了

    不要硬上套路!!!

    要把每个题都深入思考后再抉择难易!!提升拿分能力

    早上我才知道T3暴力写跪了,原因是每次删点的时候计算没有清空f值

    只能说明紧张度不够

    只有8天了啊,现在没有紧张度?最后不就死了吗??

    题解

    T1「单调栈」

    若两个点之间的点都小于等于这个点,那就算一个贡献。用单调递减的栈维护

    考场上的想法是对的。关键是如何去避免算重和算漏。

    首先有一个性质:最大值两侧绝对没有贡献

    那么我们将最大值放在最左端的话,那么在2-n的序列上绝对不会有 i<j&&i作为右端点,j作为左端点的情况

    所以简单来说贡献分成了两部分,正着跑单调栈计算两两的贡献,和,最大值作为右端点的贡献

    细节较多推荐博客

    T2「简单DP」

    第一眼以为是图论??

    定义f[i]表示第一次到i的步数

    $$f[i+1]=f[i]+1+(f[i]-f[p[i]])+1$$

    第一个+1是从i到p[i],再从p[i]到i的步数是f[i]-f[p[i]]

    最后一个+1是再次到达i之后再走一步到i+1

    解释一下为什么   再从p[i]到i的步数是f[i]-f[p[i]]

    我们可以发现我们前进一步的前提是当前点的状态

    是被遍历的偶数次,而前进过后,这一步的状态就归位

    而从i到j走一个区间,1-i和1-j的状态都是未访问,所以一个区间的贡献是f[j]-f[i]

    而从i再跳回p[i],的状态和 第一次从p[i]到i的状态相同

    所以贡献相同了

  • 相关阅读:
    利用CSS3 中steps()制用动画
    移动WEB测试工具 Adobe Edge Inspect
    Grunt配置文件编写技巧及示范
    CSS3 box-shadow快速教程
    编写爬虫程序的神器
    node+express+jade搭建一个简单的"网站"
    node+express+ejs搭建一个简单的"页面"
    node的模块管理
    node的调试
    mongoDB的权限管理
  • 原文地址:https://www.cnblogs.com/casun547/p/11804267.html
Copyright © 2011-2022 走看看