zoukankan      html  css  js  c++  java
  • 【2020省选模拟】01.17比赛总结

    比赛思路

    传送门

    • T1(count):刚开始看错题意了。。。然后想到了从小往大加,但是没有想到可以预留位置,以为是直接贴在一起插的,然后就转移不动了。。。
    • T2(play):想到了显然的nq的做法,然而却并没有什么分。。。
    • T3(maintain):显然是数据结构,但是显然并不可打。。。

    赛后消化

    • 可以预留位置,设状态f[i][j][k][l]f[i][j][k][l]表示已经放了从小到大的第ii个,分为了jj段,当前的绝对值之和为kk,因为边界有可能有或没有,是特殊情况,所以要多加一维ll表示0/1/2个边界已经确定了。这相当于是对于每新加进来的一个数考虑它的贡献±a[i]、0、±2a[i]。因为k可能刚开始加得比较大,所以我们在每一个段的边界上再假定多加一个当前的a[i]a[i],那么可以保证全部是正数,且当前的kk一定为最终kk的最小值。
    • T2推式子,运用指数型多项式的知识就可以简单 推导了。
    • T3数据结构。先用splay预处理所有操作实际的位置,然后变成了一个动态数点的问题,可以用set处理出相邻的相同颜色的范围,那么修改当前点影响到的一个区间的范围(二维的)可以算出,然后用CDQ处理时间,扫描线+树状数组处理二维偏序的问题,就可以比较简单 困难地解决这个问题了。码量大概在6K左右,我也只能口胡了。

    总结

    • 今天学习了一下指数型多项式,但是发现一些基础的导数、积分的知识我还完全不知道,只能暂时以记结论的方式去运用。可见数学知识才是学习更高更难算法的基础。
    • T1实际上是一个不难的东西,可惜我没有往插入已知位置以及提前计算好答案那个方面去想。
  • 相关阅读:
    如何彻底卸载Oracle11g
    Oracle 11g的安装
    python 循环队列的实现
    numpy模块学习笔记
    Python 进程之间共享数据
    python异步加协程获取比特币市场信息
    MySQL中, 如何查询某一天, 某一月, 某一年的数据.
    js获取时间
    nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
    nodejs爬虫笔记(四)---利用nightmare解决加载更多问题
  • 原文地址:https://www.cnblogs.com/DeepThinking/p/13090890.html
Copyright © 2011-2022 走看看