首页 > 其他分享 >Codeforces Round 926 (Div. 2)

Codeforces Round 926 (Div. 2)

时间:2024-02-16 10:22:34浏览次数:26  
标签:val Submission 最大值 Codeforces Sasha dp 序列 Div 926

A - Sasha and the Beautiful Array

给出的是差分的和,显然等于最后一个减掉第一个,于是答案为最大值减最小值。

Submission

B - Sasha and the Drawing

观察到:前几次操作可以使答案 \(+2\),之后每次只能让答案 \(+1\)。手玩一下发现最优方案是先填满第一列,再从最后一列第二行填到倒数第二行,这样前 \(2n - 2\) 次都是 \(+2\)。

Submission

C - Sasha and the Casino

每次的赌注需要满足:赢了之后总收益为正。因为你可以在任一时刻赢一次,并用掉保底。

设已经花费了 \(r\),则下一次下注的 \(c\) 需要满足 \(kc > r + c\) 即 \(c > \dfrac{r}{k - 1}\)。由于 \(c\) 为整数,于是可以写成 \(c > \left\lfloor\dfrac{r}{k - 1}\right\rfloor + 1\)。

如果存在一种方案,每一步都满足上述条件,且赌到保底时手上的硬币都还足够,那就可行。

显然第一次用 \(1\) 枚硬币最优,由于 \(x\) 很小,直接暴力计算即可。

注意这个 \(r\) long long 都存不下,超过 \(a\) 了要立即退出。

Submission

D - Sasha and a Walk in the City

树形 DP,设 \(dp_{u, 0 / 1 / 2}\) 表示 \(u\) 的子树中的所有叶子到 \(u\) 的路径上最多有 \(0 / 1 / 2\) 个危险点的方案数。

转移需要额外记录这个最大值是否多次出现,于是多加一维 \(0 / 1\) 表示最大值是否多次出现。

子树答案可以简单合并:\(i, j\) 合并到 \(\max(i, j)\) 处,同时分讨一下处理最大值出现次数。

最后考虑自己能否标记为危险点,可以把 \(0\) 的所有方案加到 \(1\) 中,而只能把 \(1\) 的最大值只出现一次的方案加到 \(2\) 中,否则会出现一条经过 \(u\) 的经过 \(3\) 个危险点的路径。

时间复杂度 \(\Theta(n)\)。

Submission

E - Sasha and the Happy Tree Cutting

数据范围明示状压。

考虑给每条边标记一个 \(T_i\) 表示有那些关键路径经过它,之后可以设 \(dp_{i, S}\) 表示处理完前 \(i\) 条边,已经满足了 \(S\) 中的条件时需要选择的最小边数。

转移很简单:\(dp_{i + 1, S \cup T_i} \leftarrow dp_{i, S} + 1\)。

不过 \(O(n 2^k)\) 显然过不了,但是观察到 \(T_i\) 不同的边只有 \(O(k)\) 条(考虑对 \(2k\) 个关键点建立虚树,虚树上的边数即为 \(T_i\) 不同的边数,而虚树的边数为 \(O(k)\)),于是排序去重后做上面的 DP 即可。

虚树不用建,LCA 可以暴力,时间复杂度 \(O(nk + k 2^k)\)。

Submission

F - Sasha and the Wedding Binary Search Tree

BST 是吓人的,直接中序遍历转成序列。相当于给定一个序列中若干个位置和序列中每个数的值域,求有多少种不降序列。

直接枚举有限制的位置 \(i\),设上一个有限制的位置为 \(j\)(令 \(0\) 处有限制,\(val_0 = 1\)),那么方案数相当于值域为 \([val_j, val_i]\) 的长度为 \(i - j - 1\) 的递增序列个数。考虑在后面追加一个位置并钦定它的值为 \(val_i\),并转化为求差分的方案数。这相当于求长度为 \(i - j\),和为 \(val_i - val_j\) 且每一位都非负的序列的个数,可空插板即可得出方案数为 \(\dbinom{val_i - val_j + i - j - 1}{i - j - 1}\)。注意到 \(\sum i - j = n\),直接暴力求下降幂计算即可。

最后还剩下一段后面没有限制,考虑令 \(n + 1\) 处有 \(val_{n + 1} = C\) 的限制,继续套用上述方法计算即可。

预处理阶乘逆元可以做到 \(\Theta(n)\)。

