随笔分类 - 题库—洛谷
摘要:题意 "题目链接" Sol 树链剖分板子 + 动态开节点线段树板子 cpp include define Pair pair define MP(x, y) make_pair(x, y) define fi first define se second // define int long lon
阅读全文
摘要:题意 "题目链接" Sol 这题能想到费用流就不难做了 从S向(1, 1)连费用为0,流量为K的边 从(n, n)向T连费用为0,流量为K的边 对于每个点我们可以拆点限流,同时为了保证每个点只被经过一次,需要拆点。 对于拆出来的每个点,在其中连两条边,一条为费用为点权,流量为1,另一条费用为0,流量
阅读全文
摘要:题意 "题目链接" Sol 思路就是根据期望的线性性直接拿前缀和算贡献。。 这题输出的时候是不需要约分的qwq 如果你和我一样为了AC不追求效率的话直接 就行了。。 代码十分清新
阅读全文
摘要:题意 "题目链接" Sol 显然如果题目什么都不说的话需要$\frac{n (n 1)}{2}$个相对关系 然后求一下传递闭包减掉就行了 cpp include using namespace std; const int MAXN = 1001; inline int read() { char
阅读全文
摘要:题意 "题目链接" Sol $f[i][j]$表示前$i$行$j$列的贡献,转移的时候枚举从哪里转移而来,复杂度$O(n^4)$ 然后考虑每一行的贡献,动态开节点线段树维护一下每种颜色的答案 转移的时候用总的方案减去相同颜色的方案 复杂度$O(n^2 log^2 n)$ cpp include de
阅读全文
摘要:题意 "题目链接" Sol 首先在原矩阵的右侧放一个单位矩阵 对左侧的矩阵高斯消元 右侧的矩阵即为逆矩阵 cpp // luogu judger enable o2 include define LL long long using namespace std; const int MAXN = 2
阅读全文
摘要:题意 "题目链接" Sol 解题的关键是看到题目里的提示。。。 设$f[i]$表示到第$i$天所持有软妹币的最大数量,显然答案为$max_{i = 1}^n f[i]$ 转移为$f_i = max(f_{i 1}, A_i \frac{f_j R_j}{A_j R_j + B_j} + B_i \f
阅读全文
摘要:题意 "题目链接" Sol 枚举第二个球放的位置,用前缀和推一波之后发现可以斜率优化 cpp // luogu judger enable o2 include define Pair pair define MP(x, y) make_pair(x, y) define fi first defi
阅读全文
摘要:题意 "题目链接" Sol 直接拿vector维护每种颜色的出现位置,然后二分一下。 cpp include using namespace std; const int MAXN = 3e5 + 10; inline int read() { char c = getchar(); int x =
阅读全文
摘要:题意 "题目链接" Sol 紫色的线段树板子题??。。。
阅读全文
摘要:题意 "题目链接" Sol 跟我一起大喊:n方过百万,暴力踩标算! 一个很显然的思路是枚举$H, S$的最小值算,复杂度$O(n^3)$ 我们可以把式子整理一下,变成 $$A H_i + B S_i \leqslant C + AminH + BminS$$ 首先按$H$排序 考虑去从大到小枚举$A
阅读全文
摘要:题意 "题目链接" Sol 打出暴力不难发现时间复杂度的瓶颈在于求$\sum_{i = 1}^n i^k$ 老祖宗告诉我们,这东西是个$k$次多项式,插一插就行了 上面的是$O(Tk^2)$的 下面是$O(Tk^3)$的 cpp // luogu judger enable o2 include d
阅读全文
摘要:题意 "题目链接" Sol 记得NJU有个特别强的ACM队叫拉格朗,总感觉少了什么。。 不说了直接扔公式 $$f(x) = \sum_{i = 1}^n y_i \prod_{j \not = i} \frac{k x[j]}{x[i] x[j]}$$ 复杂度$O(n^2)$ 如果$x$的取值是连续
阅读全文
摘要:题意 "题目链接" Sol 背板子背板子 cpp include using namespace std; const int MAXN = (1 '9') {if(c == ' ') f = 1; c = getchar();} while(c = '0' && c = mod ? x + y m
阅读全文
摘要:题意 "题目链接" Sol 朱刘算法?感觉又是一种神仙贪心算法 大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边 不详细说了,丢 "链接" 走人.. cpp include using namespace std; const int MAXN = 1e5 + 10,
阅读全文
摘要:题意 "题目链接" Sol 一步一步的来考虑 $25 \%$:直接$O(nm)$的暴力 链的情况:维护两个差分数组,分别表示从左向右和从右向左的贡献, $S_i = 1$:统计每个点的子树内有多少起点即可 $T_i = 1$:同样还是差分的思想,由于每个点 能对其产生的点的深度是相同的(假设为$x$
阅读全文
摘要:题意 "题目链接" Sol 看不懂splay。。,看不懂树状数组。。。 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第$k$大的元素并删除,在末尾插入一个元素 这样我们可以维护$n+1$棵线段树(对列单独建一棵) 每次操作的时候,如果$y_i = m$,那
阅读全文
摘要:题意 "题目链接" Sol 去年考NOIP的时候我好像连最短路计数都不会啊qwq。。 首先不难想到一个思路,$f[i][j]$表示到第$i$个节点,与最短路之差长度为$j$的路径的方案数 首先把每个节点的最短路求出来 转移的时候按拓扑序(也就是按距离从小到大排序)转移一下 然而有$0$边的时候会挂掉
阅读全文
摘要:题意 "题目链接" Sol 咕了一年的题解。。就是个模拟吧 考场上写的递归也是醉了。。。 感觉一年自己进步了不少啊。。~~面向数据编程的能力提高了不少~~
阅读全文
摘要:题意 "题目链接" Sol 咕了一年的题解。。 并不算是很难,只是代码有点毒瘤 $f[i][j]$表示从$i$号节点出发走了$2^j$轮后总的距离 $da[i][j]$同理表示$a$的距离,$db[i][j]$与$da$同理 倍增优化一下 注意最后$a$可能还会走一次 cpp include def
阅读全文