2011 ACM/ICPC 福州赛区网络赛解题报告

第一次写网络赛的题解,福州赛区网络赛作为我第一年ACM最后一次网络赛酱油,画了一个很像逗号的句号.....好吧,还得为北京现场赛准备啊准备.......

这次酱油打的很犀利,貌似出第一题很快,之后节奏就总比师兄们慢一步.....囧死了,名次很顺利的入手,就没啥了,写下题解吧。

 

题目链接 

 

第一题:A Card Game

坑爹的题目叙述,仰慕杰哥非常犀利的YY出题意,ans = a[1] / N......好吧,现在证明一下啊。

首先,我们假设取牌的顺序是一个序列,我们考虑可行序列存在的情况:对于序列中任意一个数i的后面一个数j,必然要放在第i堆里面,因为值为i的数有a[i]个,所以在i后面的数也恰好有a[i]个,所以a[i]数放在了第i堆,符合题目约束了。

由于游戏从第一个堆开始,第一个数是没有前驱的,所以,如果最后一个数不是1,那么第一堆必然是a[1] + 1个数了,与约束不符合。而且,如果最后一个数不是1,记为i的话,就只有a[i] - 1个后继了。

所以,综上,只有最后一个数为1,那么堆容量a[i]才会符合约束,而我们能根据序列构造一种符合情况的分摊和取牌方案,所以,题目变为了:N个数的全排列,其中最后一个是1的概率.....

先从a[1]个1里面取一个1,有a[1]种方案,之后剩下N-1个数全排列(N-1)!,符合结尾是1的方案数是a[1] * (N-1)!种,所以解就是a[1] / N。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值