2022.03.12总结

阶乘

题目大意:给出 n n n b a s e base base,求 n ! n! n! b a s e base base进制下末尾连续0的个数。

soluiton:考虑到答案其实就是最大的 k k k,使得 n !   m o d   b a s e k = 0 n!\bmod base^k=0 n!modbasek=0

b a s e base base分解质因数为: p 1 l 1 + p 2 l 2 + ⋯ + p n l n p_1^{l_1}+p_2^{l_2}+\cdots+p_n^{l_n} p1l1+p2l2++pnln

我们设 M a x n = p 1 a 1 + p 2 a 2 + ⋯ + p n a n Maxn=p_1^{a_1}+p_2^{a_2}+\cdots+p_n^{a_n} Maxn=p1a1+p2a2++pnan,且 M a x n Maxn Maxn n n n的因数,那么答案即为 m i n { ⌊ a i / l i ⌋ ∣ i ∈ [ 1 , n ] } min\{\lfloor a_i/l_i\rfloor|i\in[1,n]\} min{ai/lii[1,n]}

a a a数组如何求解?
a i = ∑ n > 0 ⌊ n / p i ⌋ a_i=\sum_{n>0}\lfloor n/p_i\rfloor ai=n>0n/pi
答案即为上述。

时间复杂度: O ( T b a s e log ⁡ n ) O(T\sqrt{base}\log n) O(Tbase logn)

石油储备

题目大意:给定一棵树,每个结点都有对应的 s i s_i si,问如何分配 s s s使得其方差最小的最小代价。

solution:最小费用最大流

考虑非平衡度最小时的情况:

s u m   m o d   n = 0 sum\bmod n=0 summodn=0,则答案为 ⌊ s u m n ⌋ \lfloor\dfrac{sum}n\rfloor nsum
s u m   m o d   n ≠ 0 sum\bmod n\neq0 summodn=0,则答案为 ⌊ s u m n ⌋ \lfloor\dfrac{sum}n\rfloor nsum ⌊ s u m n ⌋ + 1 \lfloor\dfrac{sum}n\rfloor+1 nsum+1

建图:

1、源点往所有点连一条流量为油桶数量,费用为0的边;
2、所有点往回电连一条流量为 ⌊ s u m n ⌋ \lfloor\dfrac{sum}n\rfloor nsum,费用为0的边;
3、对于读入的点,连一条流量为 + ∞ +\infin +,费用为读入的边;

然后跑一遍最小费用最大流。
随后把所有连向汇点的边流量加一(使得剩余流量跑完),再做一遍费用流。
两次答案之和即为答案。

小纪的作业题

题目大意:给定序列 a a a,对于每次询问 q u e r y ( l , r ) query(l,r) query(l,r),在子串 a i ∣ i ∈ [ l , r ] a_i|i\in[l,r] aii[l,r]中求出:对于每个不同的 x x x,如果它在子串中出现了 f ( x ) f(x) f(x)次,结果为 ∑ x f ( x ) \sum x^{f(x)} xf(x)

solution:莫队。

先将读入的数分块,暴力求出第一个区间的答案。

暴力在每个块内转移即可。

时间复杂度: O ( n n ) O(n\sqrt n) O(nn )

拯救莫莉斯

题目大意:给定一个 n × m n\times m n×m的矩阵,每个点可以放 0 / 1 0/1 0/1。要满足对于点 ( x , y ) (x,y) (x,y) e x , y , e x − 1 , y , e x + 1 , y , e x , y − 1 , e x , y + 1 e_{x,y},e_{x-1,y},e_{x+1,y},e_{x,y-1},e_{x,y+1} ex,y,ex1,y,ex+1,y,ex,y1,ex,y+1,中一个为1。

solution:状压 d p dp dp

f i , j , k f_{i,j,k} fi,j,k表示对于前 i i i行,第 i − 1 i-1 i1行状态为 j j j,第 i i i行状态为 k k k,并且对于任意一行 x ∣ x < i x|x<i xx<i,该行城市满足题目要求的最小代价。

辅助数组 g i , j , k g_{i,j,k} gi,j,k表示油库数量。

f i + 1 , s , X = m i n { f i , j , k + c o s t i + 1 , X } f_{i+1,s,X}=min\{f_{i,j,k}+cost_{i+1,X}\} fi+1,s,X=min{fi,j,k+costi+1,X}

答案: m a x { f n + 1 , x , 0 } max\{f_{n+1,x,0}\} max{fn+1,x,0}

时间复杂度: O ( 2 3 m n ) O(2^{3m}n) O(23mn)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值