题解1525f cf

CF1029

A Many Equal Substrings 很容易想到要找border,一看数据范围n<=50,kmp,直接暴力找就行了 #include<bits/stdc++.h> using namespace std; int n,k; char s[55]; int maxid; signed mai ......
1029 CF

CF777题解

分析 先对每一列都做 DP 寻找极长单调不降区间,能够得到若干极长单调不降区间,只要询问的区间是这些区间的子区间,那么说明在这个区间内必有一列的这个区间是单调不降的。 思考如何快速判断子区间。 用 \(f_{x}\) 表示以 \(x\) 为所有左端点为 \(x\) 的区间的右端点最大值,那么对于询问 ......
题解 777 CF

[CF335F] Buy One,Get One Free

气死我了,我决定水了这篇题解。 反悔贪心,考虑决策及反悔,记到第三层反悔就行。 然后你发现要一次只考虑一个不行,要两个两个考虑,然后就做完了,如果深入往下分析能分析出更多可以简化做法的结论。 #include <bits/stdc++.h> using namespace std; const in ......
One 335F Free 335 Buy

CF777B题解

分析 思考对于 \(M\) 的每个数而言,贡献是一定的,它最多只能换掉一个数。 那么贪心地能换就换,但是如果换小的可能会导致更小的数换不掉,那么就换能换的最大的,这样不会干扰只能换小数的其他数,能换这个数的可以去换其他数,如果连其他数都换不掉说明这两个数等效,换谁都一样,所以这样换一定是最优的。 如 ......
题解 777B 777 CF

CF777A题解

分析 发现操作 \(6\) 次后就会回到初状态,于是将状态打表,将 \(n\bmod6\) 即可。 代码 #include <iostream> using namespace std; constexpr int MAXN(1000007); int a[6][3] = { {0, 1, 2}, ......
题解 777A 777 CF

CF1883D In Love

思路 如果每一次加或者删一个区间,再去暴力找有没有互不相交的区间的话,铁定 TLE。 那么,我们考虑维护有多少对互不相交的区间,那么每次加或者删一个区间,就去算这个区间对答案的贡献,然后再看答案是否为 \(0\) 即可快速判断有没有互不相交的区间。 现在考虑如何计算一个新加入或者删去的区间能让互不相 ......
1883D 1883 Love CF In

CF888G题解

