首页 > 其他分享 >24.10.21

24.10.21

时间:2024-10-21 22:32:26浏览次数:8  
标签:pre cnt 21 sum 石子 24.10 times binom

A

哇,直接一个 CF*3000

要求的即为图 2,5,可以用总方案数( \(\binom{n}{3}\))减去图 1,3,4。

对于图 1,只要求出一根线左边有多少不与它相交的线,右边有多少线,记为 \(l_i\) 和 \(r_i\)。对答案的贡献为 \(l_i \times r_i\)。

对于图 3,4,两图的共同点为三条线中有两条满足另外的两条线一条与其相交,一条与其相离

对每条线计算 \(\text{与它相离的线数} \times \text{与它相交的线数}\),那么每个图 3,4 会被算两次,最后除以二即算出图 3,4 的总数。

现在要求 \(l_i, r_i\)。

对于弦 \((x, y), (x < y)\)。在其左边的条件是:\((x' < x \wedge y' < x) \vee (x' < x \wedge y' > y) \vee (x' > y \wedge y' > y)\)。

在其右边的条件:\(x' > x \wedge y' < y\)。

可以二维偏序求解。

B

正男则反。倒着考虑。

求从终止局面到初始局面移除石子的方案数。

在终止局面每一段石子的方案数是独立的,操作之间的顺序也是独立的。

记 \(cnt_i\) 表示只考虑连续一段有 \(i\) 颗石子的方案数。转移时枚举最后一颗填在哪:

\[cnt_i = \sum_{j=1}^i (i - j + 1) \times \binom{i - 1}{j - 1} \times cnt_{j - 1}\times cnt_{i - j} \]

边界 \(cnt_0 = 1\)。

连着位置 \(1\) 的石子要特殊考虑。设 \(pre_{i, j}\) 表示石子从 \(1\) 填到 \(i\),失败了 \(j\) 次的方案数,转移同样枚举断点:

\[pre_{i, j} = i \times pre_{i, j - 1} + \sum_{k = 2} ^ i(i - k + 1) \times \binom{i + j - 2}{i - k} \times cnt_{i - k} \times pre_{k - 1, j} \]

边界 \(pre_{1, 0} = 1\)。

然后把后面的石子的答案统计起来。\(suf_{i, j}\) 表示从 \(i\) 到 \(n\),有 \(j\) 颗石子的方案数。

\[suf_{i, j} = \sum_{k = 0} ^ {j} \binom{j}{k} \times cnt_k \times suf_{i + k + 1, j - k} \]

边界为 \(suf_{n + 1, 0} = 0\),把过程中下标大于 \(n\) 的位置都归到 \(n + 1\)。

最后答案为

\[ans = \sum_{i = 1} ^ n \binom{m}{i + p - 1} \times pre_{i, p} \times suf_{i + 2,m - p - i + 1} \]

C

由于谢直接 \(O(n^2)\) 过了,所以没人好好改了哈哈。

卡常小技巧之 memset 只初始化用得到的数组范围。


P2568

\[\begin{aligned} &\sum_{p \operatorname{is prime}}\sum_{x = 1}^{n}\sum_{y = 1}^{n}[\gcd(x, y)=p]\\ =&\sum_{p \operatorname{is prime}}\sum_{x = 1}^{n/p}\sum_{y = 1}^{n/p}[\gcd(x, y)=1]\\ =&\sum_{p \operatorname{is prime}}\left(2\left(\sum_{x = 1}^{n/p} \varphi\left(x\right)\right) - 1\right) \end{aligned} \]

筛个 \(\varphi\) 再求个前缀和就好了。

好吧当时我第二个等号后面变成了 \(\sum_{p}\sum_{x=1}^{n/p}\varphi(x)\) 算出来发现不对然后考虑到是个方阵应该乘二再减去对角线

P2152

【模板】gcd,但是值域 \(10^{10000}\)。

进行了半个小时高精实现更相减损法哦是叫 Stein算法,T 的死死的又不会写压位。

然后成为语言大师:

x,y=gets.to_i,gets.to_i
while y!=0
    x,y=y,x%y
end
print x

P3861

因数个数一般认为是三次根号量级。

求出所有因数,从小到大排序,设 \(f_{i, j}\) 表示把第 \(i\) 个因数分解成 \(\le\) 第 \(j\) 个因数的乘积的方案数。

\[f_{i, j} = \begin{cases} f_{i, j - 1} & d_j \nmid d_i \\ f_{i, j - 1} + f_{pos_{d_i/d_j}, j - 1} & d_j \mid d_i \end{cases} \]

边界是 \(f_{1, 1} = 1\),最后答案为 \(f_{dcnt, dcnt} - 1\),减去没拆分的。

P6583

\(\dfrac{x}{y}\) 可以表示为十进制有限小数的充要条件是 \(\dfrac{y}{\gcd(x, y)}\) 不含有 \(2, 5\) 以外的质因数。

然后我只会 \(O(n^2\log n)\) 还不如小学的小 Z

那么 \(\dfrac{x}{y}\) 是可以被表示成 \(\dfrac{bc}{ac}\),其中 \(a\) 不含有 \(2, 5\) 以外的质因数,\(c\) 不含有 \(2, 5\) 的质因数,\(b\) 任意。

