1033 . To Fill or Not to Fill (25) (想明白了没写出来,参考吧)

[DDR5]DDR5 SDRAM 状态图 和 基本功能 DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。 阅读详情

http://blog.youkuaiyun.com/lv_zj/article/details/16115569

 

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

class CA
{
public:
 class cstation
 {
 public:
  int point,addlen;
  double price;
  cstation(){point=0;addlen=0;price=0;}
  bool operator < (const cstation& st)const
  {
   return point<st.point;
  }
 };
 void run();
 int c,d,avg,n;
 vector<cstation> vst;
};

void CA::run()
{
 cin>>c>>d>>avg>>n;
 cstation st;
 while(n-->0)
 {
  cin>>st.price>>st.point;
  vst.push_back(st);
 }
 sort(vst.begin(),vst.end());
 int taglen=c*avg;
 int i,j,lastlevlen=0,lastpoint=0;
 vector<int> curlist;
 bool gotto=false;
 for(i=0;i<vst.size();i++)
 {
  if(vst[i].point-lastpoint>lastlevlen) break;
  lastlevlen-=vst[i].point-lastpoint;
  int k=i;
  for(j=i+1;j<vst.size();j++) //find first sheapest station
  {
   if(vst[j].point-vst[i].point<=taglen)
   {
    if(vst[j].price<vst[k].price) {k=j;break;}
   }
   else break;
  }
  if(k==i) vst[i].addlen=taglen-lastlevlen; //current station is sheapest ,fill tank
  else vst[i].addlen=(vst[k].point-vst[i].point-lastlevlen)>0?(vst[k].point-vst[i].point-lastlevlen):0; //rearch the lastest cheaper station
  lastpoint=vst[i].point;
  lastlevlen+=vst[i].addlen;
  if(vst[i].point+lastlevlen>=d)
  {
   vst[i].addlen-=vst[i].point+lastlevlen-d;
   gotto=true;
   break;
  }
 }
 if(gotto)
 {
  double allprice=0;
  for(i=0;i<vst.size();i++)
  {
   allprice+=vst[i].addlen*vst[i].price/avg;
  }
  printf("%.2f",allprice);
 }
 else
 {
  printf("The maximum travel distance = %.2f",double(lastpoint+lastlevlen));
 }
}

 

int main()
{
// freopen("test.in","r",stdin);
 CA *a=new CA;
 a->run();
 return 0;
}

 

我自己的程序

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

class CA
{
public:
 enum{CMAX=100,DIS=30000,DAVG=20,N=501};
 void run();
 void find(int id);
public:
 int n;
 double c,d,davg;
 int custid;
 double needgas,cugas,totalprice;
 struct station
 {
  double gasprice;
  int distance;
  bool operator < (const station& a) const
  {
   return distance<a.distance;
  }
 };
 vector<station> st;
};

void CA::find(int id)
{
 if(id==n)
 {
  printf("%0.2f",totalprice);
  return;
 }
 if(st[id+1].distance-st[id].distance>c*davg)
 {
  printf("The maximum travel distance = %.2f",(st[id].distance+c*davg));
  return;
 }
 int i,tmpid,tmpidcu;
 double tt=st[id+1].gasprice;
 double ttcu=st[id].gasprice;
 tmpidcu=id;
 tmpid=id+1;
 /*int k=n;
 for(i=id;i<=n;i++)
 {
  if(st[i].distance>c*davg+st[id].distance)
  {
   k=i;
   break;
  }
 }*/
 for(i=id+1;i<=n;i++)//cmax内有
 {
  if(st[i].distance>c*davg+st[id].distance)
   break;
  if(st[id].gasprice<tt)
  {
   tt=st[i].gasprice;
   tmpid=i;
  }

 }
 int flag=-1;
 for(i=1;(st[id+i].distance-st[id].distance)<cugas*davg;i++)//cugas内,有
 {
  if(st[id+i].gasprice<ttcu)
  {
   ttcu=st[id+i].gasprice;
   tmpidcu=id+i;
   flag=1;
  }
 }
 int idzuijin;
 double tmpidzuijin;
 for(i=1;i<=n;i++)
 {
  if(st[id].gasprice>st[i].gasprice)
  {
   idzuijin=i;
   tmpidzuijin=st[id].gasprice;
   break;
  }
 }
 if(flag==1&&st[id].gasprice>tt)
 {
  printf("1\n");
  cugas=cugas-(st[tmpidcu].distance-st[id].distance)/davg;
  id=tmpidcu;
  find(id);
 }
 else if(flag==-1&&st[id].gasprice>tt)
 {
  printf("2\n");
  totalprice+=((st[tmpidzuijin].distance-st[id].distance)/davg-cugas)*st[id].gasprice;
  cugas=0;
  id=tmpidzuijin;
  find(id);
 }
 else
 {
  printf("3\n");
  cugas=c;
  totalprice+=(c-cugas)*davg;
  id=tmpid;
  find(id);
 }
}

