多校9 Rikka with Badminton(容斥原理)

今天开始和机油打比赛,开始做多校,真鸡儿难,我太菜了。
这个题不是很难,开始就是没想到。等临走的那一周,开始做概率。
题目是 若 有至少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;
    }

总结,建模时信息构造“较慢”、“较低效”。没有有效思考。
建议:做做概率和逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值