zoukankan      html  css  js  c++  java
  • Codeforces Round #740 部分题解

    比赛链接另一个比赛链接

    题目评分:

    • Div.1:1300-1900-2000-2600-3000-3300
    • Div.2:800-1300-1300-(1700-1900)-2000-2600

    Div.2 D/Div.1 B Up the Strip

    Solution 设 $f_i$ 表示从 $n$ 到 $i$ 的方案总数。

    使用减法转移的话,也就是 (f_i=f_i+sum_{j=i+1}^n f_j)

    而使用除法,考虑填表法,考虑一个除数 (d),那么能够被影响的是 ([di,di+d-1]) 这样一个区间。

    发现这两个东西都可以后缀和优化,所以减法转移可以做到 (O(1)),而除法呢,容易发现这是个调和级数 (O(log n)) 的。

    Div.2 E/Div.1 C Bottom-Tier Reversals

    Solution 强构造,不过我是傻逼没想到突破口。

    先考虑判无解,容易发现翻转不改变某个数所在位置的奇偶性,可以直接判无解。

    操作步数为 (frac 5 2n),这启示我们,对于每一个数对 ((i,i+1)),使用 (5) 次操作把他丢到对应的位置。

    比如序列 (1,6,4,5,3,7,2),我们想要将 (6,7) 放到最后,考虑如下方案:

    • 操作奇数所在的位置,即 (6),序列变为 (color{red}{7}color{black},3,5,4,color{red}{6}color{black},1,2)
    • 操作偶数所在位置的前一位,即 (4),序列变为 (color{black}4,5,3,color{red}7color{black},color{red}6color{black},1,2)
    • 操作偶数所在位置的下一个位置,即 (6),序列变为 (color{black}1,color{red}6color{black},color{red}7color{black},3,5,4,2)
    • 操作奇数所在位置,即 (3),序列变为 (color{red}7color{black},color{red}6color{black},1,3,5,4,2)
    • 逆转整个序列,序列变为 (color{black}2,4,5,3,1,color{red}6color{black},color{red}7)

    按照这个方式模拟整个过程即可,时间复杂度 (O(n^2))

    Div.2 F/Div.1 D Top-Notch Insertions

    Solution 数据结构与组合的精妙结合。

    发现最后的序列顺序是确定的,比如 (a_1le a_2le a_3),容易发现如果只有 (le) 可以直接隔板出答案。

    但是会有插入的情况,如果发生一次形如 ((x,y)) 的插入,意味着 (a_x<a_y)

    那么,依据隔板法,总的方案数为 (inom{2*n-1-c}{n}),其中 (c) 表示 (<) 的个数。

    考虑维护这个 (<),一个数前面是 (<),那么一定有数被插入到了前面,考虑维护一个集合 (S),初始时里面被放进了 (1sim n)

    倒序处理每一个插入,对当前插入,设排名为 (y_i) 的数为 (p),排名为 (y_i+1) 的数为 (q),删除 (p) 并为 (q) 打上标记,最后 (c) 即为打上标记的数的个数。

    使用线段树上二分,时间复杂度 (O(mlog n)),注意别写成了 (O(nlog n))

    Div.1 E Down Below

    Solution *3000 神题。

    考虑二分答案转化成判定性问题,好了现在问题变成给定一个 (x),问能否走完。

    如果没有第三个条件,直接贪心,爽哉,傻逼题!!!!1

    完了,有了第三个条件怎么做,我只好自闭。

    考虑我们现在已经走过的点集为 (S),考虑现在这些点中开始 BFS 找路,发现合法的路径要么是一个 ( ho) 形,要么是一个走出去再走回 (S),这两都可以在 BFS 中找出来。

    那么,做 (n) 次 BFS,每次扩展 (S),在 (S) 大小为 (n) 时就发现有解。

    每次 (S) 至少增加 (1),那么时间复杂度就是 (O(n^2log v)) 的,实际上可能完全跑不满。

  • 相关阅读:
    URL传参到servlet含特殊字符——#号无法传递
    textarea标签中间出现空格问题
    MySQL学习笔记(23)——自定义函数
    修改日期插件问题
    获取Spring的ApplicationContext的方法
    数据库用户被锁
    ava获得当前文件路径
    前端框架
    LeetCode 485. 最大连续1的个数
    LeetCode 283. 移动零
  • 原文地址:https://www.cnblogs.com/lajiccf/p/15411451.html
Copyright © 2011-2022 走看看