2024.7.28
2024.7.28
T1
这个题赛时把 \(A\) 当成了 \(11\) ,所以就挂掉了,另外,不要使用 \(gets\) , \(getline\) , 在 \(Linux\) 评测环境下会奇怪地 \(WA\) 掉,因为 \(Linux\) 和 \(Windows\) 环境下的换行符是不同的。
T2
根据平方差公式( \(x^2-y^2=(x+y)(x-y)\)) ,得到 \(x,y\leq n\) ,枚举 \(a+b\) 和 \(a-b\),得到 \(O(n\log n)\) 的时间复杂度,或者对于 \(x=\frac{a+b}{2},y=\frac{a-b}{2}\),得到 \(O(n\log n)\) 的时间复杂度。
这样的时间复杂度已经足够通过本题了,但这依然不是标算。
标算是什么呢?

扫描一下答案就出来啦!!!!!!
T3
60分做法就是直接提取 \(max\)。
插句话:
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j)
a[j]=a[j]-min(a[i],a[j]);
}
}
int sum=0;
for(int i=1;i<=n;++i){
sum+=a[i];
}
这段代码求的是 \(max(a_1,a_2,a_3,\dots,a_n)\)。
这道题只需把a[j]=a[j]-min(a[i],a[j]);改成a[j]=a[j]/gcd(a[i],a[j]);,答案改成求积即可。
为什么?因为就是对这一段的指数取 \(max\) 。

可以拿到20pts
满分十分接近,对于每一个不可走点到另一个最接近的进行 \(DP\)。
后记:
关于代码为什么厌氧,是因为 \(C++\) 写局部变量时,\(O2\) 会给它附一个奇怪的值 (⊙o⊙)? 导致 \(RE,WA,TLE,MLE,CLE,OLE,UKE\)
lucas定理
是这样定义的:\(C_n^m\)=\(C_{n/p}^{m/p}\) * \(C_{n \mod p}^{m \mod p}%p\)
当 \(n \lt m\) 时 \(C_n^m = 0\)
组合数取模的问题
-
当 \(n,m\) 很大的时候,\(p \leq 10^6\) 且 \(p为质数\) ,使用 \(lucas定理\) 。
-
当 \(n,m \leq 10^3\) 的时候,\(p \texttt{为任意数}\) ,算杨辉三角形即可
-
当 \(n,m \leq 10^6\) , \(p是约等于10^9的质数\),使用计算公式
-
当 \(n \leq 10^9,m \leq 10^3\) , \(p为任意数\),经过约分(见下图)



浙公网安备 33010602011771号