Submission

标签:val,Submission,最大值,Codeforces,Sasha,dp,序列,Div,926
From: https://www.cnblogs.com/xzmxzm/p/18016954/CF1929

相关文章

  • CF-926(已更新:B)
    CF-926两点睡,七点起,阎王夸我好身体……主要这场实在是难绷,两个小时都在C题上吊死了,也不是没想过跳题,只是后面的题我更是一点思路都没有-^-“就喜欢这种被揭穿的感觉,爽!”B分析​ 涂色的单元格能够包含k种对角线,很明显要根据图像的具体性质想答案:然而我赛时是一股脑地猜结......
  • Codeforces Round 906 (Div. 2)
    A.Doremy'sPaint3对于式子\(b_1+b_2=b_2+b_3=\dots=b_{n-1}+b_n=k\),从中挑出\(b_i+b_{i+1}=b_{i+1}+b_{i+2}\),得到\(b_i=b_{i+2}\),这就意味着所有奇数位置上的数需要相等,所有偶数位置上的数也需要相等。对于\(n\)个数而言,有\(\lceil\frac{n}{2}\rc......
  • 数组元素关系映射——cf_925_D. Divisible Pairs
    目录问题概述思路分析参考代码做题反思问题概述原题参考:D.DivisiblePairs给出整数n、x、y和长度为n的数组,要求求出数组中满足以下关系的数对x|ai+ajy|ai-aji<j思路分析刚开始看到这个题的时候觉得没思路,坐牢卡半天发现感觉是对的(裂开)。题解给的是map的做法,看完之......
  • Codeforces 做题笔记
    1841EFilltheMatrix刚开始思路错了,以为就从下往上铺但发现要尽量让横的连续段断开的次数少,每断开一次相当于数量\(-1\)所以从宽度最大的矩形开始填,尽量填满可以用set维护当前行的连续段,这一列遇到黑格就split,去除宽度为\(1\)的,同时记录加入的时间戳来计算矩形高度vo......
  • Codeforces Round 925 (Div. 3)
    A简单分讨。最前面a能放多少就放多少,大头尽量放在后面。B先算出每个水缸最终的水量,然后从前往后扫,多的水平到下一个水缸里去。假如扫到一个水缸小于平均值,那么没救了,输出NO。CC<<B。考虑全体值为\(a_1\)与\(a_n\)时的最小代价,搞两个指针,从前后开始扫一扫即可。D......
  • Codeforces Round 925 (Div. 3) 赛后总结
    此次总结借鉴了Register_int,0x3ea,幻想家协会会长的题解。感谢大佬。RecoveringaSmallString题目大意:将字母a-z编号为1-26,给出一个整数,此整数为三个字母之和,求改字符串的最小字典序。分析可以暴力循环,或者分情况讨论.我们只要尽力保持越前面的字母越小越好。#include<i......
  • Codeforces Round 925 (Div. 3)
    ABC都是一眼题,用了16min。D没有一眼看出来,先往后看。E是博弈论直接跳过。F一眼出思路。G一开始都错题了,不会做。遂先写F。发现我不会判断图中是否有环。一开始写了个dfs以为能过结果复杂度是\(\mathcalO(n^2)\)的,罚时+1。想改成DP那样的记忆化发现很假。于是b......
  • Codeforces Round 925 (Div. 3)
    CodeforcesRound925(Div.3)A-RecoveringaSmallString解题思路:枚举.代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#definesesecondusingi128=__int128_t;usingpiii=pa......
  • Codeforces 1657E Star MST
    记边权上限为\(W\)。转化一下即为\((1,i)(i\in[2,n])\)的边组成的也是原图的最小生成树。考虑\(\text{Prim}\)的方法求最小生成树。从\(1\)号点开始扩展,每次都会选取距离当前已扩展到的点最近的点\(u\)。为了保证\((1,u)\)的边在最小生成树中,需要满足对于已经扩......
  • CodeForces 1931G One-Dimensional Puzzle
    洛谷传送门CF传送门什么[ABC336G]16Integers究极弱化版。把元素\(1\)看成\(01\),元素\(2\)看成\(10\),元素\(3\)看成\(11\),元素\(4\)看成\(00\)。则转化为统计长度为\(2\)的子串\(xy\)出现次数为\(c_{xy}\)的\(01\)串个数。把子串\(xy\)看成\(x\to......