zoukankan      html  css  js  c++  java
  • NOIP2018普及组模拟赛

    向老师给的模拟赛,还没普及组难...

    题目在洛谷团队里。

    第一试三道水题,我46分钟就打完了,然后就AK了。

    第二试一看,除了第二题要思考一段时间之外,还是比较水的,但是我得了Rank倒1,115分......

    D1T1有个技巧,每次从堆中取出合并的时候顺便统计答案,相当于每一层的贡献分开来统计。

    这个技巧来源于荷马史诗。

    D2T2乍一看很难。答案不满足单调性所以不能二分。

    因为边权在变,所以很难搞。同时这个也是突破口。

    如果能够确定一个时刻,那么就最大生成树。

    如果能确定一个生成树,那么可以发现边权和变化是一次函数。

    生成树数量过多,不能枚举,但是时刻只有[0, 14400],考虑枚举时刻。

    这样我们就要证明,最大的生成树所在时刻必须为整数。(证明在下面)

    时间复杂度有点高,可能会超时。

    进一步可以证明出,最大的生成树的所在时刻必定是某条边权最大的时刻ti

    然后枚举ti求最大生成树,取最大值即可。

    证明:

    最大的生成树的所在时刻必定是某个生成树的最大时刻。

    即证每个生成树的最大时刻必定是某个ti

    每个生成树在两个ti之间的边权和是一个一次函数,最值在两端。

    证毕。

    然后我得了5分,理由是快读没写负数读入......

    D2T3 一眼看上去是图论的奇技淫巧,然后发现只有几百个点,然后就想到了DP。

    然后就写了个DP,得了10分,理由是最后输出的状态,一个变量错了。

    总结:快读记得要处理负数。变量的意义最好用自己熟悉的,不熟悉的可以记下来。

  • 相关阅读:
    (转)SpringMVC学习总结
    Golang-函数的defer
    Golang-闭包
    Golang-匿名函数
    Golang-init()
    Golang-递归
    Golang-函数、包、变量的作用域
    Golang-for、break、continue、goto、return
    Golang-程序流程控制 if、switch
    Golang-进制、源码反码补码、位运算
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/9692817.html
Copyright © 2011-2022 走看看