ARC061

C

状压枚举加号所在位置即可。

code

D

因为每个点只能影响周围 9 9 9 3 × 3 3 \times 3 3×3 矩阵的黑格子个数,暴力去找这些矩阵统计答案即可,注意不要重复算。

code

E

给每条边建立虚点,用并查集合并后跑最短路即可。

code

F

卡牌构成了一个确定的序列,我们发现如果 A A A 要获胜需要取出 a a a A A A(因为第一回合 A A A 抽卡没有计入序列), B B B 获胜需要取出 b + 1 b+1 b+1 B B B C C C 获胜需要取出 c + 1 c+1 c+1 C C C

所以答案求的就是用 a a a A A A b b b B B B c c c C C C 构成的以 A A A 结尾的序列,为了方便,令 a ′ = a − 1 , n = a ′ + b + c a'=a-1,n=a'+b+c a=a1,n=a+b+c

我们枚举 A A A 取胜时序列的长度 i i i,就能得到计算式

∑ i = a ′ n C i a ′ 3 n − i ∑ j + k = i − a ′ , j ≤ b , k ≤ c C i − a ′ j \sum_{i=a'}^n C_{i}^{a'} 3^{n-i} \sum_{j+k=i-a',j \leq b,k \leq c} C_{i-a'}^j i=anCia3nij+k=ia,jb,kcCiaj

因为右式有两个变量,看起来很不舒服,设 T = i − a ′ T=i-a' T=ia,于是变形得 max ⁡ ( 0 , T − c ) ≤ j ≤ b \max(0,T-c) \leq j \leq b max(0,Tc)jb,重写式子得

∑ i = a ′ n C i a ′ 3 n − i ∑ j = max ⁡ ( 0 , T − c ) b C T j \sum_{i=a'}^n C_{i}^{a'} 3^{n-i} \sum_{j=\max(0,T-c)}^b C_T^j i=anCia3nij=max(0,Tc)bCTj

右侧的式子仍然不好化简,考虑分类讨论,令 c ≤ b c \leq b cb

1. 1. 1. max ⁡ ( 0 , T − c ) = 0 \max(0,T-c)=0 max(0,Tc)=0,即 T ≤ c ≤ b T \leq c \leq b Tcb,此时式子为

∑ j = 0 b C T j = ∑ j = 0 T C T j = 2 T \sum_{j=0}^b C_T^j=\sum_{j=0}^T C_T^j=2^T j=0bCTj=j=0TCTj=2T

2. 2. 2. T > c T>c T>c,于是有 ∑ j = T − c b C T j \sum_{j=T-c}^b C_T^j j=TcbCTj,考虑递推,设 f = ∑ j = T − c b C T j f=\sum_{j=T-c}^b C_T^j f=j=TcbCTj,下一轮的式子 g = ∑ j = T + 1 − c b C T + 1 j g=\sum_{j=T+1-c}^b C_{T+1}^j g=j=T+1cbCT+1j,有

g = ∑ j = T + 1 − c b C T j + C T j − 1 = 2 f − C T T − c − C T b g=\sum_{j=T+1-c}^b C_T^j+C_T^{j-1} =2f-C_T^{T-c}-C_T^b g=j=T+1cbCTj+CTj1=2fCTTcCTb

于是就解决了。

code

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值