随笔分类 - 题库—其他
摘要:题意 "题目链接" Sol 记$s_i$表示前$i$个数的前缀异或和,我们每次相当于要找一个$j$满足$0 define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second // define int
阅读全文
摘要:题意 "题目链接" Sol 傻叉的我以为给出的$t$是单调递增的,然后$100\rightarrow0$ 首先可以按$t$排序,那么转移方程为 $f[i] = min_{j=0}^{i 1}(max(t[i], f[j]) + 2 max_{k=j+1}^i x[k])$ 不难发现,若$i defi
阅读全文
摘要:题意 "题目链接" Sol 直接拿set维护$li$连续段。因为set内的区间互不相交,而且每个线段会被至多加入删除一次,所以复杂度是对的。 cpp include define Pair pair define MP make_pair define fi first define se seco
阅读全文
摘要:题意 "题目链接" Sol 不想打公式了,最后就是求一个 $\sum_{i=1}^n ig(\frac{N}{i})$ $g(i) = \sum_{i=1}^n \phi(i) i^2$ 拉个$id2$卷一下 "这个博客推的狠详细" cpp include define int long long
阅读全文
摘要:题意 "题目链接" Sol 比赛结束后才调出来。。不多说啥了,就是因为自己菜。 裸的up down dp,维护一下一个点上下的直径就行,一开始还想了个假的思路写了半天。。 转移都在代码注释里 ~~毒瘤题目卡空间~~ cpp include define Pair pair define MP(x,
阅读全文
摘要:题意 "题目链接" Sol 直接对出现的次数hash即可,复杂度$O(26n^2)$ 一开始没判长度条件疯狂wa cpp include // define int long long define LL long long define ull unsigned long long using n
阅读全文
摘要:题意 "题目链接" 给出长度为$n$的序列,每次询问区间$[l, r]$,要求最大化 $max |x − y| : L_i ≤ x, y ≤ R_i and A_x = A_y$ Sol 标算神仙的一批看不懂。 维护好每个数出现的左右位置之后直接上不删除莫队就行了 cpp include const
阅读全文
摘要:题意 "题目链接" Sol 首先一个结论:floyd算法的正确性与最外层$k$的顺序无关(只要保证是排列即可) 我大概想到一种证明方式就是把最短路树上的链拿出来,不论怎样枚举都会合并其中的两段,所以正确性是对的 这道题的话显然一个$n^4$的暴力是枚举哪个点不选,再跑floyd。 这个暴力等价于求出
阅读全文
摘要:题意 "题目链接" Sol 一道咕咕咕了好长时间的题 题解可以看 "这里" cpp include define LL long long using namespace std; const int MAXN = 1e7 + 5e6 + 10, mod = 1e9 + 7, mod2 = 1e9
阅读全文
摘要:题意 "题目链接" Sol 直接做肯定不好搞(反正我不会。。) 直接开$n$个Pair类型的set,维护每个数的出现位置 每次在set中二分后暴力合并即可 然后就是树状数组的基本操作了 时间复杂度:$O(nlog^2n)$ cpp include define Pair pair define MP
阅读全文
摘要:题意 "题目链接" Sol 不会做啊AAA。。 暴力上肯定是不行的,考虑根号分组 设$m = \sqrt{n}$ 对于前$m$个直接暴力,利用单调队列优化多重背包的思想,按$\% i$分组一下。复杂度$O(n\sqrt{n})$ 对于后$m$个,此时每个物品没有个数的限制,换一种dp方法 设$g[i
阅读全文
摘要:题意 ~~[题目链接]~~这怎么发链接啊。。。。。 Sol 枚举一个断点,然后类似于LIS一样dp一波 这个边界条件有点迷啊。。fst了两遍。。。 cpp include using namespace std; const int MAXN = 1e5 + 10, INF = 1e9 + 7; i
阅读全文
摘要:题意 ~~[题目链接]~~这怎么发链接啊。。。。。 有一个 $n$ 个点的树,每个点有点权(点权可能为负) ,求包含点$1$的最 大权连通子图(的权值和) 。 $n \leqslant 2500$ Sol 刚开始还以为是个树形依赖背包呢。。结果发现后面给的两个vector根本就没用 直接减一下得到每
阅读全文
摘要:题意 ~~[题目链接]~~这怎么发链接啊。。。。。 有$n$张符卡排成一个队列,每张符卡有两个属性,等级$li$和伤害$di$。 你可以做任意次操作,每次操作为以下二者之一: 把队首的符卡移动到队尾。 使用队首的符卡,对敌人造成$d_i$点伤害,并丢弃队首的$l_i$张符卡(包括你所使用的符卡)。如
阅读全文
摘要:题意 "题目链接" Sol 不愧是dls出的比赛啊,265个交了题的人只有8个有分Orz 做完这题,,感觉自己的位运算dp姿势升华了。。。 首先最裸的dp应该比较好想,设$f[i][j][k]$表示前$i$个数选出来的数异或和为$j$,按位与和为$k$的方案数 转移的时候讨论一下该位置选不选,最后只
阅读全文
摘要:题意 "题目链接" Sol 挺简单的吧。考虑两个元素什么时候不满足条件 设$a_i$与$a_i + 1$最高的不同位分别为 ,显然$S$的这一位必须为$0$,否则这一位必须为$1$ 剩下的就没有限制条件了 时间复杂度:$nlogn$??????!!!!!! cpp include define LL
阅读全文
摘要:题意 "题目链接" Sol 五位数点问题,~~写个cdq分治套cdq分治套cdq分治套cdq分析就完了~~ 可以用bitset搞 对于每一科开$n$个bitset,其中$b[i]$表示的排名为$1 i$的人是哪些 查询的时候把每科的bitset &起来就行了 复杂度$k\frac{n^2}{32}$
阅读全文
摘要:题意 "题目链接" Sol 树形依赖背包板子题 树形依赖背包大概就是说:对于一个点,只有选了它的父亲才能选自身 把dfs序建出来,倒过来考虑 设$f[i][j]$表示从第$i$个节点往后背包体积为$j$的最大价值 转移的时候,只有选了该点才能从子树中转移而来 $f[i][j] = max(f[i +
阅读全文
摘要:题意 "题目链接" Sol 长链剖分 ~~又是一个用各种花式技巧优化的暴力~~ 它的主要思想是:对于每个节点,把深度最深的子节点当做重儿子,它们之间的边当做重边 这样就会有一些非常好的轻质 所有链长总和是$O(n)$级别的 任意一个点的$k$级祖先的子树深度$\geqslant k$ 首先我们维护出
阅读全文
摘要:题意 题目链接 很难概括。。 Sol (因为比赛还没结束,所以下面讲的可能是“非官方”“正解”) maya这题我前前后后 断断续续的做了一个星期才A掉。CC一场challenge出两道打表题可有点过分了啊。。 首先考虑暴力怎么打,我们把给出的初始行列的01取反,这样$0$的时候对应的是必胜态,$1$
阅读全文