zoukankan      html  css  js  c++  java
  • 「洛谷 P1801」黑匣子

    好像很久没有更过博客了,因为博主这几周很忙。其实是在搞颓。
    题意很难懂,所以就不重复了。其实是懒。
    一眼看上去这是个 (Splay) 裸题,直接插入一个数,查询区间第 (K) 大,但是这样太不优美了,配不上「NOI导刊」这几个字,所以这题肯定有更优美的做法。
    注意到这道题有一个很优美的性质,(K) 是递增的,然后我们就可以搞事情了。
    开两个堆,一个大根堆,一个小根堆。大根堆里存的是前 (K) 小的数。
    每次插入一个数,判断是否比大根堆的堆顶要小,是就把堆顶丢回小根堆,当前数如入大根堆,否则直接丢小根堆。单次插入是 (O(log_{2}n)) 的,总复杂度 (O(nlog_2n))
    这道题我开始是手写的 (heap),没有压常数,(112ms)
    然后我大力加一波 (register)(188ms)
    不要全部加,删掉几个(116 sim 144ms)不等。
    怒改 (STL + register)(116ms)
    我想我该好好学习一下卡常技巧,不能越卡越慢……
    代码常数太丑,就不贴了。

  • 相关阅读:
    Ansible
    Ansible
    MySQL
    JS计算时间差(天,时,分钟,秒)
    cookie,localStorage,sessionStorage的区别
    css布局 -双飞翼布局&圣杯布局
    Python批量爬取网站图片
    vue-cli3中引入图片的几种方式和注意事项
    git常用命令
    vue-cli3的打包并在本地查看
  • 原文地址:https://www.cnblogs.com/y142857/p/7806793.html
Copyright © 2011-2022 走看看