2024.11

P10099 [ROIR 2023 Day 2] 美丽序列

枚举当前点放哪个数,上一个 xi 的距离必须不小于 x

距离的取值只有 1,2,,x1,x,把每种数的距离压进状态,状态数 8! 能够接受。

submission

P2993 [FJOI2014] 最短路径树问题

建出最短路图(若 dv=du+w 则连边 uv)。

1 开始 dfs,贪心的按儿子大小遍历。

这样为什么是对的?

对于两条到 u 路径的 lcp:1iju1iku

j<k,选第一条路径更优,而在 i 时一定先遍历 j,再遍历 k,保证了正确性。

后面是点分治板子。submission

P3164 [CQOI2014] 和谐矩阵

不难列出 n×mn×m 元方程,可以做到 O((nm)3w)

如果矩阵满秩,一定无解,因为最终可以消成 i[1,n×m], ai=0 的形式。

否则把任意一个自由元设为 1 即可。

submission

P9905 [COCI 2023/2024 #1] AN2DL

二维单调队列板子。

submission

P4796 [BalticOI 2018] 路径

f(u,s) 表示从 u 开始,颜色状态为 s 的方案数,从 f(v,scu) 转移。

submission

P3165 [CQOI2014] 排序机械臂

平衡树裸题:1. 区间翻转 2. 单点删除 3. 查询子树最小值。

submission

P3172 [CQOI2015] 选数

gn 表示 gcd 能被 n 整除的方案数,fk 为 gcd 为 k 的方案数:

gn=ndfd, fn=ndμ(dn)gd

选出 n 个形如 ki[L,H] 等价于选 ni[LK, HK] 满足两两互质。

LLK,HHK,最后求:

i1μ(i)(HiL1i)N

整除分块,杜教筛求 μ 前缀和,复杂度不会。

$1:杜教筛

S(n)=i=1nf(i),构造 h=gf

i=1nh(i)=i=1ndig(d)f(id)=d=1ng(d)i=1ndf(i)=d=1ng(d)S(nd)

移项:

g(1)S(n)=d=2ng(d)S(nd)+i=1nh(i)

$2:一个精妙的容斥

对于 d>HL,不存在两个不同的 x,y 使得 gcd(x,y)=d

fi 表示 gcd 恰好为 i,且 N 个数不全相等的方案数,有 fi>HL=0

x=HiL1i,那么 fi=(xNx)ijHLfij

所求即 f1+[L1]

P4792 [BalticOI 2018] 火星人的 DNA

双指针板子。下位黄,哪来蓝的。

submission

P10100 [ROIR 2023 Day 2] 石头

对于询问 (p,k),要么 [p+1,p+k1] 被染色,要么 [pk+1,p1] 被染色。

不妨考虑第一种。

假设起始点为 s,当前左右端点分别为 i,j

我们需要循环往复执行一下操作:左移 i 直至 ai1>aj+1;右移 j 直至 aj+1>ai1

aj+1ai1 为阈值,左右阈值都是单调上升的。

说的形象一点,设左边的阈值下标集合为 A,右边为 B(按访问顺序排序):

  • iAk+1, kk+1
  • jBl1, ll+1

ap+k 是阈值,因为 p+k1 是一个连续段的末尾(连续往一个方向移动)。

左侧最大阈值必须小于 ap+k,否则继续往右移动。

也就是说,ap+k 大于除 s[p,p+k1] 的最大值。

左边最大阈值必须大于右边除 ap+k 外的最大阈值,即 max[p,s1]>max[s+1,s+k1]

否则左边比右边先走完。

现在找到了判断某个 s 合法的条件,开始统计答案。

如果 max[p,p+k1]>ap+k,至多产生 1 的贡献,判断 s 为最大值的位置即可。

否则只需考虑 max[p,s1]>max[s+1,s+k1]

从右往左枚举 s,相当于往右式加一个元素,左式减一个元素,这是有单调性的,可以二分。

submission

P10101 [ROIR 2023 Day 2] 一个普通的字符串问题

题意:求长度为 2 的子串集合与 s 相同的字符串 t 数量,={a,b,c}

sisi+1 连有向边,一条边对应一个长度为 2 的子串。

所求 t 的数量即图中欧拉路径数量(重边视为相同)。

枚举起点终点,终点向起点连边,转化为BEST定理求欧拉回路,最后除以每条重边的阶乘。

(新加的边是和原来重边区分的)

submission

QOJ 5981

原问题转化为,求最小的花费,确定 x 与每个 ai 的大小关系。

如果 x>ai,那么对于 [1,i) 都已经确定关系,只需解决 (i,n] 的子问题。

这启发我们进行区间DP,fl,r 表示确定这段区间所有关系的最小花费:

fl,r=mini(wi+max(fl,i1, fi+1,r))

为什么要取max?因为我们考虑的是最坏情况,xai 关系不确定。

答案很小,容易构造出一个上界 9logn

交换值域定义域,f(l,v) 表示左端点为 l 花费至多 v 的代价能处理的最大右端点。

f(l,v)=maxf(l,vwi)i1f(i+1,vwi)

考虑在 i 决策的两种情况:

  • x>ai,此时左边完全不需考虑,f(i+1,vwi) 贡献给 f(l,v)
  • x<ai,此时右边完全不考虑,可以延伸到 n,但是左边必须用剩余 vwi 覆盖到 i1

因此 i 的贡献为,在 f(l,vwi)i1 的条件下,f(i+1,vwi)n 取min。

树状数组优化转移,细节较多,且时空复杂度很劣,过不了原题。

$正解

把上面朴素方程的 l,r 改成开区间,即:

fl,r=minl<i<r{wi+max(fl,i, fi,r)}

初始化 fi,i+1=0,结果为 f0,n+1

L(i,v) 表示最小的 l 满足 fl,ivR(i,v) 表示最大的 r 满足 fi,rv

枚举 v,考虑在 i 处合并。

l=L(i,vwi), r=R(i,vwi),那么 R(l,v)r, L(r,v)l<-- 表示更新。

上述转移只能更新到边界,因此还需 L(i,v)L(i+1,v), R(i,v)R(i1,v)

最多访问到 L(i,v9),滚动数组优化空间。

submission

沙漠点列link

题意:给出一个沙漠,删去其中的 k 条边,求能分成的连通块数量最大值。

如果存在割边,则删割边。

否则需要断环来创造割边,断开一个长度为 n 的环产生 n1 条割边。

tarjan找环,贪心的按环长排序。

submission

QOJ 5173

肯定是单方向从 lr,因为往回走不优。

rl 走的步数是没法减的,现在要尽可能少染色。

显然有染色上界 rl,即 (l,r] 染成 al

如果某个 ai=ai+1,原先给 ai 染色的一步让 ai1 染成 ai,这样就能在 ai+1 省下一步。

推广一下,如果存在 aj=ai,同样可以通过类似操作省下一步。

问题转化为,选出最多的二元组 (i,j) 满足 li<jrai=aj,且相邻二元组不相交(端点可以重合)。

假设当前在 p,走到一个 ipj 最小的一个 j 是最优的,设这个位置为 fap

问题转化为,从 l 开始跳父亲,在 r 范围内最多跳多少步,显然是可以倍增的。

据说倍增卡常,对 r 进行扫描线,并查集维护每个 l 对应 r 的最大祖先。

并查集必须按秩合并路径压缩都加上复杂度才是 α 的。

submission

QOJ 7855

点分树维护路径问题。

对于每一个分治中心,只有最小和次小的两个 di(到分治中心的距离)有用,产生 di+dj 的贡献。

如果 i,j 在一颗子树里面,真正的答案一定小于 di+dj,不会产生影响。

对每个分治中心维护一个大小为 maxdep 的桶,设两个指针维护最小和次小的位置。

如何修改?点分树将包含 u 的路径分为 log 种,将这些对应位置减 1,并同时维护指针。

全局答案如果用可删堆维护会多一个log,同样指针维护,因为答案是不降的。

时空复杂度 O((n+q)logn)

submission

P5921 [POI1999] 原始生物

一个自然的想法是连边 lr

问题转化为:添加最少的边,使得原图存在一条欧拉路径。

独立考虑每个弱连通分量,显然 inu=outu,则 |inuoutu|0(mod2)

如果 |inuoutu|2,存在欧拉回路/路径。

如果 |inuoutu|=4,找到 inu>outu, inv<outv,连边 uv

接下来同理,新增边数为 |inuoutu|21

submission

P5944 [POI2002] 出圈游戏

稍微转化一下就是 kmodn=b1, kmod(n1)=b2 的形式。

excrt 板子,难点在于唐氏题面。

submission

P3426 [POI2005] SZA-Template

记前缀 i 的 border 集合为 Bi,所有能覆盖 i 的前缀集合为 Ti

显然 TiBi,因为要同时覆盖 i 的前后缀。

  1. nei 表示 i 的极大非平凡 border,对于任意 ji, jTi,必须满足 jTnei

    jBnei,即他能覆盖 nei 的前后缀。如果 j<i 想要覆盖 i,必须先覆盖 nei

  2. 对于 j1,j2Tij1<j2,那么 j1 一定能覆盖前缀 j2

    border 的 border 还是 border,因此 j1j2 的 border。

    j1 能覆盖 j2 的前后缀,又因为 j1 能覆盖 ij1 能覆盖 j2

fi=minjTij,任意 Ti 中元素都能被 fi 表示。

根据上述两个推论,要么 fi=i,要么 fiTnei,而在这之中 fi=fnei 是最优的。

fi 能取到 fnei 当且仅当存在一个 fj=fneijinei

证明:fj>fnei,显然不行;fj<fnei,根据 fnei 的最小性和推论 2,fj 不能覆盖 nei

submission

P5913 [POI2004] KAG

每个连通块只能通过第一类操作合并为原图,单独考虑每个连通块。

注意到,第二类操作等价于补图意义下的第一类操作。

  1. 依次检查原图每个极大连通块。
  2. 建出补图,依次检查每个连通块的补图。

交替执行上述操作,若最终能被拆分为若干单点,则原图是 c-algae 的。

操作一是 O(n+m) 的,操作二是 O(n2) 的。

每次操作二至少消耗 O(n) 条边(最坏情况左图 1 个点,右图 n1 个点),故至多执行 O(mn) 轮。

优化操作二,如何找到 u 在补图中的连通块?

链表维护当前未被拓展的点,对应当前点枚举所有未被拓展的点。

如果他们没有边相连,说明他们在补图上连通,把他加入队列并从链表中删除。

每个点只会拓展一次,而"有边相连"的情况只会发生 m 次,复杂度 O(n+m)

总复杂度 O((n+m)min(m,n2)n)=O((n+m)m)

submission

P3429 [POI2005] DWA-Two Parties

假设答案为 n

{(u,v)Ecolv=02du((u,v)Ecolv)colu=12du

高斯消元 O(n3w) 求解。

现在证明该方程组一定有解。

无解当且仅当从中选出若干方程,他们异或起来满足左边各项系数为 0,右边为 1

i 个点对应方程被选中当且仅当 iS

  • 有奇数个奇度点被选,这保证了右边为 1

  • 每个被选奇度点,有奇数个相邻点被选;其他所有点(不一定被选)有偶数个相邻点被选。

    i 会使其所有相邻点的系数异或一,上述约束保证了左侧各项系数为零。

构造一个新图,满足点集仍是原图点集,边集为 {(u,v)uSvS}

新图中,S 中奇度点度数为奇,其他点度数为偶。

奇数个奇度点度数仍是奇数,这与无向图度数和为偶数矛盾,故 S 不存在,原方程组恒有解。

submission

P5919 [POI2004] MAK

ipi 连边,k 轮后 ai 的值即 i 向父亲跳 k 步到的位置。

不难得到一个置换的 order 就是其所有环长的 lcm

问题转化为,求一组正整数 x1+x2++xm=n 使得的 lcm(x1,x2,,xm) 最大。

如果已知 {x},如何最小化字典序?

对于一个环 {e1,e2,,ek},默认 eiei+1

其能产生的最小字典序为 p(ei)=ei+1, p(ek)=e1

一个环所占值域一定是一段连续区间。

贪心的将长度小的环放在前面,从 1n 依次填充每个环,因为这样能使 e1 尽可能往前。

  1. 如果 lcm 相同,自环越多越好。

    贪心的将自环放在最开头,显然自环多的字典序小。

  2. 一定存在一组最优方案,使得所有环长两两互质。

    假设 gcd(xi,xj)=d>1,令 xixi/dlcm 不变,多的总和可以作为自环。

  3. 一定存在一组最优方案,使得所有环长都是质数幂次。

    假如 x 形如 paqbc,其中 p,q 是不相同的质数,c 没有质因子 p,q

    显然将 x 拆成 paqbc 不改变总的 lcm,而总和 pa+qbc<paqbc,可以多出自环。

    证明就是对于大于 1 的正整数 ab(a1)(b1)>1a+b<ab

考虑筛出 104 内的所有质数。

较大的质数基本用不到,实测取前 200 个可以通过本题。

f(i,j) 表示考虑了前 i 个质数,在总和不超过 j 的情况下的最大 lcm,同时 g(i,j) 记录决策。

由于只要比对大小,我们不妨将 f(i,j) 取对数,这样就能在 double 下比较。

如果最优方案的总和不满 n,一直补自环即可。

submission

P6756 [BalticOI2013] Brunhilda’s Birthday

fn 表示 n 的答案,显然 fn=1+minfnpipi

考虑填表法,fn+1f[n+1,n+pi1],其中 pin,只有最大的 p 有用,记作 hn

下面说明 f 是单调的。

假设 fifi+1,设他们的转移点分别为 j,k

如果 k=ifi+1=fi+1

否则 k<i,既然 k 能覆盖到 i+1 那么他也能到 ifij 转移过来说明 jk 优,即 fi<fi+1

ri+1=maxfn=in+hn1,那么 fi 就是找到最小的一个 x 满足 rxi,容易维护。

submission

P9179 [COCI2022-2023#5] Logaritam

对于 n=p1a1p2a2pkakxn=a1xp1+a2xp2+,akxpk

一个数改动,说明其至少有一个质因子发生改动。

一个质数改动,只会改动其所有倍数,且不产生矛盾,贪心的选最大指数即可。

submission

P9180 [COCI2022-2023#5] Slastičarnica

在钦定当前左端点位置,满足了几个要求下,显然右端点越远越好。

f(i,p) 表示满足了 i 个要求,左端点在 p 时,最大的右端点。

a(i,p) 大于等于 p 的第一个位置 j 满足 [j,j+di) 全部 si

同理 b(i,p) 表示小于等于 p 的第一个位置满足 (jdi,j] 全部 si

以上信息容易 O(nq) 预处理,其中 qmin(q,n)

考虑第 i 个要求是用前缀还是后缀满足的(转移方程省略第一维):

f(a(i,p)+di)f(p), f(p)b(i,f(p))di

submission

P2048 [NOI2010] 超级钢琴

通过某种方式找到前 k 大的区间。

f(i,l,r) 表示以 i 为左端点,使 spsi1 最大的右端点 pp[l,r]

容易st表预处理后 O(1) 得到。

假设当前全局最大值为 p=f(i,l,r),去掉 [i,p] 后,答案还可能从 f(i,l,p1)f(i,p+1,r) 产生。

优先队列维护一个bfs状物即可。

submission

NFLSOJ 12394

题意:给定 a,b,称 a 的一个子序列 {p1,p2,,pk} 是好的,当且仅当 i, api+1>bi×api

求最长好子序列的长度,1n106,1ai,bi

f(i,j) 表示考虑了 1i,长度为 j 的好子序列末尾元素最小值。

fjai 当且仅当 ai>fj1×bj1

注意到,i 相同时,f(i,j) 单调递增(好序列中元素是严格递增的)。

找到第一个 k,满足 f(i1,k)>ai

对于 j<kai 显然不能更新;对于 j>kf(i1,j1)>ai,因此 ai 没有机会大于 f(i1,j1)×bj1

综上所述,每次最多改动一个位置,且这个位置唯一确定,时间复杂度 O(nlogn)

submission

P3226 [HNOI2012] 集合选数

构造一个矩阵:

1  2  4  8   16  32  ...
3  6  12 24  48  96  ...
9  18 36 72  ...
27 ...

设左上角元素为 e,那么 (i,j) 中元素为 e3i2j,不会有重复。

问题转化为,在这个矩阵中,选出一个集合,满足没有相邻的两个元素被同时选中的方案数。

行列都只有 log2n,log3n 级别,可以状压dp。

然而光是这一个矩阵不能覆盖所有 1n,对于所有的 2e3e,都能建出这么一个矩阵,且不同矩阵中不存在相同元素。

根据乘法原理,每个矩阵的结果相乘即可。

submission

NFLSOJ 971

题意:构造一颗恰有 k 条直径的树,1k5×106

限制:2n5000, 0w105w 表示边权。

这样就花费 x+y+z+4 个点构造出一棵拥有 xy+xz+yz 条直径的树。

类似的,可以构造出一棵 x+y+3 个点 xy 条直径的树。

打表验证,上面两种已经覆盖了全部情况。

submission

P6869 [COCI2019-2020#5] Putovanje

统计每条边遍历次数,树上差分解决。

submission

P6742 [BalticOI 2014 Day2] Portals

自己手玩一下,存在一种最优方案使得两个传送门是从同一点发射的。

肯定是挑离自己最近的一个墙壁发射一个,然后传送到另一个方向的墙壁。

预处理每个点到四个方向墙壁中的最短距离,然后跑最短路即可。

submission

HDU 6883

题意:给定 n 个堆,每个堆恰好 3 个物品,从上至下价值分别为 ai,bi,ai

选出一个物品必须先选其上方所有物品,f(i) 表示选出恰好 i 件物品的最大价值和。

给定 k,求 ikf(i)n5×106,k3n

每个堆对答案的贡献只有四种:不选,aiai+biai+bi+ai

把一个堆拆为两个互相独立的物品:体积 1 价值 ai,体积 2 价值 ai+bi

决策新物品选或不选就能覆盖原问题的全部情况。

贪心的按 价值体积 将新物品从大到小排序。

如果某个前缀的体积和恰好为 i,那么 f(i) 即为这个前缀的价值和。

否则这个前缀恰好比 i 大一,说明最后选的物品体积为 2

两种调整办法:在已选物品中找到体积为 1 最小价值并将其删除;不选当前物品,在未选物品找到体积为 1 的最大价值。

排序部分如果桶排可以做到 O(n),否则需要轻微卡常。

submission

P7913 [CSP-S 2021] 廊桥分配

一眼三分,然后假了,因为存在一段连续的函数值相同。

假设一开始有无限多个廊桥:

按照时间顺序给每个飞机分配当前可用编号最小的廊桥,设 i 对应 ci

如果限制廊桥个数只有 k 个,i 能分配到当且仅当 cik

处理一个前缀和数组然后枚举 k 即可。

submission

P7915 [CSP-S 2021] 回文

根据第一步的决策进行分类讨论,假设第一步选 L

找到和 a1 相同的位置 k,把整个序列分为两部分:[2,k1], [k+1,n]

问题转换为:给你两个栈 p,q,每次弹出某个栈的栈顶,要求最后序列回文,且操作的字典序最小。

还是考虑第一步,如果要弹出 p 的栈顶,那么这个元素必须同时出现在某个栈的栈底,这样才能回文。

p,q 都能弹出时优先弹 p,最小化字典序。

把栈顶和对应栈底都弹出后,变为了一个规模为 n2 的子问题(原来是 n1),继续做即可。

submission

P7914 [CSP-S 2021] 括号序列

基本独立想出来的(因为用了std调试)。

  1. ()(S) 是好的,S 表示仅由不超过 k 个字符 * 组成的非空字符串。
  2. 如果 AB 是好的,那么 ABASB 是好的。
  3. 如果 A 是好的,那么 (A)(SA)(AS) 是好的。

fl,r 表示 [l,r] 是好的的方案数,gl,r=0/1 表示 [l,r] 是否有可能成为一个 S 串。

cl,r 表示 [l,r] 形如 ASSAAS 的方案数。

考虑如何计算 f,如果 [l,r] 是第三种方式生成的:fl,rcl+1,r1

如果 [l,r] 是第二种方式生成的,枚举与 l 匹配的右括号位置:

fl,ri=l+1r2cl+1,i1j=i+1r1gi+1,j1×fj,r

对于某个固定的 igi,j 是单调的,预处理每个 i 对应最大的 j 满足 gi,j=1,记作 pi

那么:

fl,r=cl+1,r+i=l+1r2cl+1,i1j=i+1min(r1,pi+1+1)fj,r

后面那个用后缀和优化下就能变成 O(n3)

submission

P7960 [NOIP2021] 报数

小常数 1e7 单 log 是能冲过 1s 的。

P7961 [NOIP2021] 数列

f(i,j,k,p) 表示考虑了 0i1,填了 j 个数,当前 S 中有多少位 1,进 p 位到 i 的方案的贡献。

往后转移,决策放了 l 个数等于 i

f(i+1,j+l,k+[2p+j],p+j2)f(i,j,k,p)×vil×(njl)

复杂度 O(n4m)

submission

P7962 [NOIP2021] 方差

假设现在有四个数 a,b,c,d,对第二个数做题中变换:a,a+cb,c,d

变换前后差分数组分别为 ba,cb,dccb,ba,dc

不难发现,该操作等价于交换差分。

感性理解一下,存在一组最优解使得差分数组是单谷的,因为这样能使数组尽可能平均。

将差分数组排序,从小到大插入,每次插在前面或后面。

化简答案:

nai2(ai)2

直接维护两个东西的差不是很好做,考虑把一维记在状态里。

f(i,j) 表示考虑了前 i 个差分,aij 时最小的 ai2

转移考虑每个 di 插在前面还是后面(最后再插入 a1)。

差分为 0 插在开头最优,不发生转移;非 0 的差分只有 min(a,n) 个,稍加剪枝可以通过。

时间复杂度 O(na2)submission

CF2035B

题意:构造一个长度为 n,只包含 3,6 且能被 66 整除的数,最小化字典序。

n 的构造可以在 n2 的构造之前加 33,因为 663300

不会出现 n1 的构造之前加 3 的情况,因为 6×113×2i×5i

n=2 的构造为 66n=13 无解,n=5 构造为 36366

submission

P3561 [POI2017] Turysta

【参考】:竞赛图性质研究

结论1:竞赛图强连通缩点后的DAG呈链状,且前面的所有点向后面的所有点连边。

归纳证明,逐个加入强连通分量。

设橙色点为当前加入的 scc:如果 x 连向所有点,放在链头;

否则 x 的入边都在出边前面(否则成环),找到对应位置插入即可。

结论2:任意竞赛图存在一条哈密顿链。

增量构造,考虑在当前链的基础上加入点 x

如果 x 指向链头或链尾指向 x,直接接在两端即可。

否则,用 1 表示指向 x0 表示被 x 指向,那么原链可以表示为 10

一定存在相邻的 10,将 x 插入对应两点当中。

时间复杂度 O(n2)

结论3:强连通的竞赛图一定存在哈密顿圈。

假设已经找出了一条链。

找到指向链头的一个点 t,组成初始环 snxtsts

一定存在这么一个 t,否则 s 只有出边没有入边,nxts 不能到达 s,与强连通矛盾。

考虑加入 i=nxtt

如果 i 指向 s,直接拓展:断开 ts,接上 tis

否则找到第一个 x 使得 ix,构造如下路径:

即设 prex=y,构造 ixtsyi

因为 x 是第一个 ix,因此 y,i 之间的关系一定是 yi

如果找不到 x 呢?

不妨先跳过当前点继续往下走,直到找到一个 i 存在 ix(一定能找到,否则不强连通)。

即:xtsynxttix

同时更新 sxti


本题做法:

缩点,对于每个强连通分量跑出哈密顿回路。

对于每组询问,从 i 点所在连通分量开始,沿着DAG链往下把所有回路拼接起来。

submission

CF1685C

±1 替代原串,设 a 为前缀和数组,合法当且仅当 i, ai0

一个重要的观察:答案不超过 2

pai 最大的位置,翻转 [1,p],翻转 [p+1,2n] 得到的序列一定合法。

对于 ipapapi0,对于 i>pap+a2na2np0,符合条件。

答案为零容易判断,现在只要考虑答案是否为 1

假设翻转 [l,r] 后合法,需要满足:i<lir, ai0lir, al1+arai10

s,t 分别为第一和最后一个 ai<0 的位置。

那么 l<sr>tmax[l1,s)[s,t](t,r1]al1+ar

贪心的选 al1ar 最大的,这样只要考虑 [s,t] 的限制。

submission

**マス目と整数 **(link

前面忘了,黑降绿,后面忘了。

a b
c d
e f

a+d=c+b, c+f=d+eab=cd=ef

推广到相邻两列差值相同,等价于任意两列差值相同(相同行元素)。这是条件成立的充要条件。

如果同时存在 ax,i, ax,j 已经确定,ij 连边,边权 ax,iax,j

带权并查集判断是否出现矛盾。

否则所有列的差值关系都被确定,接下来考虑点权非负的限制。

对于每个连通块,选出基准列 i,算出其在该连通块限制下可能的最小权值 minax,jdji

以该基准列出发,跑出该连通块其他权值,看是否非负即可。

submission

CF883D

二分答案 d,然后就是CF1476F的弱化。

fi 表示前 i 个吃豆人能覆盖的最远右端点,设第 i 个吃豆人的位置为 pi

如果 i 往右,当且仅当 fi1pi 之间没有豆子了,fimax(fi1,pi+d)

如果 i 往左,当且仅当 fi1pid 之间没有豆子,fipi

i 往左可能使某些 j 往左的贡献无效(不用 j 也能覆盖),可以让这些 j 指向右边从而覆盖更远。

如果某个 j<i 能往右,i1 也能往右,且 pi1+d 最大。

因此如果 i 往左,且 fi2pid 之间没有豆子,fipi1+d

时间复杂度 O(nlogn)

submission

P11290 【MX-S6-T2】「KDOI-11」飞船

x=1 没用。

设当前速度为 v,如果加速后更优:dvx+t<dv

v>d 时,由于 t1,必然有 dvx+tdv,因此最优方案下速度不大于最长距离。

fi,j,k 表示考虑了前 i 个加油站,速度为 2j3k 的最小时间。

二分出终点前第一个加油站位置并统计答案即可。

submission

CF461E

如果 s 确定,如何求出其最小操作数?

gi 表示前缀 i 最少被分成多少段,gi 能从 gj+1 转移当且仅当 (j,i]t 的子串。

注意到 gigi1,因为任意 i 的方案都能砍掉 si 后变成 i1 的方案。

因此 i 的转移点为最小的 j 满足 (j,i]t 的子串。

有如下贪心:对于每一段,能延伸就延伸(在 t 的 sam 上跑,有转移边就走,否则回到根)。

在段数相同的情况下要最小化总长度,这样才能在总长度确定时最大化段数。

f(k,i,j) 表示已经拼了 k 段,以字符 i 开头且不能再往后延伸一个字符 j 的最小总长度。

倍增优化:f(2k,i,j)f(2k1,i,x)+f(2k1,x,j)

问题转化为求 f(1,i,j)

其代表的子串在将来一定是接一个 j 开头的段,并产生 2 的贡献。

把以 i 开头的字符串 s 分成三类:

  1. t 的子串且后面不能加 j,在后面接一个 j 开头的段,恰好产生两个段。
  2. t 的子串且后面能加 j,不一定能产生两个段。
  3. 不是 t 的子串,已经产生至少两个段了,哪怕新接的段不产生贡献,贡献仍然至少为二。

因此在相同长度下,一三比二更优。

固定长度为 k,第二类有 x=O(n) 种,一三加起来有 4k1x

存在一三串当且仅当 4k1x>0,取 k=11 足矣。

对所有后缀建出树高为 11 的字典树即可求出所有有用的 f(1,i,j)(可能存在大于 11,但是没用)。

统计答案:从高到低枚举 2khi,j 表示 i 开头,后面接不了 j,在当前答案下的最小长度。

由于有“不能接”这一限制,贪心的让 hi,j<n,并在最后补一个 j(体现在答案上就是加 1)。

submission

P9195 [JOI Open 2016] JOIRIS

如果所有 aik 同余,那么容易一直放竖条把整个消掉。

在模 k 意义下考虑整个问题。

存在一种构造,是一个长度为 k 的连续段不变,其他位置减 1

[i,i+k) 的最大值为 x,在所有其他列上不断放竖条直到超过 x

i 放横条,这样就能把这一行消掉,达到上述目的。

从左往右做一遍,这样可以使 [1,nk+1]k 同余,然后从右往左再做一遍

submission

P9350 [JOI 2023 Final] Advertisement 2

|XiXj|EiEj 按照 X 的大小关系拆开。

这两种情况又能统一为 XiXjEiEj XjXiEiEj

这是一个二维偏序问题,EiXi 看作横坐标,Ei+Xi 看作纵坐标。

j 能被 i 影响当且仅当 j 的矩形被 i 覆盖。

按照横纵标排序,跑一个纵坐标的单调栈即可。

submission

P3557 [POI2013] GRA-Tower Defense Game

称距离为 1 的覆盖为覆盖,距离为 2 的为拓展。

证明以下策略是正确的:随便找到一个未被染色的点并往外拓展。

设原图一个大小为 k 的点覆盖为 S

x 拓展能够花费 1 的距离到和 x 有边的 yS,剩下 1 的距离相当于 y 在覆盖。

每次至少会走到一个新的 y(从 y 开始没覆盖过),否则:

  • x 距离为 1 的点集中不存在 yS,那么 S 不是原图的点覆盖。
  • 存在 yS 已经被用过,这和 x 未染色矛盾。

因此 x 的数量不超过 k

submission

CF1592D

由于 gcd(a,b,c)gcd(a,b),题目所求就是最大边权。

如何让询问的点集连通?

可以在长度为 2n1 的欧拉序上二分,满足 aiai1,ai+1 之间都有边。

询问次数为 1+log22000=12

submission

NFLSOJ 10305

题意:给定无向图 G=(V,E),是否存在一个序列 v0vk1 满足:

  • 不存在 vi=vj
  • (vi,v(i+1)modk)E
  • cvi>k2

其中 cii 的点权,最多三位小数。

数据范围:n500,m2000,0ci1

小数完全没用,因为不等号两边可以同时乘 1000 变成整数。

设边权 w(u,v)=cu+cv1,那么题目所求等价于:

  • 一条正权边。
  • 一个边权和为正的环。
  • 一个边权和大于 1 的奇环(下取整的缘故)。

显然如果第二种情况存在,必然第一种情况存在,因此只需判断有无正权边。

现在所有边为负,要找一个边权和最大的奇环。

拆点,设 u 奇点为 u1,偶点为 u0uivi1 连边。

对每个 ui 跑最长路(dij),判断 disu1 是否大于 1,时间复杂度 O(nmlogm)

当且仅当 d[x] + w > d[y] 才松弛可以使最长路上的点不重复。

但是没有保证原图上的点也不重复,即可能出现同一个点的奇点偶点同时出现在路径中的情况。

取这两个点之间的一段作为新环,边数为奇,且总和一定大于 1

submission

AT_code_festival_2017_qualc_f

SA={i1,i2,,in/3}A 最终吃掉的寿司在 {a} 中的下标,同理 SB,SC

假设已经知道 SA,SB,Sc,怎么求符合条件的排列 {c} 个数?

从后往前考虑。ain/3,bjn/3c 中的位置一定大于 kn/3,否则 C 会选 ain/3bjn/3

即这三个数在 c 中的相对位置一定形如 ckn/3ain/3bjn/3ckn/3bjn/3ain/3

再考虑倒数第二步,同样只要满足 a,b 对应元素在 c 后面就行。

不会对第 n/3 步产生影响,因为在第 n/3 步时这些元素都被删掉了。

此时 c 中已经插入了三个位置,ckn/31 肯定是插在 ckn/3 前面,而 ain/31,bjn/31 分别有 45 个空格可插。

因此操作序列确定时,{c} 的个数为 i=1n/3(3i1)(3i2)

问题转化为有多少合法的 {SA,SB,SC}

SA,SB 确定时,有多少合法的 SC

合法当且仅当对于任意 1tn3 都满足:

  1. ckta[1it]b[1jt]
  2. bjta[1it]c[1kt]
  3. aitb[1jt]c[1kt]

计算系数时,已经保证了 ait,bjtc[1kt]

现在只要保证 t,a[1it]b[1jt]ait 只出现一次,bjt 只出现一次,ckt 不出现。

考虑 ckt 有哪些值不能取?

  • t>t 的所有 ait,bjt,ckt,共 3(n3t) 个。
  • a[1it]b[1jt] 中的所有元素。

上下两部分无交,元素总数为 n,因此 ckt 可以取的个数为 3t|a[1it]b[1jt]|

为什么要从后往前考虑?因为如果从前往后,不能取的上下两部分有交,不容易计算。

因此合法 SC 的个数为 3t|a[1it]b[1jt]|

设计一个DP:ft,i,j 表示填了 t 个位置,it=i,jt=j 的方案数:

ft,i,j=(3t|a[1i]b[1j]|)ft1,i,j

前缀和优化一下就能 O(1) 转移。

submission

[ARC172D] Distance Ranking

ai,j 表示点 i 的第 j 维坐标,L=108

构造 ai,i=L,ai,j<i=0,ai,j>i=rki,j

现在考虑 i,j(j>i) 距离的平方:L2+(rki,jL)2+rki,k2+(rki,krkj,k)2

注意第二项展开后有 2rki,jL,如果 rk 差一,带来的影响远比后面大。

submission

P5361 [SDOI2019] 热闹的聚会与尴尬的聚会

题意:找一个导出子图,设其最小度数为 p;找一个独立集,设其大小为 q

需要满足:np+1qnq+1p

分析一下这个奇怪的条件:

  • p+1nnp+1q
  • p+1nnp+1<q+1

即不管整不整除,两个限制都等价于 (p+1)(q+1)>n

p,q 肯定都是越大越好。

最大化 p 是容易的:每次删除度数最小的点(不可能不删他而使答案变大)。

最大化 q?最大独立集是 npc,没法做。

考虑如下策略:每次选度数最小的点,并删除他和他的邻域。

被选点度数一定不超过 p,否则剩余点就是第一问的更优解,矛盾。

因此每选一个点,最多新删除 p+1 个点。

一直选点直到所有点被删除,有 q×(p+1)n(p+1)(q+1)>n

submission

P6982 [NEERC2015] Jump

题意:每次询问一个 01 串 t,设 k=|st|,当且仅当 k=n2n 时返回 k,否则返回 0

在不超过 n+500 次询问后猜出 s1n1000

考虑 t0=000,t1=100,t2=110,,tn1=111

在这 n 个询问当中,一定存在一次 k=n2

证明:|t0s||tn1s| 一定分布在 n2 两侧,而 titi+1 至多使交集大小变化 1,因此能遍历所有取值。

现在已经得到了一个交集为 n2 的串 t

ci=[ti=si]

ti,j 两个位置取反后再询问,如果返回 n2,说明 cicj,否则 ci=cj

固定 t0,花费 n1 次询问可以得到 cic0 的关系。

枚举 c00 还是 1,剩下部分唯一确定。

这样我们就得到了一个最坏询问次数为 2n+1 的确定性算法。

考虑随机来得到第一步:一次正确的概率为 (nn/2)2nO(12n),随机 499 轮的正确性是有保证的。

submission

QOJ 7864. Random Tree Parking

题意:给定一棵树,求长度为 n 的序列 {a},满足:

枚举 i=1n,将 ai 祖先中深度最大的未染色点染色(包含本身),使得 n 次操作后所有点被染色。

数据范围:2n105,且 i 的父亲随机在 [1,i1] 中生成。

注意到如下事实:一个合法的 {a} 的任意排列都是合法的。

考虑进行子树 DP,统计 u 子树内的序列 {b},满足 b={aiaisubtree(u)}

把所有属于 u 子树中的 ai 都操作后会发生什么?整个 u 子树都被染色,且有可能往上染到 u 到某个祖先。

fu,i 表示 u 子树内的序列 b 个数,使得操作后染到 ui 级祖先。

我们可以知道 b 的大小为 szu+i

现在考虑合并 u 和儿子 v(此时先不把 u 放到 {b} 里,只考虑子节点):

gu,i+jgu,i×fv,j×(szu+i+szv+jszu+i)

szu 表示已经合并的子树总大小。

现在往子节点组成的序列中插入 u,枚举 u 的个数 i

fu,i+j1gj×(szu+j+ii)

最后 szuszu+1

由于整棵树随机,树高期望 O(logn),因此时间复杂度 O(nlog2n)

submission

QOJ 8049. Equal Sums

朴素 DP:f(i,j,k) 表示 ixjy=k 的方案数。

前缀和优化可以做到 O(1) 转移,但是状态数是 O(n2nV) 的,无法通过。

考虑状态 (i,j,k)

  • k0,强制转移到 (i+1,j,k+xi+1)
  • k>0,强制转移到 (i,j+1,kyj+1)

这样就把第三维控制在了 [V,V],状态数减小为 O(n2V)

submission

QOJ 9479. And DNA

题意:计数序列 A,满足 Ai[0,M], Ai+(Ai1 and Ai+1)=M,其中认为 A0=AN,AN+1=A1

数据范围:N,M109

逐位考虑,Xi 表示 X 的第 i 位。

在最低位时,满足对于所有 iAi,0+(Ai1,0 and Ai+1,0) 相同,等于 M0

  • M0=0A 的最低位要么全 0 要么全 1
  • M0=1:不能有连续三个 1,不能有连续两个 0,记方案数为 wN

我们发现,只有全 1 的情况才会对下一位进 1,且所有 Ai 都会进位。

由于进位是统一的,这说明在更高位 Ai,k+(Ai1,k and Ai+1,k) 全部相同依旧存在。

ck=Ai,k+(Ai1,k and Ai+1,k),需要满足 ck 加进位等于 Mk

fi,0/1 表示填了 0i 位,有没有向第 i+1 位进 1(这里的进位对象为表达式 Ai+(Ai1 and Ai+1))。

  • Mk=0

    fk,0=fk1,0这一位全填 0fk,1=fk1,0+fk1,1×wN全填 1 或 ck=1

  • Mk=1

    fk,0=fk1,1+fk1,0×wN上一位有进位且这一位全填 0 或 ck=1fk,1=fk1,1上一位有进位且这一位全填 1

唯一问题只剩 wN 怎么求。

考虑对序列 1011010 找到第一个 0 的位置:

如果这个 0 和紧跟着的 1 组成 01,方案为 wN2(删掉 01 后能对应唯一一种合法方案)。

如果组成 011,方案为 wN3。两种方案无交且覆盖所有情况。

有递推式 wN=wN2+wN3,边界 w1=0,w2=2,w3=3,矩阵快速幂 O(logM) 求出。

DP 过程中有没有可能出现 Ai>M 的状态呢?不可能,否则 Ai+(Ai1 and Ai+1)>M

submission

AT_joi2020ho_c

断环成链,fi,j,k,0/1 表示考虑了区间 [i,j],收集了 k 个物品,停在左/右端点的最小时间。

submission

P9743 「KDOI-06-J」旅行

fi,j,k,x,y 表示当前在 (i,j),已经花费 k 元,有 x 张往下的票,y 张往右的票剩余的方案数。

  1. 从上面走下来:fi,j,k,x,yfi1,j,k,x+1,y
  2. 从左边走过来:fi,j,k,x,yfi,j1,k,x,y+1
  3. 原地买一张往下的票:fi,j,k,x,yfi,j,kai,j,x1,y
  4. 原地买一张往右的票:fi,j,k,x,yfi,j,kbi,j,x,y1

如果一个方案满足两类票在 (i,j) 都至少选了一个,那么他会同时被 3,4 算到。

因此最后还要减去 fi,j,kai,jbi,j,x1,y1,即扣去这两个钦定在 (i,j) 买的票,剩下的方案。

时间复杂度 O(n5),空间可以滚动掉一维。

submission

P9034 「KDOI-04」Again Counting Set

题意:对可重集 S 计数,满足:

  • |S|=k
  • xS, 0xn
  • xSx=minS
  • xSx=minS+maxS+mex(S)

对于第三条限制:要么 S1,要么 0S

如果全 1,那么 mex=0=min+max,当且仅当 k=2

现在设 T 表示除最大值外的所有正整数集合,有 T=mex

感性理解一下 mex 不会很大,因为 mex 增大,T 以平方级别增长。

  • mex=1,不存在 T
  • mex=2T={1,1},最大值为 1[3,n] 的任何数。
  • mex=3T={1,2},最大值为 2[4,n] 任取,或 T={1,1,1},最大值为 2
  • mex=4T={1,1,2,},最大值为 3
  • 满足 mex5 且总和最小的 T{1,2,, mex2},此时 T>mex,因此一定无解。

submission

P11323 【MX-S7-T1】「SMOI-R2」Happy Card

优先花三带一最优。把炸弹看成三带自己。

每种牌尽可能多的分成 3 个一组,最优可能余 21

一张 1 能花费 1 的代价消耗一张 3

一张 2 能花费 2 的代价消耗一张 3 或花费 2 的代价消耗两张 3

因此先用 1 消再用 2 消,最后只剩 3

一张或两张 3 能花费 2 的代价花完;三张或四张 3 能花费 3 的代价花完。

按照平均花费,一定是四张四张花最优,最后再处理余数。

贪心,太困难了!

submission

P11324 【MX-S7-T2】「SMOI-R2」Speaker

题意:每次给出 x,y,查询 maxax+ay+azd(x,z)d(z,x)

p(x,y) 路径中距离 z 最小的点,与 z 有关的贡献转化为 az2×d(p,z)

fp 表示 maxaz2×d(p,z),容易换根 DP 求出。

问题转化为查询 (x,y) 路径中最大的 fp,倍增 O((n+q)logn)

submission

P10217 [省选联考 2024] 季风

首先有 i=1mxi=Xi=1mxi

我们想让 |xi| 尽可能小,因此一定存在一直最优方案使得所有 xiXi=1mxi 同号。

得到条件成立的一个必要条件:

|Xi=1mxi|+|Yi=1myi|mk

随便构造一组 x=SX 满足任意 |xi|k,然后令 |yi|=k|xi|

此时 |yi| 不会超过给定 SY,否则 SX+SY>mk

调整 |yi| 直到总和满足限制,这只会使 |xi|+|yi| 越来越小,因此上述条件也是充分的。

把绝对值拆成四个不等式,一个 m 合法当且仅当任意一个都满足(其中一个是充要的,其他三个顺带满足)。

枚举 mmodn,设 m=kn+i

分别解四个不等式可以得到合法 k 的上下界,时间复杂度 O(n)

submission

P9755 [CSP-S 2023] 种树

二分答案,设 ti 表示 i 能在规定时间内完成任务的最晚种植时间。

ti 越小的越着急被种,按 ti 从小到大考虑每个位置。

如果没被种,把他到根的一条链都种上(其他位置 tj<ti 且比 i 早种,一定满足限制)。

submission

[ARC188A] ABC Symmetry

首先解决判定问题,一个串合法当且仅当 A B C 出现次数的奇偶性相同。

cnt010 表示前缀 0iAC 的个数为偶,B 个数为奇的前缀个数。

不难设计一个朴素状态 f(i,s,cnt000,,cnt111)s 为前缀 i 的状态。

cnt000 产生的合法子串有:(cnt000+cnt1112)

因此不妨将互补的状态合并,f(i,cnt000,cnt010,cnt001,cnt100),最后一维没必要记录,因为所有 cnt 的总和确定。

一种更巧妙的方式是 ABC 分别看作 123si 为他们的前缀异或和,(l,r) 合法当且仅当 sl1=sr

submission

AT_joi2019ho_b

画框从小到大排序,画按美丽度从小到大排序。

i 个画框能放的画的集合包含第 i1 个画框的可选集合,不妨从后往前考虑。

选取能放进第 i 个画框的且美丽度最大的元素,这样的贪心显然正确。

submission

AT_s8pc_5_e

题意:给定一张包含 #.G 的网格,G 为终点,# 为石砖,. 为冰砖。

冰砖不能转向,石砖能转向。每经过一个石砖走一步的代价增加 1

对于所有起点,求出他们到 G 的最短路,N,M777,C7777C 为石砖个数。

把所有石砖和终点拉出来建图,总边数 O(C)

f(i,k) 表示从点 i 开始,初始速度为 k,到 G 的最短路,从大到小 DP。

由于最多经过 C 个石砖,第二维最大 C+1,时间复杂度 O(C2)

对于每个冰砖 i,找到上下左右最近的石砖 j 并用 f(j,2)+d(i,j) 更新即可。

submission

AT_s8pc_5_f

换种表达描述贡献:从大到小遍历 ai,如果让 i 变成 0,继续往下遍历;

否则 anscnt×aicnt 为包含 i 的区间个数,然后把这些区间删掉。

一旦一个 ai 未变成 0 而是清算了贡献,那么所有询问区间会被分成两半,递归到了子问题。

当前清算完的区间是没有后效性的,这启发我们使用区间 DP:

fi,k,l,r 表示当前遍历到第 i 大的数,还剩 k 次变 0 机会,所有包含于 [l,r] 的区间贡献和。

如果 i[l,r], fi,k,l,r=fi+1,k,l,r

否则根据 i 变不变 0 有两种转移,设 p 为第 i 大的数的位置:

fi,k,l,r=fi+1,k1,l,rfi,k,l,r=cntl,r,p×ap+mintfi+1,t,l,p1+fi+1,kr,p+1,r

其中 cntl,r,p 表示在包含于 [l,r] 的区间中,包含 p 的个数。

时间复杂度 O(n5)

submission

P9871 [NOIP2023] 天天爱打卡

(xi,yi,vi) 看作右端点为 xi,长度为 yi,价值为 vi 的线段。

fi 表示 1i 的答案,枚举断点 j,钦定 j 不打卡,(j,i] 打卡:

fi=maxj=ikifj1+wj+1,i(ij)×d

其中 wj+1,i,表示被 (j,i] 包含的线段权值和。

考虑扫描线,在右端点处加入每个线段,设 si 表示当前左端点 i 的权值和:

fi=maxj=ikifj1+sisj(ij)×d

经典把 i,j 贡献拆开:

fi=siid+maxj=ikifj1sj+jd

线段树维护 gj=fj1sj+jd

每加入一个线段 (l,i,v),对应的 sjl 就要 +v,因此把 gjgi1 区间 +v

注意到一个线段右端点到下一个右端点之间的 f 值完全相同。

而对于转移用的断点,其一定是某个左端点减一,否则不优。

这启发我们把所有右端点和左端点减一离散化,时间复杂度优化至 O(mlogm)

submission

P9754 [CSP-S 2023] 结构体

完全不需要考虑复杂度,直接模拟。

submission

P9119 [春季测试 2023] 圣诞树

对于这种产生交点的情况,走 ACBD 肯定更优(三角形两边之和大于第三边)。

存在一种最优方案使得路径无交。

因此我们从 k 开始走,要么顺着该多边形的边往下走,要么走到另一端没走过且离 k 最近的点。

断环成链,跑区间 DP 即可。

submission

P8817 [CSP-S 2022] 假期计划

枚举 B, C,枚举 B 能到达且 1 也能到达的点作为 A,同样枚举 D。

贪心的取 A 为符合条件的点中价值最大的,但可能出现 A 和 C, D 相等的情况。

枚举 A 为符合条件的点中最大的前三个,这样一定能遍历到最优解,且枚举量降为 O(n2)

submission

P8867 [NOIP2022] 建造军营

边双缩点成一棵树,所有树边都是原图割边。

如果两个边双内部都有点被选,那么其在新树上的路径必须全部被选。

u 内部点数为 Vu,边数为 Eu

fu,0/1 表示在 u 的子树内,有没有选点的方案数,fu,0=2Euvson(u)fv,0

f1 不好转移,考虑加强一下条件:fu,1 表示 u 子树有点被选,且所有被选点到 u 的边全部被选。

那么 fu,1=(2Eu+Vuvson(u)fv,1+2fv,0)fu,0

钦定 (u,fa) 不选,ans2ncntu1×fu,1,其中 cntu 表示 u 子树内的总边数。

本质在被选点集形成的虚树沿着被选边往上延伸到到的最高点 u 处统计答案。

另一种更自然的统计方法是枚举点集的 LCA(虚树的根),但是转移方程不如上述方法简洁。

submission

P5664 [CSP-S2019] Emiya 家今天的饭

  • 被选点集非空。
  • 每一行至多选一个点。
  • 设选出的总点数为 k,则任意一列被选点数不能超过 k2

如果只有前两条限制,那么总方案为 (si+1)1,其中 si=ai,j

现在考虑容斥减掉符合前两条但不符合第三条的方案。

注意到 2×(k2+1)>k,也就是说非法的列至多一个。

枚举这个非法的列,设 fi,j,k 表示考虑了前 i 行,该列放了 j 个,其他列放了 k 个的方案数。

j>kfn,j,k 从答案中减去。

转化一下条件,非法当且仅当 jk>0,这样就能把 j,k 压到一维,单轮复杂度 O(n2)

submission

[ARC104D] Multiset Mean

P11268 【MX-S5-T2】买东西题

[ARC136E] Non-coprime DAG

[ABC163E] Active Infants

[ARC107D] Number of Multisets

P4778 Counting swaps

posted @   Lu_xZ  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示