【学习笔记】NOIP模拟赛

给国的锟题 (problem)

  • 数据结构神题猜的
  • 首先分析性质,如果某次时刻剩下来某道题,那么后面不论怎么添加这道题都会剩下来
  • 考虑维护每个人选了哪些题,初始每个人拿着的都是 a [ i ] a[i] a[i]
  • 考虑一个巧妙的转化,每次新加入一道题,然后依次考虑每个人是否拿自己手中的题进行交换
  • 部分分到手
  • 对于一段连续的 0 0 0只会弹出最大的那个元素,对于一段连续的 1 1 1只会弹出最小的那个元素
  • 如果相邻的两个堆满足 m a x [ i ] ≤ m i n [ i + 1 ] max[i]\le min[i+1] max[i]min[i+1],那么我们可以交换两个堆的位置。我们只需要说明任何 v v v经过两个堆过后弹出的元素相同并且 m a x [ i ] ≥ m i n [ i + 1 ] max[i]\ge min[i+1] max[i]min[i+1]。后者是显然的。前者也是显然的
  • 那么现在我们可以合并了。
  • 考虑分析复杂度。如果满足 m a x [ i ] > m i n [ i + 1 ] max[i]>min[i+1] max[i]>min[i+1]那么一定会发生变化
  • 设当前有 L L L对堆。重叠部分 ∑ ϕ ( i ) = k \sum \phi(i)=k ϕ(i)=k,那么根据鸽巢原理在期望状态下经过 2 k L \frac{2k}{L} L2k轮后至少有一半 ϕ ( i ) \phi(i) ϕ(i)变成 0 0 0,那么就会有一半的堆被合并掉
  • 复杂度 O ( k log ⁡ 2 k ) O(k\log^2 k) O(klog2k)
  • AC Code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NOI(全国青少年信息学奥林匹克竞模拟的测试数据是指用于评测参选手的程序的输入和对应的输出。测试数据是非常重要的,因为它决定了参选手的程序能否正确地解决问题。 在NOI模拟中,测试数据具有以下特点: 1.充分覆盖:测试数据应涵盖各种可能的输入情况,包括边界条件和极端情况。通过提供不同的测试数据,可以考察选手对问题的全面理解和解决能力。 2.随机性和均衡性:为了公平起见,测试数据应该是随机生成的,而不是针对某个特定算法或解法设计的。同时,测试数据应该是均衡的,即各种情况的概率应该大致相等,以避免偏向某些解法。 3.合理性和可行性:测试数据应该是合理和可行的,即符合题目要求的输入数据,并且是选手能够通过编写程序来处理的。测试数据应该考虑到程序的限制和时间复杂度,以充分测试选手的编程能力。 NOI模拟的测试数据通常由经验丰富的考题组负责生成。他们会根据题目的要求和限制,设计出一组合理、充分、随机和均衡的测试数据,以确保参选手的程序在各种情况下都能正确运行,并且能通过性能测试。 总之,测试数据在NOI模拟中起到了至关重要的作用,它既考察了选手对问题的理解和解决能力,又提高了选手编程的技巧和效率。同时,合理和恰当的测试数据也是公平竞的保证,确保每个参选手有相同的机会和条件进行竞争。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值