随笔分类 - 总结
摘要:题目概述 给你 \(n\) 个数 \(a_i\)。 求:\(\max_{i\ne j\ne k}(a_i+a_j)\bmod a_k\)。 分析 好题! 我一开始看到是无从下手的。 但是细想一下,关键点在于 \(a_k\),所以的说,枚举 \(a_k\) 是必不可少的。 然后我们令剩余的数全部对 \
阅读全文
摘要:比赛: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
阅读全文
摘要:题目链接:P1912 [NOI2009] 诗人小G 题目概述 给你几个字符串,你可以按照给定的顺序任意拼接(你可以分组),但是拼接的时候中间要打空格,设这个当前的拼接长度为 \(sum\),那么代价为 \(|sum-L|^P\),求最小的代价并输出方案。 分析 Luogu题解告诉我们一个快速判断决策
阅读全文
摘要:比赛: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_
阅读全文
摘要:讲解 本质上就是先贪心选择,遇到更优的再换。 P1484 种树 题目概述 给你 \(n\) 个位置,每个位置上有权值 \(a_i\),你至多选择 \(m\) 个位置两两不相邻,求你得到的最大权值。 分析 首先设 \(l_i,r_i\) 表示旁边两个位置。 用大根堆存值和下标。 如果我当前选择了 \(
阅读全文
摘要:一般解决问题 你有一个 \(k\),表示最后要变成 \(k\) 个,或者说是选 \(k\)。 形式化地讲,设 \(f(i)\) 表示最后变成 \(i\) 个,或者是选 \(i\) 个的方案。 你一般要求的是 \(f(k)\) 的最大值或者最小值。 问题特征 你最后的 \((x,f(x))\) 是一个
阅读全文
摘要:https://www.cnblogs.com/zhln/p/18432582
阅读全文
摘要:比赛:OIFHA251011 日期:\(25.10.11\),场地:\(\text{OIFHA}\),排名:\(6/16\) 估分:\(100+100+0+20=220\) 终分:\(100+100+10+20=220\) 应该得分:\(100+100+10+40=250\) 失分 没想到 \(T_
阅读全文
摘要:我们括号匹配的经典做法就是把左括号看作 $+1$,右括号看作 $-1$,那么任意一个位置上的前缀和必须 $\geq0$,且最后一个位置的前缀和必须为 $0$。
这个可以引申出来一个定理:
> 对于第 $i$ 个左括号一定满足其位置 $pos\leq 2i-1$。
显然的,因为如果不满足就说明前面的右括号多了,也就是上一个前缀和出现了负数。
那么我们就转化为了处理左括号与这个的偏序关系,又因为字典序天然的贪心,所以说我们从前往后枚举能不能填左括号,如果能填就尽量填。
那怎么判断呢?我们只需要判断这个位置能不能找到偏序关系即可,而且与它数字相同的那一组也要满足。
这个思路很巧妙,位置用 `set` 维护就行了。
阅读全文
摘要:感觉很典,所以就记下来了。
我们考虑一个非常重要的事实:
- 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。
- 而字典序最大又需要前面的尽可能大。
这似乎产生了矛盾,让这道题目看起来有点难。
我们考虑不用 `multiset` 或者双指针求这个值,我们考虑分治的过程。
CDQ 分治是这样的:
>对于左区间算好其分内的答案,右区间算好其分内的答案。
>
>要合并区间的时候,左区间和右区间匹配就行了。
那么我们只需要记录每个区间剩下多少个 $a$ 中的元素和 $b$ 中的元素还没有匹配即可。
最精华的部分来了:由于我们对于每一个 $a_i$ 肯定进行二分答案是否可行,因为字典序本质上就有一个贪心的过程。我们考虑把这个思想搬到一个可支持修改的线段树上面即可。
在线段树上面这个是好维护的,于是这道题就做完了。
阅读全文
摘要:CF1832D2 Red-Blue Operations (Hard Version) 题目概述 给你 \(\{a_n\}\),第 \(i\) 次操作,如果是你第奇数次操作当前位置则令它 \(+i\) 否则 \(-i\)。 给出 \(q\) 个询问,问你进行完 \(k\) 个操作之后 \(a\) 中
阅读全文
摘要:比赛:OIFHA251009 日期:\(25.10.09\),场地:\(\text{OIFHA}\),排名:\(5/14\) 估分:\(100+40+0+20=160\) 终分:\(100+40+0+20=160\) 应该得分:\(100+100+0+51=251\) 失分 大概有一部分是时间问题,
阅读全文
摘要:Stones 题目概述 集合 \(A\),小 \(X\) 和小 \(Y\) 选择其中一个数 \(x\),然后将石堆拿走 \(x\) 个,谁不能操作谁输,一开始石堆石头数量为 \(k\). 数据范围:\(1\leq k\leq 10^5,1\leq n\leq 100,1\leq a_i\leq 10
阅读全文
摘要:比赛: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\)
阅读全文
摘要:## 题目分析
注意到 $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
$$
阅读全文
摘要:P3648 [APIO2014] 序列分割 将序列分割成 \(k+1\) 个部分,每个部分的元素 \(\geq 1\),然后假设一个块你要分成两个块,代价为分成后两个块里面的元素和的乘积,问你怎么才能使代价最大,并输出方案(SPJ)。 题目分析 注意到顺序是无关紧要的: 若一个块 \(sum\) 要
阅读全文
摘要:考虑区间 $dp$。
设 $f_{i,j}$ 表示处理 $[i,j]$ 最小的总惩罚值。
分类:
- 产品 $i$ 第一个出栈,则有 $f_{i,j}=t_i\times sd_{i,j}+f_{i+1,j}$
- 产品 $i$ 第 $k$ 个出栈,则有 $f_{i,j}=f_{i+1,k}+f_{k + 1,j}+st_{i,k}\times(d_i+sd_{k+1,j})$。
第二种情况第 $k$ 个出栈,那肯定 $i+1$ 到 $k$ 都已经出完栈了,所以后这些贡献。
阅读全文
摘要:首先特判 $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$ 用单调栈是好维护的。
阅读全文
摘要:线性基求第 \(k\) 大,先处理 \(p_i\),表示某一位上为 \(1\),其他数这一位是 \(0\) 的数,然后我们就会考虑选与不选,由于只有一个数这一位上有 \(1\),所以就转换成了二进制选取。 什么时候线段树合并要新建节点?(更为厉害【湖南集训】)很显然,我不新建节点会导致一些线段树上面
阅读全文
摘要:## 基本算法
### 求无序数组(不可排序)的前驱和后继(比当前值小)
考虑离线使用 `stack` 来进行维护。
顺序遍历的时候,求的是 $i$ 之前能否到达 $i$,不能就标记数组 `right[sta.top()] = i`,容易证明只是所能到达的最远。
倒序遍历同理。
时间复杂度 $\mathcal{O}(n)$,是一个离线算法(预处理)。
阅读全文

浙公网安备 33010602011771号