rounding maximum 1857b cf
CF1654C
题意 有一些蛋糕,最开始只有一块。每次可以选择质量为 $x(x\ge2)$ 的一块,将其切成 $\left\lfloor\frac x2\right\rfloor$ 和 $\left\lceil\frac x2\right\rceil$ 两块。现在给定切 $n-1$ 次后的结果,判断能否通过最开始的 ......
CF1698D
观察题面:$n\le10^4$,询问次数 $\le15$,因此考虑二分。 用 $x$ 表示没有被交换过的那个元素。 考虑当询问区间 $[l,r]$ 时,得到的序列满足什么条件,才能确定 $x$ 在这个区间内。 考虑一个在交换前的序列的 $[l,r]$ 区间内的元素 $y$,由题意 $a_y=y$。设 ......
CF1806E
题面 看起来是个 DS 题,事实上是个乱搞题,做法挺多的。由于它给的这个结构看起来就不好优化,所以考虑随机化。 由于两个点到达 LCA 后剩下的贡献就是 LCA 到根的每个点权值的平方,这部分可以 $O(n)$ 预处理,所以只需要考虑两个点之间的路径所产生的贡献。 在树上随机撒 $\sqrt n$ ......
CF1227D2
题面 如果我们将 $a$ 数组从大到小排序,那么显然的,前 $k$ 个数就对应着长度为 $k$ 的元素和最大的子序列中各元素的值。 由于要求字典序最小,所以我们将 $a$ 数组中的元素下标进行排序,在排序时以对应的元素值为第一关键字,以元素下标为第二关键字(排序后对应的元素值从大到小,大小相等的元素 ......
CF1699C
前排提醒:这是本题最烂的做法,代码长达 91 行。 由于题里提到了 $\operatorname{MEX}$,所以考虑该怎么求 $\operatorname{MEX}$。 我们使用主席树。由于主席树难以直接处理下标为 $0$ 的情况,所以给数组中的每个值都加上一个偏移量 $1$,同时下文提到的 $\ ......
CF1798C
题面 形式化题意: 给出长为 $n$ 的两个序列 ${a}$ 和 ${b}$,定义序列 ${c}$ 满足:$c_i=d_ib_i$,其中 $d_i\mid a_i$。求 ${c}$ 最少能被分成多少个连续段,使得每个连续段内的值相同。 首先对于一个 $i$,如果 $c_i$ 能和 $c_{i-1}$ ......
CF1798E
题面 看到要求每一位的答案,首先考虑倒着扫,因为加数一般都比删数好做。 对于任意长为 $m$ 的的序列 ${b}$,我们都可以通过将 $b_1$ 改成 $1$,将 $b_2$ 改成 $m-2$ 使得 ${b}$ 成为一个 multitest,因此操作数不会超过 $2$。 现在讨论答案的三种情况: 答 ......
Educational Codeforces Round 147 (Rated for Div. 2)
题目链接 B 核心思路 真的需要加强了,看到这个最大值和最小值我们其实也需要往对应的最大值和最小值的相关操作去想,不如前缀最小值/前缀最大值或者是后缀最小值/后缀最大值。 这里一个比较直接的想法就是想找到不同的地方,然后看不可以扩展。那么怎么看是否可以扩展呢,如果是左边的话,就看当前的位置是不是小于 ......
Educational Codeforces Round 127 (Rated for Div. 2)
题目链接 D 核心思路 首先挖掘下操作的性质吧: x>1&&x+3<10: 1 x x+1 x+2 x+3 10 我们可以发现这样子好像对于我们的结果是没有影响的,答案还是9. 所以这个性质就挖掘出来了啊,只要我们把一段连续的插入到对应的区间里面就好了。也就是只要这个区间的左端点小于插入连续的数的最 ......
Codeforces Beta Round 96 (Div. 1) -- C. Logo Turtle (dp,记忆化搜索)
#记忆化搜索 就是暴力,多一步优化,走过的路别走了。说实话,可能是数据水了,居然能过。 const int N = 510; string s; int n, ans; bool st[501][501][2][50]; void dfs(int x, int idx, int dir, int k ......
内置函数round() 用于数字的四舍五入
内置函数: round() 用于数字的四舍五入round(5.214,2) #结果是 5.21 四舍五入规则: 要求保留位数的后一位<=4,则进位,如round(5.214,2)保留小数点后两位,结果是 5.21要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位,如round(5.215, ......
Educational Codeforces Round 147 (A-D)
#A. Matching 橘子熊:这题太简单了我不想写 ##题面 Description 给定给一个带问号的字符串,求有多少种可能的数字 Input 多次询问,一次一个字符串 Output 对于每次询问,输出可能的数字的总数 数据范围与约定 2e5次询问,单词询问不超过5个字符 ##思路 主要思路 ......
Educational Codeforces Round 39 (Rated for Div. 2) -- D. Timetable (DP)
写得很折磨人,每次dp都写个一个多小时,写出来明明觉得不难 ^.^ 题目大意:可以进行K次操作,把删除1,进行k次操作后每行第一个 1 和最后一个 1 的位置 相减的绝对值加 1 得到的结果最小。 做法:每次肯定是要从左删或者从右边删,然后顺着这个思路,先把每行的进行小于等于k次操作时, 每行最小的 ......
CF1819B The Butcher
题意:有一个未知大小的矩形,每次横着或者竖着剪成两块,将其中一块放入盒子里,继续对另一块进行操作,最后把剩余的也放进盒子里,现在已知盒子内的所有矩形的长和宽,问原来可能的矩形长和宽是多少(矩形没有进行旋转) Solution 比较容易想到把所有的矩形面积和加起来就是原矩形的面积了,然后找到矩形中最大 ......
CF题解
E. Rearrange Brackets 2100 括号树 gq! https://codeforces.com/contest/1821/problem/E 题解:若我们把序列看作是一个由匹配括号组成的森林,外层括号是内层括号的父亲,则整个正则括号序列的cost可以看作是森林中所有点的深度之和, ......
CF1821D Black Cells 题解 贪心
题目链接:https://codeforces.com/problemset/problem/1821/D 题目大意 在一条数轴上有无穷个点,下标为 $0, 1, 2, \ldots$,初始时每个点都是白色的。 你控制着一个机器人,初始时机器人位于坐标为 $0$ 的那个点。 机器人有两种状态:激活状 ......
Educational Codeforces Round 147 (Rated for Div. 2) A-D题解
A. Matching 题意:给出一个数,数中可能会有?,可以用0-9替换问号,问最后有多少种方法 Solution 对于位于首位的数可以用1-9替换,对于其他位置的额、可以用0-9替换,如果首位为0则无解 void solve() { string s;cin>>s; if(s[0]=='0') ......
SMU Spring 2023 Trial Contest Round 9
SMU Spring 2023 Trial Contest Round 9 A - Wrong Subtraction #include<bits/stdc++.h> using namespace std; typedef pair<int,int>PII; typedef pair<string ......
SMU Spring 2023 Trial Contest Round 9
A. Wrong Subtraction #include <bits/stdc++.h> using namespace std; int32_t main() { int n, k; cin >> n >> k; while (k--) { if (n % 10 == 0) n /= 10; e ......
「解题报告」CF708E Student's Camp
感觉 这篇题解 的做法很强啊,贺一下。 连通:考虑将每一种情况对应一条路径。钦定这条路径为能往下则往下,不能往下就向左或向右走到第一个能往下的位置然后往下。 这样只考虑每一种路径,再对应的计算路径相应的情况的概率和。这个是容易计算的,而路径需要记录的状态少了一维,于是就可以 $O(nm)$ 的解决了 ......
Codeforces Round 866 (Div. 2)(A~C)
A. Yura's New Name 题意 在字符串$s$中添加 "" 或者 "^",使得$s$中的任意字符都必须为 "^^" 或者 "^^" 的一部分,求最少要添加的字符数量 思路 当字符串头部为 "_" 时,一定要在前面添加1个字符 "^" 当字符串尾部为 "_" 时,一定要在后面添加1个字符 ......
Educational Codeforces Round 110 (Rated for Div. 2)
题目链接 C 核心思路 这个题目其实我们可以转换为把当前串转换为完美串有多少种方案呢,也就是我们从前往后一步一步往完美串去构造我们的方案。 这个思路非常巧妙,我刚开始的思路局限于算贡献去了。 完全就脱离了正确的思路。 集合定义 $f[i][0/1]表示的是处理了前i个位置,并且当前位置是0的方案数$ ......
Codeforces Round 689 (Div. 2, based on Zed Code Competition)D.Divide and Summarize
题意: 我们给定包含n个正整数的数组,我们可以对这个数组执行一些操作之后,可以让数组内元素的和成为我们想要的数。 我们对数组的执行操作一共分为三个步骤,第一个步骤是我们首先计算出数组的中间值mid。这里mid的定义不是中位数也不是均值,而是最大值和最小值的均值。也就是mid = (min + max ......
题解 CF825E【Minimal Labels】
偶然间翻到三个月前写的这个题,发现现有的题解均未给出解法的正确性证明,只是不明不白地写了一些对理解做法毫无帮助的话。我认为解法的正确性并不显然,因此这篇题解主要给出正确性证明,补上逻辑漏洞。 解法与其他题解一样,即:建反图,然后跑拓扑排序,每次优先取出可以取出的编号最大的点,从 $n$ 到 $1$ ......
CF1714D 题解
CF1714D 题解 description 给定黑色文本 $t$ 和 $n$ 个字符串 $s_1,s_2...s_n$. 一次操作可以将 $t$ 中与 $s_i$ 相等的子串涂成红色。 一个位置多次涂色后仍是红色。$s_i$ 可以使用多次。 求将 $t$ 涂成红色的最小次数,并输出方案。 无解输出 ......
CF ER147 div.2
A 简单计数题,判断前导零。 #include <bits/stdc++.h> using namespace std; int T; int main(){ cin >> T; while(T --){ char s[10]; cin >> s; int n = strlen(s); int an ......
题解:【CF235D】Graph Game
题目链接 根据期望的线性性,一次操作使得接下来要递归处理 $|G|$ 个点,将这些贡献分摊到 $|G|$ 个点上,这样我们接下来只需要计算概率。 首先考虑如果是树怎么做。操作等价于随机一个排列,顺次删掉排列中的点,并求出删掉当前点之前其所处的连通块的大小。记当前 $x$ 为点分治中心,点对 $(x, ......
CF1716D
Chip Move - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 背包DP: 这道题与完全背包不一样的地方便是:至少要拿一个物品。 DP[i,j]为前i个物品,每个至少拿一个,体积为j时的方案数 转移方程:DP[i,j]=DP[i-1,j-w[i]]+DP[i,j-w[i]](具 ......
CF1404 Div1 VP记录
A 略 B 看到这道题的第一眼:Bob 怎么赢? 样例二给了解释,对于一条链,Bob 看 Alice 到了哪边,跳到另一边即可。 大胆猜测,这是 Bob 能赢的唯一机会。其他时候 Alice 采用步步逼近一定能取得胜利(详情请参见国际象棋中的单后杀王)。 使用这个方法要满足三个条件: $db > 2 ......
Math.ceil,Math.round,Math.floor区别
Math.ceil,Math.round,Math.floor区别 //向上取整 System.out.println("amt1=" + Math.ceil(71.01)); //四舍五入 System.out.println("amt2=" + Math.round(71.01)); //向下取 ......