P1016 旅行家的预算

旧时模样 提交于 2019-12-02 18:49:45

其实这道题昨天凌晨就写完了 但是因为昨天在等成绩 就没写 结果没想到等了一整天都没发 到现在还是没发 于是闲着没事干又不想写题 就来写写blog...

嗯...首先的话 这道题是道贪心题...这是废话 本来我就是想练贪心才做它的 然后说下解题思路 一开始想错了就不说了 说说对的那次 

首先呢,汽车每次停住的地方除了油站就是终点,不可能停在其他地方 而且要求花费最小 于是贪心思路就显而易见了:每此停住 先判断从自己的所在地到最大行驶距离(即C*D2)所能到达的位置,这个区间之内有多少油站 然后遍历这些油站,如果有油价比所在地小的油站,就直接买能到达该处的油 然后重复以上过程 若区间内没有比所在地油价小的地方 就加满油 然后到那个区间内油价最小的地方 然后重复以上过程

思路很简单 但需要注意的是:1.如果加满油 到下个油站之后油箱里会有剩余 下一次计算要加的油时要记得算上本来剩的这部分油

                                                2.此思路只针对油站 但没说终点 对于终点的判定方法 我的思路是把终点想象成第n+1个油站 它的油价为0 这样它的油价必定是区间内最小的

                                                3.对油站为0的情况要进行特判

还有就是 题目要求保留两位小数 本来是用int+0.5啥啥啥的那种办法做的 后来发现这种方法如果四舍五入之后最后一位是零 零不会写出来 后来问了q姐 q姐给窝安利了setprecision(n)这个函数 用法是cout<<setprecision(n)<<expend<<endl; n代表要保留几位数字 这里的n指的是整个数字的位数 包括小数点前和小数点后的 想要只限制小数点之后的位数的话 可以用cout<<fixed<<setprecision(n)<<expend<<endl;  这里的n代表的是小数点之后的位数

嗯...差不多就是这样啦

哦...还没来得及发 去刷了一下noi官网 结果没上 差了四分 嗯...结果就是这样 明年再战吧 本博客不定期更新 毕竟以后做题的机会就少了~

回去之后还有会考 先给自己会考加油~

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!