void CA::run()
{
 double v1;
 int i,v2;
 cin>>c>>d>>davg>>n;
 
 for(i=0;i<n;i++)
 {
  station tmpst;
  cin>>v1>>v2;
  tmpst.gasprice=v1;tmpst.distance=v2;
  st.push_back(tmpst);
 }
 station tmpst;
 tmpst.gasprice=0;tmpst.distance=d;
 st.push_back(tmpst);
 sort(st.begin(),st.end());
 for(i=0;i<=n;i++)
 {
  printf("%.2f  %d\n",st[i].gasprice,st[i].distance);
 }
 cugas=0;
 totalprice=0;
 find(0);
}

int main()
{
 freopen("test.txt","r",stdin);
 CA *a=new CA;
 a->run();
 return 0;
}

 

 

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【最大化游戏试玩资格分发】 新研发了一台游戏设备可以面向用户接受试玩。现有 n 个试玩申请,每个试玩有开始时间和结束时间。作为协调员,为了能让更多人体验到游戏,你需要对试玩申请进行选择,使得: 阅读详情

相关推荐

阿里云搭建vps服务器的过程

最近突发奇想想要搭建一个阿里云的的vps服务器,下面是搭建的过程: 首先,登录阿里云网站: 搜索,esc控制台: 点击创建实例: 选择地区: 选择实例规格: 选择镜像: 将存储规格改成100G(40G可能不够用) 点击下一步: 这里面不需要更改,点击下一步 设置连接密码即可 创建成功后点击启动 点击远程连接,然后立即登录,在弹出的框里面输入之前设置的密码即可 登录成功:

zhanchulan的博客 3374

【PAT(甲级)】1033 To Fill or Not to Fill(详细的解题思路)

【PAT(甲级)】1033 To Fill or Not to Fill(详细的解题思路) 题目给出油箱容量(C),目的地距离(D),平均每升汽油可以行驶的里程数(D_avg),加油站数量(N),然后还有每个加油站距离杭州的距离和油价。要求我们给出到达目的地时,怎么样加油最省钱(一开始的车是没有油的),如果到不了目的地,那么最远能开到哪里。 1. 自定义一个结构来存储加油站信息,将加油站由近到远排序。如果最近的加油站距离杭州不是0,那么直接输出。因为车一开始是没有油的,加油站在出生点没有的话,就没办法开。

weixin_55202895的博客 2113

Qt + Robot Interface实现上位机和发那科机器人通信

摘要: 本文详细介绍了FANUC机器人的RobotInterface模块开发流程,包括环境配置、通信连接和上位机开发等内容,并提供了数值寄存器、位置寄存器和当前位置的读写代码等示例。适用于自动化行业有通讯需求的上位机开发人员,保姆教程,超详细版,新手也可以根据示例开发自己的通信程序。

xyhkma的博客 1750

PAT 1033. To Fill or Not to Fill (贪心)

PAT-A的最后一题,终于做出来了...  是贪心,通过局部最优获得全局最优。 1.

Stephen Wong的专栏 2284

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

问题 C: To Fill or Not to Fill

