zoukankan      html  css  js  c++  java
  • codeforces口胡记录

    1194E. Count The Rectangles

    题意:
    2D平面上给出若干条垂直或水平的线段,求共构成了几个封闭的矩形。
    题解:
    大概就是先把每行每列先做一个简单的线段处理(处理成若干连续段),然后维护一个从下往上的扫描线,并且在扫的时候对每个横坐标维护在它上面是否有连续的竖直线段,对于每个横线段(长度为1,即两个横坐标之间)维护在当前的扫描线下,是否有水平线段覆盖了这一段。然后每当铺上一条水平线段,就进行一次统计。由于数据范围较小,(应该)只要保证统计的复杂度不劣于(mathcal O(len))即可。
    复杂度大概是(mathcal O((n + V)V))

    1194F. Crossword Expert

    题意:
    (n)个题, 按照第(i)题随机(t_i)(t_i + 1)秒钟完成, 总共有(T)秒时间, 求做题数期望。
    题解:
    最基本的想法是考虑对于一个01序列,考虑其贡献。但是我们会发现后面有些1是没有用的。
    我们可以考虑枚举有多少个题多花了1s完成的。(即有用的1的个数)
    实际上,枚举个数后,我们不需要关心这些多花的1s究竟在哪些题上,这很关键。
    清楚这件事情以后,我们就可以列出式子:

    [f_i = inom{m_i}{i} 2 ^ {n - m_i} ]

    其中(f_i)为有(i)个题多花了1s完成的方案数,(m_i)为有(i)个题多花了1s完成,能完成的题数。
    则答案即为

    [frac {sum_i m_i f_i}{2 ^ n} ]

    1194G. Another Meme Problem

    待填。

    1197D. Yet Another Subarray Problem

    题意:
    给出一个序列,求最大的一个连续子序列(a_{l..r}),满足

    [sum_{i = l} ^ r a_i - k lfloor frac {r - l + 1}{m} floor ]

    题解:
    设前缀和数组为(s),即求

    [max {s_r - s_l - lfloor frac {r - l}{m} floor} ]

    考虑(m)大小只有10,我们直接把原序列分成以(m)为大小的若干块。
    大概做(m)次分块的样子,每次块起点不同。
    对于一次分块,我们可以把每一块缩成一个点,设(t_i)是这个块内(s)的最大值,则本次分块的答案为

    [max {t_j - t_i - k (j - i)} ]

    这个问题显然(mathcal O(frac {n}{m}))可以做。
    然后对每次分块的答案取最大值即可。复杂度是(mathcal O(nm))的。

    1197E. Culture Code

    题意:
    你有n个俄罗斯套娃,已知每个套娃的容积和体积,问有多少个子集满足:
    这个子集是一个极大子集,即不能再添加其它的套娃到这个子集里;
    在上面的条件下子集的套娃之间的间隙和最小。
    题解:
    感觉不就是一道normaldp吗……?真是nmdp……

    1197F. Coloring Game

    题意:
    给出(n)个游戏,每个游戏都是相似的。
    其中第(i)个游戏上面有(a_i)个格子,并且某些涂上了颜色。
    Alice和Bob进行博弈,初始时在每个游戏的最后一个格子都有一个棒子,行动规则是
    1.不能将某根棒子移出边界;
    2.只能将某个棒子向前移动({1, 2, 3})格;并且如果当前格子涂有颜色,会有一些限制,使得向前移动的步数集合是({1, 2, 3})的子集。
    问有多少涂色方案,使得最终Bob(后手)必胜。取模。
    题解:
    考虑单个游戏的SG值。如果我们知道了第(i)个游戏SG为(j)的方案数(f_{i, j}),那么就可以轻松合并了。(SG的值最大只有3,这很重要)
    考虑如何求出这个东西。
    (dp_{i, a, b, c})为第(i - 2, i - 1, i)个位置SG分别为(a, b, c)的方案数。
    由于(a, b, c in {0, 1, 2, 3}),所以可以把后面的(a, b, c)压成一维长为64的数组。
    考虑从一个没有颜色的格子转移到另一个没有颜色的格子,转移始终是一样的,可以预处理出转移矩阵,然后做vector-matrix multiply
    对于初始就有颜色的格子,由于比较少,只有1e3左右,所以直接在这些地方暴力转移即可。
    复杂度是(mathcal O(n L ^ 2 log V + m L ^ 2))。其中(L = 64)为矩阵大小。

    1190C. Tokitsukaze and Duel

    题意:
    一个01序列,Alice和Bob进行游戏,轮流操作,每次可以把连续(k)个全部变成0或1((k)是常数),最后把序列全变成0或1的人获胜。
    问先手必胜还是后手必胜还是平局。
    题解:
    首先,如果Alice第一次操作后没有赢,那一定没机会赢了,因为Bob可以做无用操作,使结果不劣于平局。
    除了这种情况,只有Bob可以在自己的第一次操作就赢下游戏。
    那么Bob能否在自己的第一次赢下游戏,条件就是Alice第一次进行任意操作都是必败操作。
    即对于Alice的任意一种操作,如将([i, i + k -1])变成0,那么要保证,区间([1, i - 1])([i + k, n])这两个区间中有且仅有一个区间有1。
    总复杂度大概可以做到线性。

    1190D. Tokitsukaze and Strange Rectangle

    题意:
    平面上有若干点,求用一个U形框一些点,问能框住的点集的种类数。
    其中U形是两条竖直射线和一条水平线段。
    题解:
    考虑从上向下枚举纵坐标,统计出纵坐标在当前扫描线上的点,横坐标有多少种,设为(s)
    可以说,答案的一部分就是(inom {s + 1}{2}),但是可能重复了统计了上一次扫描线统计(即上一次枚举纵坐标)的点。
    设有(t)种横坐标是恰好在当前扫描线(枚举当前纵坐标)之前就存在的,则要减去(inom {t + 1}{2})的贡献。
    直接上线段树+扫描线可以做到(mathcal O(n log V))。当然也可以先离散化一下。

    1190E. Tokitsukaze and Explosion

    待填。

    1190F. Tokitsukaze and Powers

    待填。

  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/psimonw/p/11268872.html
Copyright © 2011-2022 走看看