zoukankan      html  css  js  c++  java
  • 2020.02.07【NOIP提高组】模拟A 组 总结

    啊啊啊,感觉又双惨了。。。

    估分:(100 + 0 + 50 = 150)
    考场:(100 + 0 + 0 = 100)

    (T1)

    看上去很像矩乘,所以推了推,没推出来。
    然后发现它分档分的很有意思。
    35分暴力可以搞定。
    然后还有一档(m)特地小了很多???
    哇,好像可以找循环节诶!!!70分到手。
    最后一档才叫古怪,稀里糊涂地搞了好多限制。
    然后开始推。。。(b%2a==0)。。。什么鬼。。。
    另一条(4*a*c=b^2-2*b)才叫奇怪。。。咦等等,好像很像二次函数中的顶点式里的东西啊。
    然后推推推,发现了:(x[n]=a*(x[n-1]+b/2a)^2-b/2a)
    卡住了。。。然后又突然发现:(x[n]+b/2a=a*(x[n-1]+b/2a)^2),这样可以将(x)都看作(x+b/2a)!!!
    然后得到改后的:(k=n-1)(x[n]=a^k*x0^n),然后搞定了!

    (T2)

    数据范围很小,感觉可以用搜索来弄,但是不知道怎样正确判断,怎样正确搜索。
    然后就先跳过(弃)了。
    其实(T2)有个思路以前做过。
    就是判断一个点时候在一个多边形内。
    只需要它任意向一个方向射线,判断一下交点个数的奇偶性即可。
    这题也是这样子的。我们可以设(dis[i][j][s])表示到达了((i,j)),且特殊点向上射线交点奇偶性的状态为(s)时的最小步数。
    然后用广搜更新状态即可。

    (T3)

    这一道题考试的时候看错题意了,以为那个传送石只能够用一次。。。
    然后对拍的时候怎样都不对。。。然后就(0)了。。。
    如果可以用多次的话,那么这题应该是可以用(DP)来做的。
    正解是二分+(DP)
    **求最值啊!!!那应该要想到二分的啊!!!
    二分答案,然后判断是否合法。而我们可以将每个点的值转换成一个值(val[i]=a[i]-mid*b[i])
    然后设(f[i])表示到(i)这个点时的上述值的最大值。
    转移方程显然:(f[i]=f[j]+val[k])(k)表示([j+1,i])这段区域中(c)最大且靠后的那个点。
    这样做可以是(O(n^2logn))的,但会(TLE),所以我们要想办法优化一下。
    我们可以用线段树来储存(f)这个数,然后对于(k)的话做单调队列,我们可以得到当前到(i)为止,每个(j)对应的(k)是什么。
    这样我们可以对此弄到一个线段树里面去,然后取前面中的(max)即可。

    总结

    这一次,感觉前面的时间都利用的很好。嗯嗯表扬一下先~
    但是,到了后面就开始不行了。。。
    打码的时候出现的很多个明显错误。。。线段树都打错了一个地方。。。
    时间的利用很算可以,就是最好都三题打完,这是优秀的。
    强调一下,观察数据范围真的很重要!!!
    还有不要因为麻烦而导致时间被拖延,然后没时间。。。

    转载需注明出处。
  • 相关阅读:
    Linux Context , Interrupts 和 Context Switching 说明
    zabbix监控cpu jumps
    国际时区 TimeZone ID列表
    onenote无法更新,提示无法流式传输、无法登陆等问题解答
    Laravel Lumen 数组操作
    ApiDoc 和 Swagger 接口文档
    现代 PHP 新特性系列
    php 流(Stream)
    laravel Lumen邮箱发送配置
    钉钉开发验证登录功能
  • 原文地址:https://www.cnblogs.com/jz929/p/12275032.html
Copyright © 2011-2022 走看看