题目链接 #pragma warning(disable:4996); //1.在油箱加满后到达另一个加油站,要考虑油箱剩余油量。即每次油箱加满之后,到达下一加油站的实际剩余油量为cmax - (station[min].distance - station[now].distance)/avg //2.在计算加满花费时,也要考虑油箱剩余油量。这部分是不算的,之前直接用cmax * station[now].price,最后的价钱变多。 /*这里首先将各加油站按照距离进行排序,如果没有距离为0的加油站,则直

Roxannekkk的博客 345

PCL1.12.1+VTK9.1+Qt5.14.2实战:解决QVTKOpenGLNativeWidget点云渲染窗口初始化报错问题

本文针对PCL1.12.1、VTK9.1与Qt5.14.2集成开发中,QVTKOpenGLNativeWidget点云渲染窗口初始化时出现的报错与黑屏问题,提供了深度分析与两种实战解决方案。核心在于理解VTK版本升级导致的渲染窗口类型不匹配,并指导开发者通过显式创建vtkGenericOpenGLRenderWindow或利用窗口ID嵌入,正确初始化并绑定可视化组件,从而稳定实现点云渲染。

weixin_29284657的博客 221

pat 1033 To Fill or Not to Fill(值得重点回顾)

有点难度的贪心题,贪心策略有点绕,得静下心来分析,同时得增强自己的代码能力。实质是汽车加油问题。 贪心策略:假设现在自己处于A站,要考虑的是A站要不要加油,加多少油的问题。找到下一个要加油的站B(距离A站cmax*davg范围内的最便宜的站)。 1. A站油价比B价高,现在油箱里还有油,能跑到B站,那就不加油,直接跑去(这里B站跟2,3情况不同,是距离A站currGas*davg范围内的最便宜

Matrix54: My Blog 2568

别再自己造轮子了!用MONAI Model Zoo里的预训练模型,5分钟搞定医学影像AI项目

本文介绍了如何利用MONAI Model Zoo中的预训练模型快速搭建医学影像AI项目,大幅节省开发时间和计算资源。通过实战案例展示了UNet、DenseNet121等核心模型的应用技巧,帮助临床医生和研究者5分钟内启动高质量医学影像分析,特别适合小样本场景下的病灶分割和分类任务。

weixin_33704234的博客 240

python爬取《你好, 李焕英》豆瓣评论数据

# 导入工具包 import requests from bs4 import BeautifulSoup import time import pandas as pd import numpy as np # 请求头 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'} # =

python技巧分享 3457

(PAT甲级)1033 To Fill or Not to Fill

(PAT甲级)1033 To Fill or Not to Fill

weixin_52151020的博客 229

SAP录入总账凭证报错 公司代码未被分配给国家或用于计算程序的国家消息号 FF703

SAP系统报错FF703的解决方案:当公司代码未分配国家或未配置计税程序时,会导致增值税计算失败。处理方法:1)通过OX02检查公司代码国家字段;2)使用OBBG为国家分配计税程序(如TAXCN)。配置步骤:1)SPRO分配公司代码到国家;2)OBBG设置国家对应的计税程序。注意事项:历史数据需清理才能修改国家字段,不同账簿可配置不同计税程序。完成配置后即可正常处理含税凭证。

金牌架构师 557

PAT-A-1033 To Fill or Not to Fill (25 分)贪心算法 C++题解

1033 To Fill or Not to Fill (25 分) 题目传送门:1033 To Fill or Not to Fill (25 分) 一、题目大意 求从杭州站到目的站的最小油费。 杭州站与目的站之间有很多个加油站,每个加油站的油价不同。如果无法到达输出最大行驶距离,否则输出到达目的站的最小油费。 二、解题思路 这道题很明显是贪心算法,但是具体怎么求下一站点,还挺复杂的。 注意:题...

爱玲姐姐的博客 996

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

1033. To Fill or Not to Fill

