2016 计蒜之道 复赛 一些简单题的Solution

首先恭喜ShinFeb大神A4题险些前50
然后恭喜unicornt大神在罚时遥遥领先的情况下最后一题怒WA5次排在了我后面

E:微信钱包付款

Description
微信支付是腾讯公司的支付业务品牌,以绑定银行卡的快捷支付为基础,为用户提供安全、快捷、高效的支付服务。小 Q 和他的两位好朋友一起去吃大餐,吃完后小 Q 打开微信,扫了商家提供的二维码,用微信完成了支付。现在三个人要分摊下饭钱,每个人分别需要支付 a 元,b元和 c 元,定义f(x)为数字 xx 的各位数字之和,例如 f(123)=1+2+3 。现在三个人想找到一种分摊方案,使得 f(a)=f(b)=f(c)

Solution
首先大胆猜测只有当 n0 (mod 3) 时才有解。或者随便打个表找下规律。
关于怎么构造:首先你可以知道每个数字的数字和了,设它为 k
然后对于数字n,我们从右往左扫,扫到一个数字和是 k/3 的时候换下一个数字。
如126:首先获得了12,然后3,最后3.
在如123456789,首先获得了12345,然后672,然后69
这样满足了 f(a)=f(b)=f(c) ,然而不满足 a+b+c=n
其实没什么,在后面补个0就好了。
如126:120 3 3
如123456789: 123450000 6720 89

可以AC了。

F: 菜鸟物流的运输网络

Description
菜鸟物流有自己的运输网络,网络中包含 n 个城市物流集散中心,和m对城市之间的运输线路(线路是双向的)。菜鸟物流允许淘宝卖家自行确定包裹的运输路径,但只有一条限制规则:不允许经过重复的城市。淘宝卖家小明从 a 城市寄出快递后,希望包裹在mid 城市进行包装加工以后再寄往 b 城市。
现在小明希望算出一个满足他需求的合法运输路径,你可以帮他算出来么?
已知这样的方案一定存在。请为小明输出任意一个可行方案。

Solution

在比赛刷到网络流有种泪奔的冲动==
然而这题尼玛神似SPOJ952
mid src a b sink 连边,每个点都拆点,连一条边权为1的边,跑一下最大流。
关于怎么找路径,以 mid 开始向增广后边权为1的点推进即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值