[JSC2021 A~D + F]

半小时打完了\(A~D\),想要一发\(F\)冲进前\(100\),结果平衡树常数大\(T\)了。据说\(G\)是矩阵树定。

\(A\)

放代码吧。

// code by Dix_
#include<bits/stdc++.h>
#define ll long long
 
inline ll read(){
    char C=getchar();
    ll N=0 , F=1;
    while((‘0‘ > C || C > ‘9‘) && (C != ‘-‘)) C=getchar();
    if(C == ‘-‘) F=-1 , C=getchar();
    while(‘0‘ <= C && C <= ‘9‘) N=(N << 1)+(N << 3)+(C - 48) , C=getchar();
    return F*N;
}
 
ll x,y,z;
 
int main(){
	x = read(),y = read(),z = read();
	if(y * z % x != 0)
	std::cout<<(ll)y * z / x;
	else
	std::cout<<(ll)y * z / x - 1<<std::endl;
}

\(B\)
按题意模拟

\(C\)

考虑枚举这个最大的公约数,把这个公约数的倍数在小于\(m\)情况下求出第二大的,看是否大于\(n\)

\(D\)

考虑第一位有\(p - 1\)种选择,以后每个位根据前面的和的膜,只有\(p-2\)

\(F\)

考虑改变一个数时,在另外一个序列里找到原数的贡献,和现在这个数的贡献。
并在这个序列中删掉原数,加入新数。
用平衡树操作,只要查询前缀,前缀和,还有删除插入操作

\(rank 800\)果真还是逊啊。

[JSC2021 A~D + F]

上一篇:Java 多线程 (概述)


下一篇:canvas 与 webGL , openGL