题目:给n个范围,第i个范围选pi,然后定义特征值k=p1+p2+...+pn。这次的开心度就是A(k%m)。m是给的一个数组A,长度为m。
要求:
就是个全排列组合的问题,找规律。
举个例子,有n个礼物,分别是(L1,R1) (L2, R2) (Ln, Rn)
- 每个区间取个数然后相加,所有出现的结果,其实就是A[L1+L2+...Ln], A[L1+L2+...Ln+1] ...... A[R1+R2+....+Rn]
- 就是这些每个区间的最小值到这些区间最大值,就是这些结果,关键就是每个结果出现了多少次?
- 多少次其实就是一个组合数,比如A[L1+L2+...Ln+1]这个结果出现了多少次?也就是这个+1的这个1是由哪个区间提供,就想成有这么多座位:tot = R1+R2+..+Rn - L1-L2-...Ln,要占一个座位,随便占一个的可能性为C(tot, 1)
- 知道了3就知道算A[L1+L2+...Ln + x]出现的情况了,其实就是C(tot, x)
算一下复杂度:
C(tot, i)的复杂度:这个每次都是在C(tot, i-1)地基础上算,很简单,直接忽略
也就是for循环一下从L1+L2+...Ln到R1+R2+....+Rn,这也就1e8
结果就是这样:
for(int i = totl, j = 0; i <= totr; i++, j++)
ans = (ans + C(totr-totl, j) %mod * A[i%m] % mod) % mod;
标签:+...,Ln,题解,tot,Future,L2,L1,Rn From: https://www.cnblogs.com/philo-zhou/p/17314930.html