1.seq

奇数和偶数显然是独立的,我们只考虑其中一种即可。
如果没有要求字典序最小的话,则显然相对位置不变的方案是最优的,那么我们可以直接得到一种合法方案以及最小代价。
我们用 xi 表示第 i 个数是往左,往右还是不变,那么按 xi 分段后显然每一段是独立的,否则代价一定大了。
那么我们考虑 xi 相同的一段。如果他们都是向左的,那么我们可以按照从大到小的顺序,每个数字都尽可能向后面放。而如果都是向右的,我们按照从小到大的顺序每个数字都尽可能往前面放即可。可以发现,这样的两种放法都可以最小化字典序,因此都是对的。
时间复杂度: Θ(n log2 n)。

2.bulb

考虑建出一张图,他的点就是原来的灯泡 1, 2, · · · , n。然后如果 i 和 i + 1 都是亮
着的,那么就把他们之间连一条边。
那么一个极长亮灯区间就对应图中的一个联通块。因为链也是树,所以连通块数
等于点数减边数,即极长亮灯区间数等于亮着的灯泡数减去连续亮着的灯泡数。
前者显然可以非常方便地维护,考虑如何维护这个连续亮着的灯泡数。
设阈值 B,则我们可以把所有颜色按照对应灯泡个数和 B 的关系分为大小两种。
若翻转的是小的颜色,则我们直接可以暴力枚举这种颜色中的所有点,然后计算
连续亮着的灯泡数。
否则如果翻转的是大的颜色,则和它相邻的颜色有两种:小的和大的:
• 如果是大的,那么因为大的颜色只有 Bn 种,所以只要先预处理出任意两种大的
颜色之间有多少条边可以连,然后直接枚举这个另外的大的颜色即可。
• 对于小的的情况,我们考虑在小的那里处理。即,在枚举小的点的时候,如果
周围遇到了一个大的颜色,则我们就在这个大的颜色上打一个标记,表示如果
它翻转了那么会造成多大的改变即可。
时间复杂度: Θ(q(B + Bn )),取 B = √n 即可做到时间复杂度 Θ(q√n)。

3.match

显然对于某个 k,若存在这样的 k 个人,那么必定唯一。
这是因为我们如果存在某两个合法集合 S 以及 T,一定存在 u ∈ S 而 u ̸∈ T 以及 v ∈ T 而 v ̸∈ S。根据合法集合的定义,我们从 S 的定义可得 u 胜过 v,而从 T的定义可得 v 胜过 u,矛盾。因此这样的集合一定唯一。
设 Fn,k 表示 n 个人中存在这样 k 个人的概率,考虑转移。
考虑如何计算 Fn+1,k,如果 n+ 1 在集合外,那么他一定要输给前面的这 k 个人,而这 k 个人的编号都比他小,因此概率为 pk。如果他在集合内,那么他要赢前面的n − k + 1 个人,因此概率为 qn−k+1,其中 q = 1 − p。因此,我们有Fn+1,k = Fn,k · pk + Fn,k−1 · qn−k+1
同时,我们也可以通过考虑 1 这个人来做出转移。如果 1 在集合外,那么他要输给后面的这 k 个人,而这 k 个人的编号都比他大,因此概率为 qk。如果他在集合内,那么他要赢后面的 n − k + 1 个人,因此概率为 pn−k+1。因此,我们又有Fn+1,k = Fn,k · qk + Fn,k−1 · pn−k+1
所以,我们有Fn,k · pk + Fn,k−1 · qn−k+1 = Fn,k · qk + Fn,k−1 · pn−k+1
也就是说,Fn,k · (pk − qk) = Fn,k−1 · (pn−k+1 − qn−k+1)
此外 Fn,0 = 1,所以如果 p ̸= q,即 p ̸= 1/2,我们就可以在 Θ(n) 的时间内算出所有的 Fn,k,从而得到答案。
而剩下的情况是 p = q,则此时和下标无关,任意两个人之间一个人胜利的概率
都是 1/2。因此,我们考虑选出 k 个人作为最后的胜者,则有Fn,k = (nk) · 2k(n1−k)
两种情况的时间复杂度都是 Θ(n) 或 Θ(n log2 n)。

