河南省第十二届ACM省赛-D地铁1号线

2023-10-16 04:40

本文主要是介绍河南省第十二届ACM省赛-D地铁1号线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 看到省赛的原题已经上传至NYOJ了,准备重温一下

 

某市1号地铁线, 每天6:00 从始发站发出第一趟地铁,以后每隔 m 分钟发出下一趟,直到晚上22:00发出当日最后一趟地铁。

经过运行 X 年的数据分析发现,每趟地铁的车票收入与它的起发时间有一定关联。比如:6:00发出的地铁,由于坐车人数少,一趟下来车票收入为4.50千元;8:00发出的地铁,由于坐车人多,一趟下来车票收入为12.00千元。不同段时间内起发的地铁,车票收入满足不同的线性关系。

输入描述:

第一行: T表示以下有T组测试数据( 1≤ T ≤ 8 )
对每组数据,第1行有两个整数 m  n ,接下来有n行,每行两个数据,格式为:  hh:mm  x  分别表示发车时间和车票收入。其中:  10≤ m ≤ 60  1 ≤ n ≤ 100      0.00 ≤ x ≤ 100000.00

输出描述:

对每组测试数据,输出一个实数,1号地铁线一天的车票总收入。(精确到小数点后2位)

样例输入:

1
60  3
06:00  4.50
08:00  12.00
22:00  12.00

样例输出:

192.75

 

这题有个挖坑的地方就是6点和12点不一定是发车始终时间,发车始终时间需要从输入数据中获取,分别是最小和最大时间点。

关于收益,如果在输入的时间点上,那么收益就是对应的输入数据。对于不在时间点上的收益,可以采用斜率计算,比如样例中

06:00(4.50)到08:00(12.00)之间存在时间点7:00发车,转换成分钟就是420分发车,位于360与480分钟的区间,收益计算为

4.50+(420-360)*(12.00-4.50)/(480-360),这类似于给定两点求出一次函数,然后计算其中某点的函数值f(x)。

 

代码如下:

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
void slove(int step,int time){vector<int> vec;//保存时间点map<int,double> mp;//时间点和费用映射关系for(int i=0;i<time;i++){//输入int h,m;double mon;scanf("%d:%d",&h,&m);cin>>mon;vec.push_back(h*60+m);mp[h*60+m]=mon;}sort(vec.begin(),vec.end());//时间点排序double fee=0.0;//总收益int base=0;//时间所在区间标记for(int i=vec[0];i<=vec[time-1];i+=step){if(base<time-1){//标记判断if(i>vec[base+1]){base++;}}if(i==vec[base]){//位于标记头则费用增加fee+=mp[vec[base]];cout<<i<<endl;}else{double a=mp[vec[base+1]]-mp[vec[base]],b=vec[base+1]-vec[base],len=i-vec[base];//斜率算费用fee+=mp[vec[base]]+(a/b)*len;}}printf("%.2f\n",fee);
}
int main()
{int n;cin>>n;while(n--){int step,time;cin>>step>>time;slove(step,time);}return(0);
}

 tips:NYOJ这题的样例似乎是传错了,导致这题无法AC(但是算法可以保证是对的,因为比赛现场这题我通过了)

这篇关于河南省第十二届ACM省赛-D地铁1号线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219117

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

安科瑞ASJ漏电流继电器在轨道交通地铁车站配电系统中的应用

应用背景 城市轨道交通设备门类复杂、数量庞大、分布广泛,在长期连续运行时存在火灾隐患。在国内外的地铁火灾中,因电气原因引起的火灾占比最大,达到37%,其中供电线路的漏电流更是造成电气火灾的重要因素。消防部门、行业专家往往要求地铁车站设置电气火灾监控系统,但在地铁监控防范措施中,泄漏电流的监测并不完善,现有的泄漏电流监测系统存在误报现象,使得配电系统漏电保护 频繁跳闸。为此,查找频繁误报警原因,采

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

我们依旧在追梦的路上-山东省第六届ACM比赛总结

这场比赛从结果而言达到了预期(金牌),从过程而言和我的预期相差甚远(打的太乱,个人发挥很差),还好关键时刻队友抗住压力,负责后果真的不堪设想。 热身赛 热身赛纯粹测机器的,先把A,B,C草草水过(A题小写x打成大写的也是醉了),我和老高开始各种测机器,long long不出所料是lld的,试了一下除0和数组越界的re问题,发现没有re,只有wa(甚至数组越界还AC了),至于栈深的话也没过多追

ACM东北地区程序设计大赛

不得不说随着参赛级别的提高,题目真的是越来越难啊,不过队长真是给力啊,在我们三个共同努力之下拿下了地区赛三等奖,哈哈我们可是大一唯一一只获奖队,终于在这次比赛打败了田大神。。。大神是失手了,俺和他差距还是挺大的。。。队友陈彤马上要去服兵役了,他说这是我们送给他最好的离别礼物,希望那家伙在部队好好干,以后谁干揍我!!!东北地区赛结束后,今年已经估计没机会参加亚洲区比赛了,赶紧补高数和线数啊!!别挂了

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中

2014年ACM/ICPC亚洲区现场赛广州赛区总结

本来不想提这件事的,后来学姐找我谈心时提到这件事,我突然意识到在这件事情上我错了一次,明明答应的去参加这场比赛,最后临时决定不去......其实中间有很多很多原因 1:我和tyh,sxk临时不去主要是广州太远,我们身上money不够,呵呵。。。别笑我们,你以为我们是高富帅啊,去一趟广州消费要2个月的生活费,奖学金又没发,你让我找我妈要她辛辛苦苦挣来的工资吗?!从哈尔滨到广州单来回的火车票每个人就

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

第十五届蓝桥杯图形化省赛题目及解析

第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序,角色会说( )? A、29     B、31     C、33     D、35 正确答案:C 答案解析: 重复执行直到m>n不成立,即重复执行直到m<=n。所有当m小于或者 等于n时,循环结束。循环过程中变量m与变量n的变化如下表: 通过上述表格可知,循环到第五次循环结束。m的值为14,n的值为19

【UVa】10600 ACM Contest and Blackout 次小生成树

类型:次小生成树 题目大意: 为了举办ACM竞赛,市长决定给所有的n(3 <= n <= 100)所学校提供可靠的电力供应。当且仅当一个学校直接连到电站,或者连到另一个有可靠供应的学校时,才有可靠供应。现在给出在不同学校之间的布线成本,找出最便宜的两种连线方案。一个方案的成本等于其中所有学校之间连线的成本的总和。 题目分析: 次小生成树。 先求出最小生成树,然后枚举所有不在