• ARC 116/119 与 CF Round 712 Div.2 比赛记录


    ARC 116

    赛时通过 ( ext{A,B,C}),排名 (885),Performance (1529)

    A

    找规律发现若:

    • (xmod 4=1lor xmod 4=3)( ext{Odd})
    • (xmod 4=2)( ext{Same})
    • (xmod 4=0)( ext{Even})

    B

    (A) 排序,并整理成 ((a_i,b_i)) 的形式,其中 (b_i) 表示 (a_i) 的出现次数。

    枚举子集 (B)(max),推一下式子即可。

    C

    可以发现,若约数链中不允许有相同的数,那么其长度最多为 (log_2m)

    (f_{i,j}) 为长度为 (i) 的约数链,最后一个数为 (j) 且不允许有相同数字的方案数。

    这个可以 (O(m log^2 m)) 计算。

    枚举 (i,j),然后考虑在约数链之间填上相同的数有多少种填法即可,这个可以用隔板法计算。

    D

    考虑那个 (operatorname{xor}) 和为 (0) 的条件,其实是规定了每一位上都要有偶数个 (1)

    拆位计算,那么当我们确定了从低到高的第 (i) 位时,其实可以将它归约到一个相同的子问题:计算最高的 ((i+1)) 位。

    (f_i)(n) 个和为 (i) 的数,且 (operatorname{xor}) 和为 (0) 的方案数。

    那么 (f_i=egin{cases}sumlimits_j f_{(i-2j)div 2} & i mod 2=0\ 0 & i mod 2 =1end{cases})

    E

    重题:P3523 [POI2011]DYN-Dynamite

    因为 POI 这题好像还难点,我就做这道题了。

    阳间翻译可以看 https://loj.ac/p/2165

    看到这种“最大值最小”之类的先想到二分。二分答案 (x),于是问题变成了“能否选 (m) 个点,使得关键点到这些点距离的最小值的最大值 (le x)”。

    考虑树形 dp,设 (f_u) 为以 (u) 为根的子树内,距离 (u) 最远的、未被覆盖的关键点,到 (u) 的距离,(g_u) 为以 (u) 为根的子树内,距离 (u) 最近的、被选中的点,到 (u) 的距离;变量 (N) 表示当前关键点个数。

    一开始 (f_u=maxlimits_{vin son_u}{f_v}+1)(g_u=minlimits_{vin son_u}{g_v}+1)

    然后分三种情况特判:

    • (f_u+g_ule x):说明用 (g_u) 代表的点即可覆盖子树内所有关键点,(f_ugets -inf)
    • (f_u=x):点 (u) 必须选,(f_u gets -inf,Ngets N+1)
    • (g_u>xland d_u):点 (u) 是关键点,但子树中没有能覆盖它的。于是我们令 (f_ugets max(f_u,0)),表示把它丢给父亲处理。

    对于根节点:如果 (f_{ ext{root}} eq -inf),那么 (Ngets N+1)

    为什么不用特判 (f_u>x) 的情况?因为这种情况不存在,(f_u) 最多会比 (max{f_v})(1),我们已经特判了 (f_u=x) 的情况,就不用再特判这个了。

    CF #712 Div.2

    赛时通过 ( ext{A,B,C}),排名 (1761)

    A

    插入的字符 ( ext{a}) 要不然插入在开头,要不然插入在末尾。

    B

    略。

    C

    被这个 C 卡了好久,看来要好好练练构造啊。

    一个合法的括号串,其中一定包含恰好一半的左括号。

    所以,若 (s) 中有奇数个 (0),那么一定无法构造。

    否则,我们计算出 (s)(1) 的个数 (c_1)。对于前 (dfrac{c_1}{2})(1) 的位置我们填左括号,对于后 (dfrac{c_1}{2}) 个位置我们填右括号。

    然后 (s)(0) 的位置就瞎搞一下即可。

    D

    可以发现,如果一个元素旁边有三种不同的颜色,就挂了。

    如果一个地方有两种相邻的不同颜色,而且该轮 ( ext{ban}) 掉的是剩下的那种颜色,这个地方也填不了。

    考虑怎样避免这两种情况:

    • 将网格黑白染色,染成棋盘状。记三种颜色是 (1,2,3),其中颜色 (1) 是黑色,颜色 (2) 是白色。
    • 如果 ( ext{ban})(1),就选没填的白色填一下。如果白色的位置都被填了,说明黑色的地方瞎填就行了,所以可以任选一个地方填 (3)
    • ( ext{ban})(2) 以此类推。
    • ( ext{ban})(3) 瞎填即可。

    E

    https://www.luogu.com.cn/blog/alan-zhao/solution-cf1503c

    ARC 119

    赛时通过 ( ext{A,B,C}),排名 (616),Performance (1639)

    A

    枚举 (b),计算相应的 (a,c) 再取最优解即可。

    B

    首先题目中描述的操作可以看作每个 (0) 都可以在它所在的极长 (1) 连续段中移动。

    有一个关键性质:(S) 中的第 (i)(0),与 (T) 中的第 (i)(0) 相对应。这是因为 (S) 中的两个零如果在交换过程中相互跨越了,那么一定不比不跨越优。

    于是 (S) 中的每个 (0) 都可以通过至多 (1) 次交换达到目标。找到那些不需要操作的 (0) 即可。

    C

    可以发现若区间 ([l,r]) 是合法的,那么一定有 (A_l-A_{l+1}+A_{l+2}-dotspm A_{r}=0)

    于是我们可以把所有 (A_{2i}gets -A_{2i})

    这样问题就转化为问 (A) 中有多少个区间满足和为 (0)

    随便做做。

    Written by Alan_Zhao
  • 相关阅读:
    Python高效编程技巧
    Python使用Flask框架,结合Highchart,自定义图表样式主题
    Python使用Flask框架,结合Highchart,自定义基本上算是最全的导出菜单了
    Python使用Flask框架,结合Highchart,自定义导出菜单项目及顺序
    Python使用Flask框架,结合Highchart,搭配数据功能模块,加载 HTML 表格数据
    Python使用Flask框架,结合Highchart,搭配数据功能模块处理csv数据
    Python使用Flask框架,结合Highchart处理jsonl数据
    Python使用Flask框架,结合Highchart处理xml数据
    Python使用Flask框架,结合Highchart处理csv数据(引申-从文件获取数据--从数据库获取数据)
    使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)
  • 原文地址:https://www.cnblogs.com/alan-zhao-2007/p/cf-712-arc-116-119.html
Copyright © 2020-2023  润新知