酒店价格【实际考试的trick】
题目描述
1.相邻两天的价格如果相同,那么这两个日期段应该合并
2.合并的结果应该以起始日期从小到大排序
输入描述:
输入数据包括多行,如样例输入所示。
输出描述:
输出数据为一行,如样例输出所示
输入
1 1 100 2 3 100 4 5 110
输出
[1, 3, 100],[4, 5, 110]
最优的思路当然是放到TreeMap中去,但是很难bug free,调试了半天也找不到错误,自己人为设计test case也没有找到bug
package niuke;import java.util.Scanner;
import java.util.Stack;
import java.util.TreeMap;
import java.util.Map.Entry;/** 不知道Bug在哪*/
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);TreeMap<Integer, int[]> maps = new TreeMap<Integer, int[]>();while(sc.hasNextInt()) {int s=sc.nextInt(), t=sc.nextInt(), m = sc.nextInt();if(maps.isEmpty()) {maps.put(s, new int[]{t,m});continue;}Integer ss = maps.floorKey(s);if(ss==null) ss=maps.firstKey();while(true) {if(ss==null || ss>t) break;int[] v = maps.get(ss);if(ss>=s&&ss<=t) {maps.remove(ss);if(t>=ss&&t<v[0]) {maps.put(t+1, v);break;}} else if(s>=ss&&s<=v[0]) {maps.remove(ss);if(s>ss) maps.put(ss, new int[]{s-1,v[1]});if(t<v[0]) {maps.put(t+1, v);break;}} else {break;}ss = maps.higherKey(v[0]);}maps.put(s, new int[]{t,m});}Stack<int[]> st = new Stack<int[]>();while(!maps.isEmpty()) {Entry<Integer, int[]> t = maps.pollFirstEntry();if(!st.isEmpty() && st.peek()[1]+1==t.getKey() && st.peek()[2]==t.getValue()[1]) {int[] tt = st.pop();st.push(new int[]{tt[0], t.getValue()[0], t.getValue()[1]});} else {st.push(new int[]{t.getKey(), t.getValue()[0], t.getValue()[1]});}}StringBuilder sb = new StringBuilder();while(!st.isEmpty()) {int[] t = st.pop();sb.insert(0, ",["+t[0]+", "+t[1]+", "+t[2]+"]");}System.out.println(sb.toString().substring(1));}
}
在实际考试中,写这个TreeMap肯定需要的时间比较多,而且肯定不能这样花大把的时间调试,一个办法是:
先试一下Brute Force,TLE了再先做其他的题目,有时间再来debug这个题
import sys
inputs, ma = [], -1
for s in sys.stdin.readlines():l = list(map(int, s.split(' ')))inputs.append(l)ma = max(ma, max(l))
a = [-1]*(ma+1)
for l in inputs:for i in range(l[0], l[1]+1):a[i]=l[2]res, s, t = [], 1, 1
while True:while s<=ma and a[s]==-1: s+=1if s>ma: breakt = swhile(t<=ma and a[t]==a[s]): t+=1res.append('[%d, %d, %d]'%(s,t-1,a[s]))s = t
print(','.join(res))
酒店价格【实际考试的trick】相关推荐
- matlab销量预测的数学模型,数学建模:酒店最优化问题.用matlab算出《酒店价格预测模型》...
数学建模:酒店最优化问题.用matlab算出<酒店价格预测模型> 39人已浏览 时间 : 2020-10-22 08:23:25 导语:酒店客房管理的数据库模型1.表(客房号,楼,客房类型 ...
- 7月更新 携程酒店价格房价爬取
5月,携程的反爬升级,新增加了加密参数 视屏地址:https://v.youku.com/v_show/id_XNDE3MzMxMjcxNg== 目前js代码已经扒出来了,可实现脱机操作,稳定的解密e ...
- 北京高端酒店价格影响分析
北京高档酒店价格影响因素分析 1.数据读取与清洗 # 导入所需模块 import pandas as pd import numpy as np# 读入数据 data = pd.read_csv('C ...
- 南昌较高端酒店价格影响因素浅析(一)
写在前面:有关北上广深的酒店价格数据分析已经看到过很多,缺鲜有看到过南昌市酒店价格影响因素分析的,遂尝试简单分析南昌市较高端价格影响因素.若读者发现其中有误,劳请指出,定虚心接受. 一.背景:案例以南 ...
- 互联网晚报 | 淄博政府回应经济酒店价格上千;多家银行向员工追薪;特斯拉上海储能超级工厂开始招聘...
淄博政府回应经济酒店价格上千 日前,有网友发布了一张淄博某经济型酒店无窗大床房一晚预订需1000多元的图片引发部分讨论.4月14日,该酒店工作人员告诉红星新闻记者,酒店普通房型的预订价格多在100元左 ...
- 酒店价格、集合、文件名称
/** * 题目描述 酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] * merge(int[][] * d ...
- 数据分析实战-酒店价格因素分析-Python
数据集和源代码放在资源里了 数据集和源代码 导入所需要的包 import numpy as np import pandas as pd import seaborn as sns import ma ...
- 根据周次显示日期范围_Elasticsearch根据日期价格范围搜索酒店且排序
Elasticsearch的相关文章: Elasticsearch读书笔记(一) Docker版Elasticsearch的安装配置 基于SpringBoot.Elasticsearch酒店搜索 El ...
- Web网页自动化实战《4.获取所有酒店的名字、价格、评分信息,并写入文件》上篇...
目录 一.find_elements()的作用 1.获取当前页面中所有酒店名称的元素 2.获取当前页面中所有酒店价格的元素 3.获取当前页面中所有酒店评分的元素 二.分别拿到每家的价格.评分.酒店名并 ...
最新文章
- iptables 实现地址转换与安全控制
- 【五校联考6day2】er
- Oracle 基础 —SQL语句优化的途径
- XP下安装SQL2000企业版
- 优必选能开放软硬件源代码吗_四个项目供父母教孩子如何使用开放式硬件和电子产品...
- 通过Windows远程桌面连接将远程文件传输至本地
- 水性油墨在纺织品印花中的应用
- 目前大多数个人计算机中可配置,2018年自考《计算机组成原理》试题五
- [Swift]添加暂无数据和暂无网络缺省页
- 压力换算公斤单位换算_压力表单位换算
- STM32-ADC模数转换
- Java学习笔记——判断一个数是否是质数
- 叶卡捷琳娜与狄德罗的故事
- python中清除文件内容用什么函数_数据清洗的基本流程_怎样清除excel中的公式
- Python3获取拉勾网招聘信息的方法实例
- SAP中采购合同与计划协议价格关联进阶测试
- 技能二:数据库(MySQL)·【22江苏转本笔记】
- linux操作系统读写文件操作(c语言)
- Python支付宝账单 流水号交易记录实时监控爬虫
- vue路由守卫中next方法的理解