分析 看到异或不难想到 01Trie。 不难想到,当两个数的值相等的时候,我们可以当这两个点是一个点,因为连边的费用为 \(0\)。 那么对于一个序列 \(n\),若存在 \(m\) 种不同的权值,那么在 Trie 树上子节点数为 \(2\) 的节点就有 \(m-1\) 个(因为如果一个数新加进来与 ......
题解 888G 888 CF

P3400 仓鼠窝 题解-单调栈典题

20231026 P3400 仓鼠窝 题解-单调栈典题 Statement 传送门 输出 01 矩阵中不含 0 的子矩阵的个数。\(n,m \le 3000\) Solution 很妙的做法,典题,于是写了题解。 做法也很简单,就是你枚举每一个节点作为右上角的点的方案数, 发现其实有很多无用的点,比 ......
仓鼠 题解 P3400 3400

#交互,鸽笼原理#CF1776C Library game

题目 有一个长度为 \(m\) 的书架,以及 \(n\) 个长度 \(a_1,a_2,\dots,a_n\) Alessia 和 Bernardo 从书架上取书。每次由 Alessia 选择一个之前没选过的 \(i\), 并选择一个长度为 \(a_i\) 的区间,需要保证这个区间内的书全都没有被取过 ......
鸽笼 原理 Library 1776 game

P8865 [NOIP2022] 种花 题解

前言 去年多测不清空导致即便 CCF 放过了我的 \(O(n^2 m)\) 的代码但依然挂成了 \(0pts\)。 当时看清空数组后能过 CCF 数据就没再管。 时隔 \(1\) 年,重做这道题写了 \(O(nm)\) 的正解,终于完成了当年的心愿。 \(O(n^2 m)\) 思路 想到计算方案的话 ......
题解 P8865 8865 2022 NOIP

CF596B Wilbur and Array题解

同步发布与洛谷(太懒了不想写东西直接搬过来了(((逃 ) 原题链接 简单贪心。 题意 求一个起始全为 \(0\) 的数列 \(a_1,a_2 \cdots a_n\) 每次可以选择一个数 \(i\) 使 \(a_i \cdots a_n\) 都加上或减去 \(1\),求修改成给定的序列 \(b_1, ......
题解 Wilbur Array 596B 596

SP4082 MBLAST - BLAST 题解

几万年前做的 dp 题了,有亿点点水 题意简述 求一个字符串添加多少个空格距离最小 解法 求距离最小,可以考虑动规,其实这题的写法和最长公共子序列的写法类似。 我们设 \(f(i,j)\) 表示 \(a[1] \sim a[i]\) 和 \(b[1] \sim b[j]\) 的距离 不加空格的时候为 ......
题解 MBLAST BLAST 4082 SP

CF1468A LaIS

题意简述 给出一个长度为 \(n\) 的序列 \({a_n}\) , 找出一个子序列 \({b_k}\) ,使其满足 \(\min(b_1, b_2) \leq \min(b_2, b_3) \leq ··· \leq \min(b_{k - 1}, b_k)\) ,求 \(k\) 的 最大值。 \ ......
1468A 1468 LaIS CF

[AGC061A] Long Shuffle 题解

题意 给定一个满足 \(A_i=i\) 的排列 \(A\),求对其进行一次 \(\mathrm{shuffle}(1,N)\) 操作后其第 \(K\) 项的值。其中 \(\mathrm{shuffle}(L,R)\) 的定义如下: 若 \(R = L + 1\),那么交换 \(A_L\) 和 \(A ......
题解 Shuffle 061A Long AGC

CF1672

A Log Chopping 直接把每次总切割数算出来就行 #include<bits/stdc++.h> using namespace std; int t; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) ......
1672 CF

P4678 [BalticOI 2005] Bus Trip 题解

P4678 [BalticOI 2005] Bus Trip 题解(RE:题解再改造!!) 贴码 #include<bits/stdc++.h>#define MAXN 500010using namespace std;//ifstream is("trip.in",ios::in); //ofs ......
题解 BalticOI P4678 4678 2005

CF888F题解

分析 手玩样例发现连一条边实际上是将一个多边形分割成两个部分,而且不能在这两个部分直接连边,发现这两个部分是完全独立的,于是考虑区间 DP。 设状态 \(f_{l,r}\) 表示将 \([l,r]\) 区间连成树的方法数量。 那么存在两种转移,一种是 \(l,r\) 间不直接连边,这样中间的点都需要 ......
题解 888F 888 CF

P9753 [CSP-S 2023] 消消乐 题解

考虑预处理。 处理 $a$ 数组,每次走到一个位置 $i$,往前搜索。 当前位置不等于 $i$ 则通过这个位置继续往前查找。一直到当前位置等于 $i$,或者到达最前端则停止。 接下来进行第二次处理。 由于已经对 $a$ 进行过预处理,在计算时只需要从有值的点分别往前统计即可。 最后求一遍和。 /* ......
题解 P9753 CSP-S 9753 2023

CF 刷题计划 4

应该是 OI 退役前最后一次发「CF 刷题计划」了。 难度范围实时浮动,取决于智商浮动。 反正也不会再出模拟赛了,所以干脆都放上来吧。 难度标识(0-5 保留一位小数): 标准参考 1 一眼丁真 2 需要时间思考 3 需要题解提示 4 需要仔细阅读题解 CF1430G Yet Another DAG ......
CF

CF1586I 题解

CF1586I 题解 传送门 更好的阅读体验 简化题意:有 $n\times n$ 的网格,你需要进行黑白染色,使得每个格子的颜色恰好与 2 个与其四联通的格子的颜色相同,其中有些位置已经确定,问是否有解及是否有唯一解。 思路: 很神仙的构造题。 先从特殊的地方入手。对于 4 个角,它们只和 2 个 ......
题解 1586I 1586 CF

[HDU 3483] A Very Simple Problem 题解

题目描述 快速求出下面式子的值: \[\left(\sum\limits_{k=1}^{N}k^{x}x^{k}\right)\bmod M \]其中 \(1 ≤ N, M ≤ 2\times 10^9\), 并且 \(1 ≤ x ≤ 50\)。 题解 (solution) 对于该类题目,\(N\) ......
题解 Problem Simple 3483 Very

CF868E Policeman and a Tree

感觉,好自然啊! 想法 dp,想办法分解这个博弈的过程。发现警察会从一片叶子到另一片叶子,在叶子抓住小偷时所有小偷可以全树乱走。因此 dp:\(f_{u, i}\) 表示警察位于 \(u\),全树剩余 \(i\) 个小偷时的答案。 因为两边都绝对理性,小偷在警察离开叶子后不会移动并位于多片叶子上。考 ......
Policeman 868E Tree 868 and

Pinely Round 2 (Div. 1 + Div. 2) (CF1863)

本来开了某场远古 Div 1,然后学了一堆前置知识至今仍然不会 E。换一场写来得及吗? A. Channel 模拟,略。 B. Split Sort Description 给你一个长度为 \(n\) 的排列。 每次操作你可以选择一个数 \(x\),然后类似于快速排序地把小于 \(x\) 和大于等于 ......
Div Pinely Round 1863 CF

P5537 【XR-3】系统设计 题解-哈希+线段树二分

20231026 P5537 【XR-3】系统设计 题解-哈希+线段树二分 这个东西怎么会和哈希有关?!直接寄。 Statement 这个系统首先需要输入一棵 \(n\) 个点的有根树和一个长度为 \(m\) 的序列 \(a\),接下来需要实现 \(q\) 个操作。 操作分两种: 1 x l r 表 ......
线段 题解 系统 P5537 5537

「NOIP2016 提高组」天天爱跑步题解

题目背景NOIP2016 提高组 Day1 T2 题目描述小 C 同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。《天天爱跑步》是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。 这个游戏的地图可以看作一一棵包含 n 个结点和 n-1 条边的树, 每条边连接两个结点,且任意两个结 ......
题解 NOIP 2016

题解 QTREE7 - Query on a tree VII

题目描述 一棵树,每个点初始有个点权和颜色。 0 u :询问所有 \(u,v\) 路径上的最大点权,要满足 \(u,v\) 路径上所有点的颜色都相同。 1 u :反转 \(u\) 的颜色。 2 u w :把 \(u\) 的点权改成 \(w\) 。 \(color_i\in[0,1]\),\(w_i\ ......
题解 QTREE7 QTREE Query tree

CF1746F Kazaee 题解

对集合的一些判断可以考虑随机化哈希。 给每个数随一个权,如果集合 \(S\) 中每个数的出现次数都是 \(k\) 的倍数,那 \(S\) 中元素的权值之和就会是 \(k\) 的倍数,否则会是一个在 \([0,k)\) 中随机的值。 也就是说如果这个集合不满足要求,我们做一次这个检测,有 \(\fra ......
题解 Kazaee 1746F 1746 CF

CF888E题解

分析 看到 \(n \leq 35\) 的数据范围就想到了 meet-in-middle。 先爆搜出对于 \(1 \sim \frac{n}{2}\) 和 \(\frac{n}{2} \sim n\) 两个下标范围内在模意义下所有的和。 然后用一个常见 trick,就是枚举第二个部分的和,然后匹配第 ......
题解 888E 888 CF

P9754 [CSP-S 2023] 结构体 题解

大模拟的话,大家应该都会,主要就是容易写挂。 操作 1 先理解什么叫做对齐规则。这点我们以样例 2 进行解释: struct a { int aa; short ab; long ac; byte ad; } 那么 aa 占据了 \(0\text{~}3\) 字节的地址,ab 占据了 \(4\tex ......
题解 结构 P9754 CSP-S 9754

CCC 2023 题解 和 思考过程

Trianglane 水题,只要分情况判断中间和两侧有边叠牢的情况,每次减2 #include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <cstrin ......
题解 过程 2023 CCC