摘要: 是个简单题,可惜我代码暂时写挂了,起床再来改() 显然先要求出 \(cnt(f(i)),(i \in [1,N]),cnt(x)\) 表示 \(x\) 的出现次数。求出来之后两两相乘贪心即可。 但 \(f(i)\) 最大可能是 \(10^{12}\) ,省略掉了大于 \(N\) 的情况。所以要探讨下 阅读全文
posted @ 2022-02-08 18:10 FxorG 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 还没写,不一定对。/cy 一个 \(naive\) 的想法,暴力枚举 s 的子串,然后找 \([x,y]\) 有多少个子串。但找的话似乎很难实现,直接对 s 建 SAM,之后数位 dp 时记录下现在匹配到哪个节点即可。 我们发现,枚举是不必要的,我们只需要在数位 dp 时记录能匹配到长度多少,对于匹 阅读全文
posted @ 2022-02-08 18:10 FxorG 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 挺 SB 的,要不是我睡过头赛时就切了。 我习惯用 \(C(n,m)\) 表示 \(n\) 个数选 \(m\) 个数的方案。 因为 \(a_i\) 升序,显然按 \([l,k),(k,r]\) 去分。 考虑暴力,然而每种方案数很难算。换个角度,考虑一个数的贡献次数。 挺显然的,假如 \(i\in[l 阅读全文
posted @ 2022-02-08 18:10 FxorG 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 链接 vp 的,赛时 \(80+0+100+0\) T1 不会,写了个分块+ST 表,发现常数还比暴力大。 T2 不会,看题解才会了,想到了经典套路之固定端点瞎选。 T3 萌萌数据结构,提示性挺强的,发现每个点都可以将 2 段序列合并成一段新的,考虑贪心即可,每次合并 2 段最大的序列,考虑 mul 阅读全文
posted @ 2022-02-08 18:08 FxorG 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 简单题。 发现最终状态无限,起始状态有限,考虑逆推(辅以记忆化) 设 \(f[x][y][z]\) 为 \(x\) 个 a,\(y\) 个 \(b\),\(z\) 个 ab 的期望 ab 个数。 则考虑能怎样走到哪些状态。 选 a,\(f[x+1][y][z]\) 选 b,\(f[x][y+1][x 阅读全文
posted @ 2022-02-08 18:08 FxorG 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 9/27(0.5h)+10/1(3h) T2 看不懂,T3 调成狗。 T1,点数的尽可能少提示性强,往完全图方向想,写了个暴力找不同路径数,发现 \(i->n\) 决定二进制的该位。 T3,删除相邻的边,要求删除后最短路的最大值。显然删除的这条边只可能在最短路的路径上。考虑建最短路径树。对于 \(f 阅读全文
posted @ 2022-02-08 18:08 FxorG 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 考虑求 \(l\in[L,R],r\in[L,R]\) 的某个答案,且答案可以预处理。 考虑抽象到二维平面。 \((l,r)\) 表示序列 \([l,r]\) 的答案。 那么所求的就是 \((L,L),(R,R)\) 这个矩阵的答案。 考虑二维前缀和即可。 阅读全文
posted @ 2022-02-08 18:07 FxorG 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 强连通分量 void tarjan(int x) { dfn[x]=low[x]=++tot; s.push(x); flag[x]=1; for(int i=head[x];i;i=e[i].nex) { int y=e[i].to; if(!dfn[y]) { tarjan(y); low[x] 阅读全文
posted @ 2022-02-08 18:06 FxorG 阅读(29) 评论(0) 推荐(0) 编辑
摘要: orz ClCN \(\sum_{i=0}^{n}\tbinom{i}{m}=\tbinom{n+1}{m+1}\) \(\sum_{i=1}^{+\infty}if(i)=\sum_{j=1}^{+\infty}\sum_{i=j}^{+\infty}f(i)=\sum_{j=1}^{+\inft 阅读全文
posted @ 2022-02-08 18:06 FxorG 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 因为脏的衣服在一天结束时才会有,干净的一天开始才会有,考虑拆点。 再考虑干净的衣服都是要被收集起来的,所以干净的要流向超汇。而脏的衣服可以从超源免费获得所需要的个数,而干净的衣服只能购买。 看张图吧,假如只有 1 个点的话,且需要无限多的衣服。 显然前者正确,后者矛盾(收集了脏衣服) 再者,这种建图 阅读全文
posted @ 2022-02-08 18:05 FxorG 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 我,常数,大。 考虑记给出的可用集合为 \(a\),令 \(f[i][j]\) 为选 \(i\) 个数和为 \(j\) 的方案,则 \(ans=\sum_{i=0}^{5n}f[n/2][i]^2\)。 转移:\(f[i][j]=\sum f[i-1][j-x],x\in a\) 考虑记 \(g[x 阅读全文
posted @ 2022-02-08 18:04 FxorG 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 为什么这题还不错却没人写题解啊。 考虑序列不降时有什么性质:\(a_i-a_{i-1}\ge0,i\in(1,n]\) 考虑操作是区间同时加减,想到差分。 记 \(d_1=a_1,d_i=a_i-a_{i-1},i\in(1,n]\),那么我们要让 \(d_i\ge0,i\in[1,n]\) 每次操 阅读全文
posted @ 2022-02-08 18:04 FxorG 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 题目 首先,可以令 \(f[l][r]\) 为 \(s(l,r)\),\(f[l][r]=min(|a[l]-a[r]|,min(f[l+1][r],f[l][r-1]))\) 这样做是 \(O(n^2)\) 的。 考虑当 m 很小,n 很大时会出现什么。 显然会出现许多大小相同的数(鸽巢原理) 考 阅读全文
posted @ 2022-02-08 18:03 FxorG 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 我们可以发现 \(s->t\) 这条路径所经过的边的编号单增(且每条边的边号都是大于等于 \(l\)),假如不单增那么分界点后的边都不通。 那么,题目中的走一条边花费 1 就是废的。 对于一个询问,我们只需要把编号大于等于 \(l\) 的拉出去跑最短路即可。 考虑在线过不去,有点 图函数 的意思。 阅读全文
posted @ 2022-02-08 18:02 FxorG 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 考虑每个数只会删一次,意味着我们暴力找跟暴力删复杂度正确。 即问题变为 每个点是一个集合 对于路径 \((u,v)\) 找每个集合的元素的最小值 删去这个最小值 子树加 考虑树剖,集合的话可以用 vector+启发式合并 之类的去维护线段树中一个点的区间集合并集,但是我们只需要维护最小值,于是对于线 阅读全文
posted @ 2022-02-08 18:02 FxorG 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 想了 2 天好像还是只会带 log 的。 一上来,这不就是 #246. 【UER #7】套路,但第二个做法不是很好做。由于第一个做法是 \(O(n^2)\) 的,那就分块(块长为 \(T\))。整块的贡献很好做,对于每个块维护个值域前后驱就可以合并,大致就是记 \(f[l][r]\) 为块 l 与块 阅读全文
posted @ 2022-02-08 18:01 FxorG 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 考虑点分树,找到最浅的满足条件的点,那么所有连通块符合条件的一定能以它为根来统计到。 考虑一个点 \(y\) 满足能作为颜色集合中(但不一定对答案贡献),显然是 \(x\to y\) 的路径所经过的点都满足那个偏序关系。 转化为二位偏序即可,数颜色 HH 的项链,大致按 r 排序,维护最大的 l 来 阅读全文
posted @ 2022-02-08 18:01 FxorG 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 我们已经有了高于 \(n^{1.5}\) 的在线做法。 这东西就是套路,但按 CF765F Souvenirs 的方式维护点到块太难搞了。。。 因为前者算重没事。。。 所以等我明早起来再重构。。 \(f[i][j]:block_i \to block_j\) $$ g[i][j] :i \to R[ 阅读全文
posted @ 2022-02-08 18:01 FxorG 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 口胡。 考虑先点双找出来,对每条割边先按权升序排,再判断是否删了这条边后,s 到 t 就不在联通。跟我一样不怎么会维护的可以写个 LCT 就可以。 找割边,找所有可行路径方案,判 -1 的情况,接下来找到一条可行方案,找到上面权最小的割边,那么可以贡献答案。再者,可以删掉上面任一条边,再反复这个做法 阅读全文
posted @ 2022-02-08 17:59 FxorG 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 思考过程。无脑记录。 流量守恒:记 \(d(x)=in_x-out_x,d(x)=0\),因为上下界网络流经常这么表示,当然记 \(d(x)=out_x-in_x\) 也行。 减容量是可以舍弃的操作,因为减容量总是可以使用减流量解决或者会使其更不优。 再者,每条边给定的原始流量一定要先流满再说,所以 阅读全文
posted @ 2022-02-08 17:59 FxorG 阅读(40) 评论(0) 推荐(0) 编辑