- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题是:有了高速公路,从杭州开车到任何其他城市都很容易。但由于汽车的油箱容量有限,我们必须时不时地在途中寻找加油站。不同的加油站可能给出不同的价格。您需要仔细设计最便宜的路线。
输入规范:每个输入文件包含一个测试用例。对于每种情况,第一行包含 4 个正数:C最大(≤100), jar 体最大容量; D(≤30000),杭州到目的城市的距离; D平均 (≤20),汽车每单位汽油可以行驶的平均距离; N (≤ 500),加油站总数。接下来是N行,每行包含一对非负数:P我 ,单位汽油价格,以及 D我 (≤D),该站到杭州的距离,i=1,⋯,N。一行中的所有数字均以空格分隔。
输出规范:对于每个测试用例,在一行中打印最便宜的价格,精确到小数点后两位。假设开始时水箱是空的。如果无法到达目的地,则打印最大行驶距离 = X,其中 X 是汽车可以行驶的最大可能距离,精确到小数点后两位。
示例输入 1:50 1300 12 86.00 12507.00 6007.00 1507.10 07.20 2007.50 4007.30 10006.85 300示例输出 1:749.17输入示例 2:50 1300 12 27.10 07.00 600示例输出 2:最大行驶距离=1200.00
我使用贪心算法来解决这个问题,首先加满油箱以到达最近且最便宜的车站,如果我们没有这样的车站,那么我们可能会到达目的地或在范围内找到更便宜的车站我们可以达到。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 500
typedef struct Station
{
int distance;
double price;
}Station_t;
int compare(const void *p1, const void *p2)
{
const Station_t *pleft = (Station_t *)p1;
const Station_t *pright = (Station_t *)p2;
return pleft->distance < pright->distance ? -1 : pleft->distance > pright->distance;
}
int main()
{
int capacity, totalDistance, davg, num, i;
double usedMoney = 0;
double usingC = 0;
scanf("%d %d %d %d", &capacity, &totalDistance, &davg, &num);
Station_t stas[N];
for(i = 0; i < num; ++i)
{
scanf("%lf %d", &stas[i].price, &stas[i].distance);
}
stas[num].distance = totalDistance;
stas[num].price = 0;
qsort(stas, num, sizeof(Station_t), compare);
if(stas[0].distance > 0)
{
printf("The maximum travel distance = 0.00");
return 0;
}
Station_t *cur = stas, *next = &stas[1];
while(cur != &stas[num - 1])
{
while(next->distance - cur->distance <= davg * capacity)
{
if(next->price < cur->price)
{
usedMoney += ((double)(next->distance - cur->distance - davg * usingC) / (double)davg) * cur->price;
cur = next;
if(cur == &stas[num - 1])
break;
++next;
}
else
{
if(next == &stas[num - 1])
break;
++next;
}
}
if(cur == &stas[num - 1])
break;
usedMoney += (capacity - usingC) * cur->price;
Station_t *temp = cur + 1, *fin = temp;
while(fin != next)
{
if(fin->price < temp->price)
temp = fin;
++fin;
}
usingC = capacity - (double)(temp->distance - cur->distance) / (double)davg;
cur = temp;
}
if(totalDistance - cur->distance <= davg * capacity)
{
usedMoney += (double)(totalDistance - cur->distance) / (double)davg * cur->price;
printf("%.2lf", usedMoney);
}
else
{
printf("The maximum travel distance = %.2f", (float)(cur->distance + davg * capacity));
}
return 0;
}
我无法完成名为“最后一个距离恰好是 D”的示例
最佳答案
您的比较函数有两个问题:
1) 由于参数为const
,您需要一个指向 const
的指针:
Station_t *pleft = (Station_t *)p1;
应该是
const Station_t *pleft = p1; // There is no need to cast
2) 不够返回a > b
返回值含义:
<0 The element pointed by p1 goes before the element pointed by p2
0 The element pointed by p1 is equivalent to the element pointed by p2
>0 The element pointed by p1 goes after the element pointed by p2
你想要:
return pleft->distance < pright->distance ? -1 : pleft->distance > pright->distance;
这样就返回-1
, 0
或1
取决于a < b
, a == b
或a > b
关于c - 2019-3 填还是不填(30分)我无法AC,因为我打不通 "last dist is exactly D",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57953140/
我想在数据中心选择一个事件分区。通常我会使用以下语句: INVANTIVE> use 1552839 2> Exclamation itgendhb077: Error in Invantive Da
我认为我的可能是 git 子模块的最简单用例。 我有一个目录结构 --- --- --- --- 每个子目录都是一个 git 存储库。我只想跟踪在我的 中添加的不同 git
我正在尝试循环数据框中的特定数字列,目标是使用“cor.test”函数提取相关性和 p 值。 相关性在于计算线性关系一个分类变量,由针对每个特定数字列的 0 和 1 值组成。 到目前为止,这是我的代码
当我使用 Invantive Data Hub 从多个 Exact Online 公司下载数据时,我得到了重复的行,而我希望每个公司只有一行。 我使用以下查询: select gla.code ,
我们刚刚上线 https://ecotaksen.be 。 Exact 上的查询和更新运行良好,但安装生产许可证后出现错误 itgenobr001:找不到客户端。。 我的数据容器规范是: 使用具有相
为了遵守法规,我尝试从我的一些部门下载采购发票文件(PDF 文件),将它们保存在磁盘上以供存档。 我使用 Invantive 查询工具来执行此操作。我想知道使用哪个表以及如何仅针对采购发票文档导出这些
我想获取“S-1”之后的链接,而不是“S-1/A”之后的链接。我尝试了“.find_all(lambda tag: tag.name == 'td' and tag.get()==['S-1'])”,
当我尝试通过 Google Colaboratory 中的 Earthengine 命令行上传 .tfrecord 和 .json 文件时,它显示“TfRecord 摄取 list 必须具有一个具有一
Closed. This question is off-topic 。它目前不接受答案。 想改善这个问题吗? Update the question 所以它是堆栈溢出的 on-topic。 10年前
这里给出了一个关于模板消歧器的问题: template disambiguator 在答案中我们可以读到: ISO C++03 14.2/4 When the name of a member tem
我想在考虑时间间隔的同时进行病例对照匹配。如果对照观察的自变量 X1、X2 和重叠时间间隔 X3 与一个案例具有相同的值,我想要一个匹配项。 例如,假设以下 df1: row Y X1 X2
我在这里有一个具有这种起始样式的 HTML 元素: transition: transform 2s; 首先是动画 (它旋转X)通过点击添加的类。下次单击时,将添加另一个类,该类添加了 transfo
我忘了,但是 EAGL 代表什么具体的东西吗?或者它只是核心动画 OpenGL 命名约定的一部分(CAEAGLLayer 等)? 最佳答案 “AGL”是苹果 OS X 的 OpenGL 扩展的名称。我
我们目前正在尝试优化复杂的 Angular 应用程序(性能和包大小)。 我们发现我们有部分未使用的组件,但我们不能 100% 确定它们。无论如何......我们目前要问的问题是,摇树在 Angular
我正在解决简单的优化问题。该数据集有 26 列和 3000 多行。 源代码看起来像 Means <- colMeans(Returns) Sigma <- cov(Returns) invSi
我让 Android Studio 将我的代码转换为 OnClickListener . 显然这里使用了 lambda。我不知道 lambda 是传递给 View 类的函数还是传递给 OnClickL
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
关于“转换”的可用(类似)问题并没有真正阐明这是什么或做什么(顺便说一下,刚开始进行 Android 编程)。人们在哪里以及如何注意到“类型转换”的效果? 有什么区别: Button b = (But
我需要创建一个列,其中可以存储“0.0 - 99.99”之间的值。为什么?由于这种情况: 我的数据库中有这个表: "CREATE TABLE dumps( id INT
我正在摸不着头脑,经过一天的互联网搜索,我决定问你这个问题。 我有一个包含 2 个字段 tag_id 和 tag 的表 TAG,我试图将 TAG 的记录与特定字符串完全匹配,但我无法完全匹配,只能部分
我是一名优秀的程序员,十分优秀!