文章

11

粉丝

410

获赞

19

访问

112.4k

头像
太难了,摸索了一下午算是折腾出答案来。(不完善)
P1347 浙江大学机试题
发布于2020年6月11日 17:26
阅读数 10.6k

先占个坑,后面有想法了再来改进。(对我而言,难点就在于,在当前的加油站点下,怎么查找,并判断剩下的站点,然后进行选择。   总体思路就是。分情况在油箱满能到达的范围,寻找,1,在第一次找到比当前油价抵得时候,跳出,去到此点,更新当前站点指针,  2,没有比当前低,则找寻相对最低的。后面就是循环,           

之前曾陷入误区,认为起始点加油站和后面不一样,其实是是一样的。举个例子,假设,我从起点1号加油站出发,在油箱满油范围内找不到比当前更低油价加油站,则需要加满油,那么到达2号站点后,虽然有油。则不足以到达剩下任一站点。因为如果能得话。2号站点就不是当前的所在2号了。这个是关键。   这样就解决了。后面只有更新油箱和油费即可,同时记录行驶里程。)

这是我的笔记

https://blog.csdn.net/weixin_43298629/article/details/106693925

 

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef struct node{
  4. int Di;//距离
  5. double pi;//单价
  6. }node;
  7. node p[100];
  8. bool cmp(node a,node b)
  9. {
  10. return a.Di<b.Di;
  11. }
  12. int main()
  13. {
  14. int C,D,N;//C油箱,D总距离,Dv每升油距离,N个数
  15. double Dv;
  16. while(cin>>C>>D>>Dv>>N)
  17. { p[N].pi=0;
  18. p[N].Di=D;
  19. double you=0.0,mon=0.0;
  20. for(int i=0;i<N;i++)
  21. {
  22. cin>>p[i].pi>>p[i].Di;
  23. }
  24. sort(p,p+N+1,cmp);
  25. int...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发