2019正睿Day1题解相关推荐

  1. 【2019正睿金华集训】0803总结

    今天是R姓大佬讲解的(简单?)数论. 果然数论还是那么的毒瘤,前面还好,讲到类欧就挂机了.讲到二次剩余,woc什么鬼东西,直接挂机.讲到莫比乌斯反演又挂机了,直到看完一篇有关数论函数的博客才上线. 数 ...

  2. 2019金华正睿集训总结

    emmm-蒟蒻第一次出来集训,也是2019年noip(现在应该叫csp的说)前最后一次外出集训- 感觉压力好大啊-毕竟才学了不到一年啊- 但不管怎样,接下来几天要好好加油啊! DAY1 仅自己用的链接 ...

  3. 2019.11.03 test 题解

    2019.11.03 test 题解 五指山 数星星 Stars 涂抹果酱 繁繁的数字 繁繁的游戏 繁繁的队列 大佬们不屑于写博客,于是最菜的我来写篇题解. Day1: Day1 AK... 五指山 ...

  4. 8.8 正睿暑期集训营 Day5

    目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...

  5. 11.2 正睿停课训练 Day15

    目录 2018.11.2 正睿停课训练 Day15 A 郁闷的小G(二分) B 小G的树(树形DP) C 数的距离(思路) 考试代码 B C 2018.11.2 正睿停课训练 Day15 时间:3.5 ...

  6. 9.29 正睿提高6

    目录 2018.9.29 正睿提高6 A B C 考试代码 B C 2018.9.29 正睿提高6 时间:3.5h(实际) 期望得分:100+30+1 实际得分:100+20+0 比赛链接 T3想了一 ...

  7. 2021/9/12正睿10测Day.3

    半个小时左右大概看完了题,主要刚开始的时候吃了些东西. 这是第三次打正睿的十连,也是头一次在打正睿的十连遇到捆绑测试,对于我这种骗分狗来说首先心态上就很折磨,有些 subtask 只给了其中一两个量的 ...

  8. 8.10 正睿暑期集训营 Day7

    目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...

  9. Comet OJ 2019 夏季欢乐赛题解

    Comet OJ 2019 夏季欢乐赛题解 我是来骗访问量的 A 完全k叉树 \(n\)个点的完全k叉树的直径. 直接做 B 距离产生美 直接做 C 烤面包片 \(n!!!\mod p\) 显然\(n ...

  10. 7.30 正睿暑期集训营 A班训练赛

    目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...

最新文章

  1. .net采集网页方法大全(5种)
  2. 连接超时这种异常怎么处理比较好_Golang中SSH.NewSession超时问题记录
  3. Android开发神器:OkHttp框架源码解析
  4. android 覆盖安装问题
  5. Android学习——ListView的缓存机制
  6. Spark的event事件监听器LiveListenerBus和特质SparkListenerBus以及特质ListenerBus
  7. wifi驱动总结(2)
  8. 从小白到大牛,程序员必读的经典套系书
  9. 将GeoIP的region_code列表也复制过来一份
  10. 正则匹配emjio表情
  11. scratch经典游戏主题源码分享,包含了20多款经典游戏
  12. Simulator installs an app drag-and-drop onto the Simulator window
  13. linux安装CUPS详细教程,ubuntu安装打印机CUPS
  14. 支持大S,你一定要幸福!
  15. JINI学习笔记2-HelloWorld
  16. mysql 42000 报错_MySQL SQL Error: 1064, SQLState: 42000 错误
  17. SourceTree跳过Bitbucket服务器或者Bitbucket登录的方法
  18. svn安装完成check后无法commit错误信息,及相应的解决办法
  19. 机器学习-白板推导系列笔记(二十八)-BM
  20. 邀请码 inurl code.php,javascript-PHP注册邀请码

热门文章

  1. SUSE常见问题解决办法
  2. Java 编程技术大全(上)实战练习 cp1-cp3
  3. 如何预防计算机病毒英语作文,电脑病毒的英文作文
  4. Oculus客户端在Win10上面无法安装或者登陆的解决方法
  5. Android9 更改系统默认输入法
  6. apache-felix实例
  7. Java - Certificate has been revoked
  8. 前端面试宝典React篇03 如何避免生命周期中的坑?
  9. NOIP2011(提高组)DAY2---观光公交(vijosP1741)
  10. 用matlab怎么仿真升降压电路,(最新整理)升降压斩波电路matlab仿真