今天开始和机油打比赛,开始做多校,真鸡儿难,我太菜了。
这个题不是很难,开始就是没想到。等临走的那一周,开始做概率。
题目是 若 有至少2个球拍和至少一个球就满足条件,求的是不满足条件的情况数。
记事件A 为 来的人都没有球。
事件B 为 来的人都没有球拍。
事件C 为 来的人只有一个球拍。
以上就是构不成满足条件的事件数,因为d这类人既有球也有球拍,所以A B C 之间不是独立的。
有容斥定理地
ans = (A + B + C) - (AB + BC + AC) + (ABC)
求解即可
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
const int MOD = 998244353;
LL pow(LL a,LL b)
{
LL ans = 1;
a = a % MOD;
while(b)
{
if(b&1) ans = (ans * a ) % MOD;
a = (a % MOD * a % MOD) % MOD;
b >>= 1;
}
return ans;
}
int main()
{
LL a,b,c,d;
int T; cin >> T;
while(T--)
{
cin >> a >> b >> c >> d;
LL k1 = ((b + d + 1) * pow(2,a+c)) % MOD;
LL k2 = pow(2,a + b);
LL k3 = (b + 1) * pow(2,a);
LL ans = ((k1 % MOD + k2 % MOD - k3 % MOD) + MOD) % MOD; // 同余定理用减法时注意 补正。
cout << ans << endl;
}
return 0;
}
总结,建模时信息构造“较慢”、“较低效”。没有有效思考。
建议:做做概率和逻辑。