2021江西省赛 2021 Jiangxi Provincial Collegiate Programming Contest
2021 Jiangxi Provincial Collegiate Programming Comuqintest
目前做了: ABHKL
https://codeforces.com/gym/103366
A. Mio visits ACGN Exhibition
数字三角形模型,只依赖于前一个状态,并且总数量很大,所以可以使用滚动数组优化转移过来。(滚动数组)
因为只能往右和下走,所以路径长度是固定的\(n+m-1\)
#include
using namespace std;
const int N = 505, M = 1010, mod = 998244353;
int f[2][N][M]; //滚动数组优化 //0的个数
int a[N][N];
int n, m, p, q;
int main () {
cin >> n >> m >> p >> q;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
cin >> a[i][j];
if (a[1][1] == 0)
f[1][1][1] = 1;
else
f[1][1][0] = 1;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++) {
if (i == 1 && j == 1)
continue; //初状态已经更新好,不需要转移
if (a[i][j] == 0) {
f[i % 2][j][0] = 0;
for (int k = 1; k < M; k ++)
f[i % 2][j][k] = (f[i % 2][j - 1][k - 1] + f[(i - 1) % 2][j][k - 1]) % mod;
}
else {
for (int k = 0; k < M; k ++)
f[i % 2][j][k] = (f[i % 2][j - 1][k] + f[(i - 1) % 2][j][k]) % mod;
}
}
int ans = 0;
for (int i = p; i <= n + m - 1 - q; i ++)
ans = (ans + f[n % 2][m][i]) % mod;
cout << ans << endl;
}
//从(1,1)到(n,m)至少经过p个0,q个1
//有多少种可能
//dp 倒推
//数字三角形模型
//维度
//路径长度是固定的 n+m-1,所以记录1的数量j,那么1的数量就是n+m-1-j
//滚动数组优化!!
B. Continued Fraction
经过模拟其运算规则可以发现,这是一个类似辗转相除的东西,xy迭代更新(y变模数,x变上一个y)(最终余数为1的时候就表示除完了) 这是一道需要大胆猜结论的题目(我大胆猜测,然后一发入魂,贼激动)。 简单模拟,预处理平方和,然后再乘m即可 就是被覆盖到的区间标记一下,然后统计最终的长度
另:当x#include H. Hearthstone So Easy
当先手没办法一击毙命B的时候,他就输了(因为先手取牌一定会有消耗,而后手抽完牌之后就有办法整死先手了hhh)
大概就这个意思吧,我也不太会证明#include K. Many Littles Make a Mickle
#include L. It Rains Again
(一开始写的区间合并,不知道为啥WA,害)
这做法害挺巧妙的,可以积累一下#include