首先是可以找到 \(\le n\) 的所有 \(a\) 的。

对于 \(\dfrac{bc}{ac}\),先枚举 \(c\),那么 \(b \in [1, \lfloor\frac{n}{c}\rfloor]\) 取任意数,\(a \in [1, \lfloor \frac{n}{c} \rfloor]\) 只含有质因数 \(2, 5\)。

那么这个范围是一个经典整除分块的范围,\(a\) 的数量随着 \(c\) 增大单调不增,可以用一个指针指着 \(a\) 当前的下标单调前移。

但是 \(c\) 并不取范围内所有数,而是不含质因数 \(2, 5\) 的数,这个可以差分算 \([1, l - 1],[1, r]\) 中的个数,算一个前缀的个数则可以容斥。

LL g(LL x) {return x - x / 2 - x / 5 + x / 10;}
LL g(LL l, LL r) {return g(r) - g(l - 1);}

P5505

容斥。

令 \(f_i\) 表示钦定 \(i\) 人没分到(剩下的不管)的方案,那么对每个特产分开考虑是插板法,再用乘法原理乘起来。

\(f_i = \binom{n}{i}\prod_{j = 1}^m \binom{a_j + n - i - 1}{n - i - 1}\)。

然后容斥 \(ans = \sum_{i = 0}^{n - 1} (-1)^i f_i\)。

标签:pre,cnt,21,sum,石子,24.10,times,binom
From: https://www.cnblogs.com/KinNa-Sky/p/18491550

相关文章

  • 24.10.20
    P3601不互质的数个数就是\(n-\varphi(n)\)。\(\displaystyle\varphi(n)=n\prod\frac{p_i-1}{p_i}\)。直接用小于\(\sqrt{r}\)的素数求欧拉函数。所有数一起求。rep(i,l,r)phi[i-l]=val[i-l]=i;rep(i,1,pcnt) for(LLj=(l+prm[i]-1)/prm[i]......
  • 24.10.19
    A数学题,不会。随便取一数\(v\),询问得到\(t\equiv\log_gv\pmodp\)。我们希望找到\(x\)使得\(v^x\equivg\pmodp\),即\(g^{tx}\equivg\pmodp\Leftrightarrowtx\equiv1\pmod{p-1}\)。那么只要\(t\)与\(p-1\)互质即可求得逆元。有原根相关知识可以知......
  • 2024/10/21 模拟赛总结
    \(100+50+0+5=155\),T3三目没打括号太爽了#A.串串串基本上就是前缀异或和板子交换两个\(0,1\)不会改变奇偶性,所以可以直接疑惑判断//BLuemoon_#include<bits/stdc++.h>usingnamespacestd;constintkMaxN=2e5+5;intn,m,q,l1,r1,l2,r2,f[kMaxN],g[k......
  • 2024-10-21每日一题
    P1223排队接水题目描述有\(n\)个人在一个水龙头前排队接水,假如每个人接水的时间为\(T_i\),请编程找出这\(n\)个人排队的一种顺序,使得\(n\)个人的平均等待时间最小。输入格式第一行为一个整数\(n\)。第二行\(n\)个整数,第\(i\)个整数\(T_i\)表示第\(i\)个人的......
  • 10.21日
    CREATETABLEwebsites(idint(11)NOTNULLAUTO_INCREMENT,namechar(20)NOTNULLDEFAULT''COMMENT'站点名称',urlvarchar(255)NOTNULLDEFAULT'',alexaint(11)NOTNULLDEFAULT'0'COMMENT'Alexa排名',co......
  • 10.21
    A.CircleCF297E场上秉持着正难反更难的精神,根本没考虑容斥。正着统计合法方案很难,考虑用总方案数减去不合法方案数。总方案数比较容易求得,为\(\binom{n}{m}\)。不合法的可以归为两种情况:一种是两边都与当前线段相离。另一种是一个与当前线段相交,另一个相离。第一种情......
  • 10.21
    没时间写题了,写点题解。一道题写了一晚上,效率有点低。。。多校A层冲刺NOIP2024模拟赛09区间给定一个长度为\(N\)的数列\(A_1,A_2,\dots,A_N\)和一个长度为\(N−1\)的数列\(B_2,B_3,\dots,B_N\)。有\(Q\)个询问,每次询问是一个区间\([L_i,R_i]\)。请你求出有多少二元......
  • Day21数组的声明和创建
    Day21数组的声明和创建数组声明创建:首先必须声明数组变量才能在程序中使用数组。声明数组变量的语法有两种:“dataType[]arrayRefVar;”(首选方法);或“dataTypearrayRefVar[];”(效果相同,但不是首选方法)。Java语言使用new操作符来创建数组,语法为dataType[]arra......
  • [20241021]使用gdb查看修改内存地址以及相关值.txt
    [20241021]使用gdb查看修改内存地址以及相关值.txt--//执行oradebugpoke报错,感觉oracle已经禁止这类hack操作。1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION              ......
  • 10.21 ~ 10.27
    10.21Day-4快CSP啦……话说真的应该这么早就开始记“Dayx”吗为啥这几天这么冷啊要冻死了......