-
P4940 Portal2
主要麻烦的操作就是清空,我们不妨考虑启发式合并 但是我们发现交换了指针之后,栈整个相当于翻转了,所以我们还需要用一个翻转标记记录是否翻转 同时翻转后就是取栈底了,这是栈做不到的,我们需要的是一个前后都能访问的数据结构,可以想到 这里还有一个 就是用 表示两个 ,而不是 ,这样穿入 ,的时候直接写 就行了,简化代码 12345678910111213141516171819202122... -
P4824 [USACO15FEB] Censoring S
暴力 123456789101112131415string S,T;int main(){ cin>>S>>T; while(1) { int pos=S.find(T); if(!(~pos)) break; S.erase(pos,T.size()); } cout<<S; ... -
P3551 [POI2013] USU-Take-ou
考虑最后一段一定是连续的,我们如果删掉这一段,那么倒数第二段也是连续的 这是一个相同的问题,我们考虑删 次 如何判断当前有连续的 个 和 个 ,显然可以想到前缀和 具体来说,我们维护一个栈,满足前缀条件直接暴力弹栈 注意!!!用前缀和和输入字符串的时候 数组不能共用!!! 1234567891011121314151617181920212223242526272829303132... -
P2157 [SDOI2009] 学校食堂
简单的情况就是 这就是线性 考虑到 我们可以考虑状压后面人的状态,去除后效性,即 表示 及其后面 个人的状态 同时我们还需要知道上一个人是谁,然后枚举这一次选谁转移,还要再开一维 表示做完了 个人, 和后面 个人的状态是 ,上一个人是 这里用了一个小技巧就是上一个人用 表示,这样就优化了一维 的空间,同时考虑到 可能为负数,还需要加上一个偏移量 这里 ,为什... -
浅谈前后缀思想
前后缀思维T1 01 背包,求去掉第 $i$ 个物品后的最大价值$pre_{i,j} 表示考虑前, i 个的背包,suf_{i,j} 表示考虑后,i 个的背包$$$\max_{j=0}^m pre_{i-1,j}+suf_{i+1,m-j}$$ T2 P7300 [USACO21JAN] No Time to Paint S给定序列 $A$ ,$Q$ 次询问 $[L,R]$ ,每个... -
P7291「EZEC-5」人赢 加强版
显然有 的做法 我们考虑到一个性质对于 的一对 , 一定劣于 可以分 和 分别在三个区间讨论证明 所以我们可以维护一个类似单调栈的东西 引理 对于 的一个三元组 只用考虑 和 ,因为 考虑到序列一定是上升下降的连续段拼接起来,设当前枚举 xxxxxxxxxx #include<bits/stdc++.h>#define pt putchar(‘ ‘)#de... -
P6381『MdOI R2』Odyssey
考虑 我们发现每个点的状态只有它的出边个数个,可以跑 我们考虑到每次传入一个状态,都需要枚举对应出点的所有出边,这样复杂度太高了,可以卡到 我们考虑压缩边的状态,显然可以想到质因数分解,然后判断指数 具体来说,对于一条边,我们可以枚举它的每个因子 ,同时 ,然后每个因子乘起来就是可以定义为这条边的状态 我们用一个 存下每个边的对偶状态,即 这样每次来了一个状态 点上一条边... -
Luogu Simu4 T2
Here’s something encrypted, password is required to continue reading.
-
Luogu Simu4 T1
Here’s something encrypted, password is required to continue reading.
-
Extra 线段树-动态开点 && 权值线段树
Here’s something encrypted, password is required to continue reading.