1033. To Fill or Not to Fill (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ZHANG, Guochuan With highways available, driv

ScorpioN___的博客 369

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PAT(Advancedlevel) 1033 To Fill or Not to Fill (25分)

1033 To Fill or Not to Fill (25分) With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the w...

JasonRaySHD的博客 362

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

A1033 To Fill or Not to Fill (25 分)

题目对我确实是道难题,自己想的时候,一直没有想出合理的思路 看了答案也是理解了一会儿才明白 首先是判断0的时候是否存在,进行特判; 然后,计算满油量最大行程。在这里又分成了两点,当范围内的点有小于当前油价和没有的情况; case1:存在小于,这里的做法感觉还是很巧妙的,因为只要到达第一个小于当前的即可,所以加一个if,当小于的时候直接break出来,接着只要加油使得当前油量能走到下一个目标点即可(...

A_Aria的博客 195

PAT-A 1033. To Fill or Not to Fill (25)

贪心解决加油站加油策略问题

Tomorrow Never Knows 623

PAT(Advanced) 1033. To Fill or Not to Fill 典型贪心算法

1033. To Fill or Not to Fill (25) With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the w...

qq_38399914的博客 215

1033 To Fill or Not to Fill (25 分) 贪心算法

首先讲一下思路。 这道题是一个贪心算法的题,大体方法就是0.寻找比自己距离远的,到能够到达的最大距离之间的加油站,看他们的油价。如果找到了更低价格的油价,就加油到刚好能到达那个加油站的距离的油,然后去那个更低价格的加油站。如果找不到更低的,就找尽可能低的油价的加油站,在当前加油站加满油之后过去。因为想要让路程上使用的尽可能是低价的油,既然没有比当前更低价格的了,就让油箱加到最大值,这样能保证利益最大化,保证最大的距离使用的是便宜的油。 但有几个要注意的地方。 第一个是终点的处理。基本所有的解答都是将终点当作

qq_43789349的博客 334

1033 To Fill or Not to Fill (25分)

With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are asked to car

白小飞 217

【PAT甲级 - C++题解】1033 To Fill or Not to Fill

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 711

【PAT 1033】To Fill or Not to Fill

题目地址:http://www.patest.cn/contests/pat-a-practise/1033 所用算法:贪心算法 分析: 1. 既然油箱初始为空,那么想要最便宜的方案,到终点的时候,油箱也必须为空。 2. 每个地点的加油策略: 设当前所在位置为 A,则开始寻找下一个加油位置,设为 B,将输入的加油站的位置按照距离的远近进行排序,每次遍历一个加油站。一次性跑的最远的距离为

tianshilei1992的专栏 1536

PAT (Advanced Level) Practice 1033 To Fill or Not to Fill题解

PAT甲级1033是一道复杂的贪心问题,写篇题解记录一下解题过程。

qq_53089846的博客 506

1033. To Fill or Not to Fill (25)-PAT甲级真题

将终点视作price为0的加油站,设加满邮箱能行驶的最大行驶范围为maxdis,对于当前位置,距离maxdis内(含)的加油站中,若有price比当前小的,选择加油到刚好撑到那个加油站;若没有price比当前小的,则目前加满油,走到price最小的加油站。若最大行驶范围内没有一个加油站,则不可能到达。

m0_61868996的博客 277

【PAT A1033】To Fill or Not to Fill (C++) 贪心,思路清晰易懂

代码里有一个小trick,就是将终点站也看做一个加油站,收费为0,距离为distance(参考了柳神的思路)。另外,为了方便管理变量,代码组织上加入了面向对象的思想,把汽车有关的变量放到了结构体 drive_state 中。ps:一位室友用递归的方法A掉了这道题,大家有兴趣可以try一try递归的解法。如果当前就是最便宜的,则加满油,去找能开到的区间内的最便宜的油站,开到那里。每次找比当前更便宜的第一个加油站,如果找到了,就适度加油,刚好开到那里;

m0_51563416的博客 351
上一篇: 1032 1032. Sharing (25)(自己写的超时了,参考的方法好。用标记来看是否已经检查过这个点)
下一篇: 1034. Head of a Gang (30) (我自己写的程序前后可能出现不合并的情况,参考程序好,简单实用)
河马在奋斗
博客等级 码龄15年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值