思路讲解
其实这个题面应该是一个很经典的类似于莫顿编码的东西。

当然,和莫顿编码还是稍微有点区别

思路就是针对每个询问递归的找就行了。
AC代码
https://codeforces.com/contest/2093/my
1 | // Problem: D. Skibidi Table |
其实这个题面应该是一个很经典的类似于莫顿编码的东西。

当然,和莫顿编码还是稍微有点区别

思路就是针对每个询问递归的找就行了。
https://codeforces.com/contest/2093/my
1 | // Problem: D. Skibidi Table |
参考以下题解:
https://www.luogu.com.cn/article/z6wql8q2
1 | FOR(i,1,N){cin>>P[i];} |
前面这个求抽到第 i 张卡,有多大的概率恰好抽到 j 张稀有卡,还是不难的。
但是这道题目要求的是抽到至少 X 张卡的数学期望,这个的转移有点难,也有点难想。
expi=1+j=0∑Nexpmax(0,i−j)×dp[N][j]
( $ exp_i$ 代表抽到至少 i 张的期望包数,dp[N][j] 代表该包抽到恰好 j 张稀有卡的概率 )
这个式子初看很难理解,其实细看之下,还是不那么难理解的,1是我这次抽,所以 +1,但是我们是要转移的,需要从别的情况转移过来,那从哪些情况那?其实就是从 j=0∑Nexpmax(0,i−j) 这些情况转移过来,但是这些转移是有概率的,多大的概率那?dp[N][j]。
当然因为左右两边都包含 expi 其实我们还要进行一个移项。
expi=1+expi×dp[N][0]+j=1∑Nexpmax(0,i−j)×dp[N][j]expi(1−dp[N][0])=1+j=1∑Nexpmax(0,i−j)×dp[N][j]expi=(1+j=1∑Nexpmax(0,i−j)×dp[N][j]) / (1−dp[N][0])
你可能会说,我还是不理解这个 +1,或者为什么不是直接用 X/每包的期望稀有卡数量。那么我问你,这个得到至少一张稀有卡的期望可能小于 1 吗?不可能吧,因为不可能一包卡都不开就拿到了一张稀有卡吧?所以其实这个 +1 就是这里的转移必须要用开卡包来转移。
https://atcoder.jp/contests/abc382/submissions/65982174
1 | // Problem: E - Expansion Packs |
1 | // 首先,上面的块是不会影响下面的块,只有下面的块影响上面的块的份 |
https://atcoder.jp/contests/abc382/submissions/64644331
1 | // Problem: F - Falling Bars |

其实这个约数个数定理是显然的
你想p1的指数有0~e1也就是e1+1种选择,同理,每种都有ek+1种选择
那么根据乘法原理,约束个数也就是 d(n)=(e1+1)(e2+1)…(ek+1)
当然喽,只有素因子可以这么玩,非素因子这么玩可能会有重复
当然这道题目关键点不在上面。
N=p1e1p2e2 由题意可得,e1为偶数,e2也为偶数。所以其实400数要求是完全平方数,而且是只由两个素因子构成。那么其实也就是要求平方数由两个素因子组成。
哈哈,其实这种也是有点套路,一般来说这种都是直接枚举素因子的
我们用埃氏筛筛出所有1e6以内的素数,存储在primes中。然后就枚举就完了。
1 | for(int i=0;i<primes.size();++i){ |
1 | // Problem: E - Ringo's Favorite Numbers 3 |
这个ll是非常需要的,写成int以后就TLE了,可能是因为溢出了。
1 | for(int i=0;i<primes.size();++i){ |
赛时想到思路了,也写出来了,但是死活都会WA四个点。
这种问题一般就是转化成二进制想,其实2^a就是二进制下右移a位。
最后靠AI手写了个二分的开方程序过了,这个是在有点离谱,现在在想我的程序为什么会WA。
找到一个博客,说sqrt是有点问题。
https://codeforces.com/blog/entry/107717
利用sqrtl就过了,离谱,floor(sqrt(i))就不行。
其实sqrtl其实是传入参数为long double,那么其实还是精度问题。我直接这么调用其实还有一个自动向下的隐式转换。
https://en.cppreference.com/w/c/numeric/math/sqrt
https://atcoder.jp/contests/abc400/submissions/64576953
1 | // Problem: C - 2^a b^2 |
666