合集-总结
摘要:# CSP2024 - J/S 年度总结大会报告
## J 组
预估和总分都为:$100+100+100+15=315.$
$T_1,T_2$ 还挺弱智的,就是没有 $15\min$ 内 $A$ 掉。
阅读全文
摘要:# 就 NOIP2024 中出现的问题进行深入探讨
估分:$100+0+0+0=100.$
好吧,为了一道蓝题我花了 $2\text{ h }45\min.$
其实原因很简单——因为代码实现细节很多导致 $20$ 多分钟想出来的东西隔了 $1h$ 才去实现,并且代码能力不够,调了 $1h$ 才过大样例。
$T_2$ 想了差不多 $30$ 分钟得出了一个很显然的 $\mathcal{O}(n)$ 的 $dp$,但是到了最后没有调出来。考后才发现一道绿题卡我这么久!——原因是没有想到**正难则反**。
所以原本实力:$100+100+0+0=200.$
总结原因:
- 代码能力不够,在这里浪费的时间超过 $1h.$
- 不坚信自己的能力,比如说 $T_1$ 想到正解但是因为细节多没有打。
- 数学方面没有形成思维,比如正难则反。
- 自己不够熟练。
阅读全文
摘要:浅谈分块中的一些技巧 撰写人:high_sky 前言 我爱分块,更爱 lxl 的毒瘤分块题目。 分块核心和原理 将一些东西捆在一起处理。 数量不宜过多。 类似于一个块一个块地跳。 基础回顾 这么单纯可爱朴素的分块是一种十分牛逼(haowan)的数据结构,其代码简洁、可读性强受到了大众的喜爱。 分块
阅读全文
摘要:## 基本算法
### 求无序数组(不可排序)的前驱和后继(比当前值小)
考虑离线使用 `stack` 来进行维护。
顺序遍历的时候,求的是 $i$ 之前能否到达 $i$,不能就标记数组 `right[sta.top()] = i`,容易证明只是所能到达的最远。
倒序遍历同理。
时间复杂度 $\mathcal{O}(n)$,是一个离线算法(预处理)。
阅读全文
摘要:线性基求第 \(k\) 大,先处理 \(p_i\),表示某一位上为 \(1\),其他数这一位是 \(0\) 的数,然后我们就会考虑选与不选,由于只有一个数这一位上有 \(1\),所以就转换成了二进制选取。 什么时候线段树合并要新建节点?(更为厉害【湖南集训】)很显然,我不新建节点会导致一些线段树上面
阅读全文
摘要:首先特判 $d=0$ 的情况。
好,对于 $d\geq 1$ 的情况考虑转化。
注意到等差序列满足:
- 模 $d$ 同余。
- 值两两不同。
我们先把 $a$ 变为正数,然后全部除以 $d$,这肯定是正确的,你可以想一想。
那么我们就全部转化为了 $d=1$ 的情况。
考虑符合条件的序列 $[l,r]$ 满足什么:
- $\max_{i\in[l,r]}a_i-\min_{i\in[l,r]}a_i-1-(r-l+1-2)\leq k$。
- $[l,r]$ 内没有元素重复。
先考虑没有重复的情况:直接记录每个值之前出现最晚的位置。
考虑枚举 $r$,使得最左的 $l$ 满足条件,且 $l\in[x+1,r]$,其中 $x$ 表示 $a_r$ 上次出现的位置。
那么我们只需要使:$\max(l,r)-min(l,r)+l\leq k+r$ 即可。
那么我们如何维护这种东西呢?
注意 $\max,\min$ 用单调栈是好维护的。
阅读全文
摘要:思路跟 [P5770 [JSOI2016] 无界单词](https://www.luogu.com.cn/problem/P5770) 类似,都是一位一位确定的。
我们考虑状态压缩 $dp$。
首先我们枚举第 $i$ 个位置,一遍一遍得出其所要坐的人。
阅读全文
摘要:比赛:2025多校冲刺CSP模拟赛2 日期:\(25.10.04\),场地:\(\text{accoder}\),排名:\(45/137\) 估分:\(100+([0,100])+20+45=165+[0,100]\) 终分:\(100 + 55 + 20 + 75 =250\) 失分 今天的比赛真
阅读全文
摘要:P3648 [APIO2014] 序列分割 将序列分割成 \(k+1\) 个部分,每个部分的元素 \(\geq 1\),然后假设一个块你要分成两个块,代价为分成后两个块里面的元素和的乘积,问你怎么才能使代价最大,并输出方案(SPJ)。 题目分析 注意到顺序是无关紧要的: 若一个块 \(sum\) 要
阅读全文
摘要:## 题目分析
注意到 $a_i\in[1,3]$,故设 $f_{i,j,k}$ 表示现在碗里只有 $1$ 个的有 $i$ 碗,只有 $2$ 个的有 $j$ 碗,只有 $3$ 个的有 $k$ 碗。
我们发现从 $f_{x,y,z}$ 推到 $f_{0,0,0}$ 是复杂的。
不妨将整个过程反过来变成生产寿司从 $f_{0,0,0}$ 推到 $f_{x,y,z}$ 即可。
那么我们有转移:
$$
f_{i,j,k}=\frac{n-i-j-k}{n}(f_{i,j,k}+1)+\frac{i}{n}(f_{i-1,j,k}+1)+\frac{j}{n}(f_{i+1,j-1,k}+1)+\frac{k}{n}(f_{i,j + 1,k-1}+1)
$$
化简有:
$$
(i+j+k)f_{i,j,k}=\frac{i}{n}f_{i-1,j,k}+\frac{j}{n}f_{i+1,j-1,k}+\frac{k}{n}f_{i,j+1,k-1}+n
$$
阅读全文
摘要:比赛:2025多校冲刺CSP模拟赛4 日期:\(25.10.07\),场地:\(\text{accoder}\),排名:\(42/114\) 估分:\(100+100+28+25=253\) 终分:\(100 + 100+28+29 =257\) 应该得分:\(100+100+28+71=299\)
阅读全文
摘要:Stones 题目概述 集合 \(A\),小 \(X\) 和小 \(Y\) 选择其中一个数 \(x\),然后将石堆拿走 \(x\) 个,谁不能操作谁输,一开始石堆石头数量为 \(k\). 数据范围:\(1\leq k\leq 10^5,1\leq n\leq 100,1\leq a_i\leq 10
阅读全文
摘要:比赛:OIFHA251009 日期:\(25.10.09\),场地:\(\text{OIFHA}\),排名:\(5/14\) 估分:\(100+40+0+20=160\) 终分:\(100+40+0+20=160\) 应该得分:\(100+100+0+51=251\) 失分 大概有一部分是时间问题,
阅读全文
摘要:CF1832D2 Red-Blue Operations (Hard Version) 题目概述 给你 \(\{a_n\}\),第 \(i\) 次操作,如果是你第奇数次操作当前位置则令它 \(+i\) 否则 \(-i\)。 给出 \(q\) 个询问,问你进行完 \(k\) 个操作之后 \(a\) 中
阅读全文
摘要:感觉很典,所以就记下来了。
我们考虑一个非常重要的事实:
- 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。
- 而字典序最大又需要前面的尽可能大。
这似乎产生了矛盾,让这道题目看起来有点难。
我们考虑不用 `multiset` 或者双指针求这个值,我们考虑分治的过程。
CDQ 分治是这样的:
>对于左区间算好其分内的答案,右区间算好其分内的答案。
>
>要合并区间的时候,左区间和右区间匹配就行了。
那么我们只需要记录每个区间剩下多少个 $a$ 中的元素和 $b$ 中的元素还没有匹配即可。
最精华的部分来了:由于我们对于每一个 $a_i$ 肯定进行二分答案是否可行,因为字典序本质上就有一个贪心的过程。我们考虑把这个思想搬到一个可支持修改的线段树上面即可。
在线段树上面这个是好维护的,于是这道题就做完了。
阅读全文
摘要:我们括号匹配的经典做法就是把左括号看作 $+1$,右括号看作 $-1$,那么任意一个位置上的前缀和必须 $\geq0$,且最后一个位置的前缀和必须为 $0$。
这个可以引申出来一个定理:
> 对于第 $i$ 个左括号一定满足其位置 $pos\leq 2i-1$。
显然的,因为如果不满足就说明前面的右括号多了,也就是上一个前缀和出现了负数。
那么我们就转化为了处理左括号与这个的偏序关系,又因为字典序天然的贪心,所以说我们从前往后枚举能不能填左括号,如果能填就尽量填。
那怎么判断呢?我们只需要判断这个位置能不能找到偏序关系即可,而且与它数字相同的那一组也要满足。
这个思路很巧妙,位置用 `set` 维护就行了。
阅读全文
摘要:比赛:OIFHA251011 日期:\(25.10.11\),场地:\(\text{OIFHA}\),排名:\(6/16\) 估分:\(100+100+0+20=220\) 终分:\(100+100+10+20=220\) 应该得分:\(100+100+10+40=250\) 失分 没想到 \(T_
阅读全文
摘要:https://www.cnblogs.com/zhln/p/18432582
阅读全文
摘要:一般解决问题 你有一个 \(k\),表示最后要变成 \(k\) 个,或者说是选 \(k\)。 形式化地讲,设 \(f(i)\) 表示最后变成 \(i\) 个,或者是选 \(i\) 个的方案。 你一般要求的是 \(f(k)\) 的最大值或者最小值。 问题特征 你最后的 \((x,f(x))\) 是一个
阅读全文
摘要:题目概述 有 \(n\) 个位置有 \(m\) 个水滴,你在 \(0\) 的位置,每过一个单位,有水滴的地方个数都少 \(1\)。 其中:\(1\leq n\leq 300,-10^9\leq x_i\leq 10^9\)。 分析 感觉很典。 首先先对 \(x\)(带上 \(0\))排序。 我们考虑
阅读全文
摘要:讲解 本质上就是先贪心选择,遇到更优的再换。 P1484 种树 题目概述 给你 \(n\) 个位置,每个位置上有权值 \(a_i\),你至多选择 \(m\) 个位置两两不相邻,求你得到的最大权值。 分析 首先设 \(l_i,r_i\) 表示旁边两个位置。 用大根堆存值和下标。 如果我当前选择了 \(
阅读全文
摘要:比赛:2025多校冲刺CSP模拟赛5 日期:\(25.10.15\),场地:\(\text{accoder}\),排名:\(27/73\) 估分:\(100+20+65+15=200\) 终分:\(100+20+65+5=190\) 应该得分:\(100+40+65+15=220\) 失分 \(T_
阅读全文
摘要:题目链接:P1912 [NOI2009] 诗人小G 题目概述 给你几个字符串,你可以按照给定的顺序任意拼接(你可以分组),但是拼接的时候中间要打空格,设这个当前的拼接长度为 \(sum\),那么代价为 \(|sum-L|^P\),求最小的代价并输出方案。 分析 Luogu题解告诉我们一个快速判断决策
阅读全文
摘要:比赛:OIFHA251017 日期:\(25.10.17\),场地:\(\text{OIFHA}\),排名:\(12/12\) 估分:\(100+0+75+0=175\) 终分:\(0+0+0+0=0\) 应该得分:\(100+30+75+0=205\) 失分 \(T_1\) 背包挂分 \(100p
阅读全文
摘要:比赛:2025多校冲刺CSP模拟赛6 日期:\(25.10.18\),场地:\(\text{accoder}\),排名:\(7/103\) 估分:\(100+100+30+70=300\) 终分:\(100+100+30+50=280\) 应该得分:\(100+100+30+70=300\) 失分
阅读全文
摘要:题目概述 随机 \(2n\) 个数,值域为 \([0,m]\),求前 \(n\) 个数比后 \(n\) 个数大的概率(对质数 \(P\) 取模),其中 \(10^8\leq P\leq 10^9\)。 数据范围:\(1\leq n,m,T\leq 2000\)。 分析 好好玩。 显然可以转化为计数题
阅读全文
摘要:题目概述 Alice 有 \(n\) 张卡牌,第 \(i\)(\(1 \le i \le n\))张卡牌的正面有数字 \(a_i\),背面有数字 \(b_i\),初始时所有卡牌正面朝上。 现在 Alice 可以将不超过 \(m\) 张卡牌翻面,即由正面朝上改为背面朝上。Alice 的目标是让最终朝上
阅读全文
摘要:题目概述 给你 \(n\) 个数 \(a_i\)。 求:\(\max_{i\ne j\ne k}(a_i+a_j)\bmod a_k\)。 分析 好题! 我一开始看到是无从下手的。 但是细想一下,关键点在于 \(a_k\),所以的说,枚举 \(a_k\) 是必不可少的。 然后我们令剩余的数全部对 \
阅读全文
摘要:比赛:2025多校冲刺CSP模拟赛7 日期:\(25.10.22\),场地:\(\text{accoder}\),排名:\(56/73\)! 估分:\(30+0+[80,100]+0=110\) 终分:\(30+0+80+0=110\) 应该得分:\(100+100+[80,100]+?=280\)
阅读全文
摘要:T1 题目概述 求: \[\sum_{i=1}^n\sum_{j=i}^n[\gcd(i,j)=i\text{ xor } j] \]其中 \(n\leq 10^7\)。 分析 赛时没有做出来(doge)。 其实细想一下还是可以做的。 不难想到枚举 \(d=\gcd(i,j)\),那么 \(i\te
阅读全文
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P1600。 给你一棵树,每个节点上有一个观察时间,现在有 \(m\) 个选手,选手会以每秒一个节点的速度,从 \(s_i\) 到 \(t_i\)。 求对于每个节点的观察时间能观察到多少个选手。 分析 经典题目记录
阅读全文
摘要:题目概述 给出一棵树,边权为 \(1\),现在让你求一个完全图的最大生成树的边权和,其中 \((i,j)\) 的边权为两个点在树上的路径。 动态加叶子节点。 分析 许多 trick 的题目。 考虑不加点怎么做,可以想到 Tree MST,用了点分治进行边优化,使得边的数量为 \(\mathcal{O
阅读全文
摘要:题目概述 给定长度为 \(n\) 的 \(a,b\),给定 \(m\) 个区间 \(l,r\),如果 \(\sum_{i=l}^r a_i=\sum_{i=l}^r b_i\),那么就令这个区间的 \(a_i=b_i\)。 问能否将所有的 \(a\) 变成 \(b\)。 分析 转化一下不难想到令 \
阅读全文

浙公网安备 33010602011771号