回档|分苹果

背景:今晚在tyvj参加了一下比赛,没想到可耻的跪了。第一题地球人都知道spfa,结果我写了个坐标类DP还得了30分……悲剧。唯一欣慰的是我用组合数学做出了第二题,奠定了我们学校有五个人冲进前六的基础。先发第二题好了。

 

题目:由于tyvj比较坑,比赛的题目竟然没了!只能说下大体意思。给定n个苹果,要求分到3个袋子中。袋子是无序的,问有多少种情况,并对k取模。

 

输入解释:第一行,输入两个整数n,k

输出解释:输出只有一行,即方案总数对k取模的结果。

输入样例: 11 10000

输出样例: 9525

 

题目分析:

       很明显,每个苹果有三种可能,即放在1,2,3号袋子中。于是n个苹果的总数就是3^n。

       我们不妨利用容斥原理对所有情况进行分类讨论:

       (1)当有两个袋子为0时。那么就会有0,0,全部;0,全部,0;全部,0,0三种情况。显然这应算是一种情况。之所以算是三种而不是六种(见下),是 因为当我们把全部苹果放入一个袋子时,显然与放置一个苹果是等价的。那么对于一个苹果,无疑只有一种情况。

       (2)对于剩余情况,我们不妨把三个袋子按苹果多少排序。例如1,2,3。显然这组数字有六种不同的顺序。也就是我们说得普通情况。

        因此我们可以得到公式:ans=(3^n-3)/6+1。事实上运用除法逆元还可以进一步简化,请同学们自行思考。(解释都到这里了,源代码就不用发了吧?事实上是代码被tyvj吞了……)

转载于:https://www.cnblogs.com/Shymuel/p/4393550.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值