Codeforces Round #483 (Div. 1) 题解

我的第一场Div1,感觉很有挑战性,也很有趣,而且计分还是很宽容的.

983A Finite or not?

983B XOR-pyramid

983C Elevator

题意

一栋9层的大楼,有一座最多容纳4个人的电梯,现在有n(2000)个人在不同的层排队,每个人有当前所在层及要到达的层,要求必须按顺序进入电梯(即使层数不同也如此),但是出电梯的顺序无所谓,电梯移动一层耗时1,一个人进或出耗时1,问如何安排电梯行程使得耗时最少,求最短耗时.

分析

2000个人,9层大楼,4人电梯,求最优值,数字都比较小,考虑dp.
预处理:一个人只会进出各一次,所以进出耗时可以不在过程中计算,最后答案直接加n*2
dp类型:此类题会出现极多的空状态,所以使用记忆化搜索的方式.
状态表示:dp[i][j]表示接到第i个人后,当前电梯内人的去向为j时到过程结束的最小耗时.
每个人的去向是一个0到9之内的整数,其中0表示没有这个人,4次组合起来就是j,即0到9999.
边界条件:dp[n][j]=search(from[n],j);
意思是现在在from[n]层,要将电梯内的人送到j[0],j[1],j[2],j[3]层中.
可以只看最高层和最低层up,down,即
min(|from[n]down|,|from[n]up|)+|updown| m i n ( | f r o m [ n ] − d o w n | , | f r o m [ n ] − u p | ) + | u p − d o w n |
然后从from[n]开始先到最高层再到最低层,或者先到最低层再到最高层,取一个较小值.
答案表示:ans=dp[1][to[1]]+from[1]+n*2,从接到第一个人开始dp
状态转移:注意电梯的层数,dp[i][j]转移到dp[i+1][j’]时,所用时间实际上是电梯层数从from[i]到j的某几个值,再到from[i+1]的时间.选择j中的值时,实际上可以只选上下界up,down,然后耗时为search(from[i],from[i+1],down,up),即
min(|fidown|+|fi+1up|,|fiup|+|fi+1down|)+updown m i n ( | f i − d o w n | + | f i + 1 − u p | , | f i − u p | + | f i + 1 − d o w n | ) + u p − d o w n

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值