0%

思路讲解

注意到

AC代码

心路历程(WA,TLE,MLE……)

思路讲解

感觉是dp,因为是计算路径数量。

首先我们将dp状态定义为到达该点的路径数量(其实也就是同一行之间只能从右往左转移)

image

然后转移方式如上图所示。

AC代码

心路历程(WA,TLE,MLE……)

这个测试组数7有点问题

https://codeforces.com/contest/2091/submission/316079483

最后发现是没取模,6.

思路讲解

解释最小公倍数的计算原理

ab=lcm(a,b)gcd(a,b)a \cdot b = lcm(a, b) \cdot gcd(a, b)

这个可以用质因数唯一分解定理解释

image

或者用上面这张图来解释,product相当于就是把交集部分再乘了一遍,一共乘了两遍。那么lcm=product/gcd(a,b)lcm=product/gcd(a,b),相当于就是把多乘的交集部分给去掉了。


上面其实只是介绍了一下题目背景。

理解了上面这张图,那么其实就好搞多了,F(a,b)=lcm(a,b)/gcd(a,b)F(a,b)=lcm(a,b)/gcd(a,b) 其实就是去掉中间的交集两边省的东西。按照题目要求 F(a,b)F(a,b) 必须为质数。那么其实就是要求两遍剩的,一边是1,一边是一个质数。

AC代码

https://codeforces.com/contest/2091/submission/315904464

心路历程(WA,TLE,MLE……)

思路讲解

这个还是要写的更细致一点,检查函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
inline bool check(ll x){
// ll res=ceil((M*N)*1.0l/(x+1));
// ll rem=K%x;
ll res=x*(M/(x+1));
ll usedBlock=(x+1)*(M/(x+1));
res+=max(0ll,(M-usedBlock));
// #ifdef LOCAL
// cerr << x<<" "<< res << '\n';
// #endif
if(res*N>=K){
return true;
}
return false;
}

AC代码

心路历程(WA,TLE,MLE……)

思路讲解

【Codeforces Round 1014 (Div. 2) 题目讲解 ABCDE (CF2092)】 https://www.bilibili.com/video/BV1koZBYhEH1/?share_source=copy_web&vd_source=6ca0bc05e7d6f39b07c1afd464edae37

在这种问题当中,往往需要把这个格子的周围4个格子确定了。而不是先确定这个格子填什么

image

如上图,无论这个格子填黑还是填白,所贡献的都是奇数。

同理,如果周围的4个格子两黑两白,那么无论这个格子填什么,一定会贡献一个偶数。

image

由于在这种格子中,奇偶性会发生反转,所以说你可以其他格子随便填,但是你选择的这个格子(比如图中画橙圈的)一定是确定的颜色,一个数加上偶数或者奇数总能是偶数是吧。

image

那么有种特殊情况,就是这种既能是偶数,也能是奇数的点全部被占了怎么办?这真不会了。

image

其实也不难,假设其他点全部为白色,算就完了。

AC代码

https://codeforces.com/contest/2092/submission/315721639

心路历程(WA,TLE,MLE……)