【JZOJ1319】邮递员

邮局需要设计邮递员路线,使邮局收益最大化。每到达编号为i的村子,若这是邮递员第k个不同的村子且k<=w(i),村子支付w(i)-k欧元;否则邮局支付k-w(i)欧元。每过一条小路邮局补贴1欧元。任务是找到字典序最小的欧拉回路,确保邮局利益最大化。分析表明,费用固定,只需按字典序从小到大顺序遍历村子并逆序输出路径即可实现最优解。
摘要由CSDN通过智能技术生成

description

邮局需要你来帮助他们为某个邮递员设计出一条能够穿过那遥远乡村的所有村子和小路至少一次的邮路(输入数据将会保证这么一条路是一定存在的)。
  但是,每条路线都是有一个花费的。各个村子里的村民希望邮递员到达他们村子的时间越早越好。因此,各个村子里的人们采用了一些措施:假设第i号村子是邮递员在他的邮递路线上到达的第k个不同的村子。如果k<=w( i ),那么这个村子的村民就会付给邮局w( i )-k欧元。当然,如果k>w(i),邮局也同意付k- w( i )欧元给这个村子,重复经过村子不重复收费。此外,邮递员每经过一条小路,邮局也要付给邮递员1欧元作为补贴。
  现在有n个村子,编号依次为1到n。邮局就位于1号村子,因此邮递员的传递路线从这里开始,也从这个村子结束。能够离开每个村子的路口的数目一定是2,4或者8。这里允许出现同样的村子间存在多条小路,或者某条小路构成了一个自环的情况。
  你的任务是设计一个路线使得邮局赚的钱最多(或者说赔的钱最少。如果有多种最优解,输出字典序最小的。


analysis

  • 看懂题了的话,其实对于任意一种走法,费用都不会变,赚的钱就是 ∑ i = 1 n w [ i ] − ∑ i = 1 n i \sum^{n}_{i=1}w[i]-\sum^n_{i=1}i i=1nw[i]−</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值