P9552 题解
思路
对于 的情况,我们先要求出 的值,最优策略就是每一行、每一列都至少有一个格子被横穿,答案是 。
而 的情况,最优策略就是 保持不变,让 去扩展即可。别忘了要开 long long,时时刻刻都要取模!
证明
为什么让 保持不变,让 去扩展就是最优策略了呢?因为原式是 ,转换一下变成 ,这时我们要使 最小,而我们知道两个数在和相同的情况下,两个数肯定是差距越大积才越小,所以我们就会使 和 变成 和 (不保证这是 和 的顺序)。
代码
# include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod = 998244353;
int t, op;
ll n, m, q;
int main () {
	cin >> t;
	while (t --) {
		cin >> op >> n >> m;
		if (op < 2)
			cout << n + m - 1 << '\n';
		else {
			cin >> q;
			cout << min (n, m) % mod * ((q - n - m + 1) % mod) % mod << '\n';
		}
	}
	return 0;
} 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号