问题描述
丽江河边有n家独具特色的客栈,按照位置从1到n编号。每家客栈装饰有k种不同的色调(用整数0 ~ k-1表示),并且每家客栈都设有一家咖啡店,每个咖啡店都有各自的最低消费。两位游客喜欢相同的色调,并计划分别住在两家色调相同的客栈中。他们打算在晚上选择一家位于两家客栈之间(包括住的客栈)的咖啡店喝咖啡,要求咖啡店的最低消费不超过p元。他们想知道总共有多少种选择住宿的方案,确保晚上可以找到一家最低消费不超过p元的咖啡店。
输入格式
输入文件共包含n+1行。
第一行包含三个整数n, k, p,每两个整数之间用一个空格隔开,分别表示客栈的数量、色调的数量和能接受的最低消费的最高值。
接下来的n行,第i+1行包含两个整数,表示第i号客栈的装饰色调和该客栈咖啡店的最低消费。
输出格式
输出仅一行,包含一个整数,表示可选的住宿方案的总数。
样例输入
5 2 3
0 5
1 3
0 2
1 4
1 5
样例输出
3
提示
【样例说明】
客栈编号:① ② ③ ④ ⑤
色调:0 1 0 1 1
最低消费:5 3 2 4 5
两人要住同样色调的客栈,所有可选的住宿方案包括:住客栈①③,②④,②⑤,④⑤,但若选择住4、5号客栈,则4、5号客栈之间的咖啡店最低消费为4元,而两人能承受的最低消费是3元,所以不满足要求。因此只有前3种方案可选。
数据范围:
对于30%的数据,n ≤ 100;
对于50%的数据,n ≤ 1,000;
对于100%的数据,2 ≤ n ≤ 200,000,0 ≤ k ≤ 50,0 ≤ p ≤ 100,0 ≤ 最低消费 ≤ 100。
解题思路
一种较为直观的算法是使用线段树查询区间最值,但这会导致较高的时间复杂度。我们寻求更高效的解法。
对于每个客栈i,如果它前面有与其同色的客栈j,我们可以从离i最近的第一个开始往远处找,只要某一个满足到i之间花费的最小值小于要求值,则往远处延伸的都满足条件。
因此,我们记录与i同色的上一个点位置pos和花费小于要求值点离i最近的点last。如果pos <= last,则i可以和前面搭配的数量ans_i = cnt[col_i],否则ans_i = ans_pos。
以下是实现代码:
#include
#include
-
本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!----- ... [详细]本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]Tags | 热门标签RankList | 热门文章
- 1深入理解 Boost Program Options
- 2Vue.js@2.6.10更新内置毛病处机制,Fundebug同步支撑响应毛病监控
- 3Python 装饰器与装饰类详解
- 4Codeforces 580C:Kefa与公园的路径选择问题
- 5集群与负载均衡技术解析
- 6深入理解Java反射机制
- 7Java多线程入门(狂神说)
- 8pip安装报错:'ascii'码不能解码,安装路径有中文
- 9深入浅出:Hadoop架构详解
- 10轻松实现快应用摘要值提取
- 11周末分享时间:那些让你哭笑不得的尴尬瞬间
- 12TP5中HTML内容解码并显示在页面上的方法
- 13Excel VBA 编程基础
- 14Three.js 场景显示模糊的原因及解决方法
- 15解决 Pytest 运行时出现 FileNotFoundError 的方法