noip历年真题Y2011D1T2选择客栈

上题目:

题目描述

丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。

两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别住在色调相同的两家客栈中。晚上,他们打算选择一家咖啡店喝咖啡,要求咖啡店位于两人住的两家客栈之间(包括他们住的客栈),且咖啡店的最低消费不超过 p 。

他们想知道总共有多少种选择住宿的方案,保证晚上可以找到一家最低消费不超过 p元的咖啡店小聚。

输入输出格式

输入格式:

输入文件hotel.in,共n+1 行。

第一行三个整数n ,k ,p,每两个整数之间用一个空格隔开,分别表示客栈的个数,色调的数目和能接受的最低消费的最高值;

接下来的n 行,第 i+1 行两个整数,之间用一个空格隔开,分别表示 i 号客栈的装饰色调和i 号客栈的咖啡店的最低消费。

输出格式:

输出文件名为hotel.out 。

输出只有一行,一个整数,表示可选的住宿方案的总数。

输入输出样例

输入样例#1:

5 2 3
0 5
1 3
0 2
1 4
1 5

输出样例#1:

3

说明

【输入输出样例说明】

2 人要住同样色调的客栈,所有可选的住宿方案包括:住客栈①③,②④,②⑤,④⑤,但是若选择住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。

---------------------------------------------------------------------------分割线---------------------------------------------------------------------------------

刚看到这题,第一反应就是想能否动规,但是想了想没什么头绪,干脆想下能不能一边扫过去直接找出答案,恰巧网上有一位大佬有一种非常玄学的思路就是这么扫过去的,于是就知道怎么做了。首先用一个color数组记录每种颜色的客栈有多少个,然后开始扫,每扫到一个,sum数组的值就++,表示该颜色的客栈已经扫到了多少个;再判断,如果该客栈费用低于最大值,就每种颜色扫一边,ans加上前面的客栈乘后面的客栈,也就是sum数组*color数组(很简单的数学原理),如果正好是扫到的这个颜色,还要加上sum的值再-1(因为这个客栈本身也可以计入,-1这个不用解释吧,因为不能和本身重复);另外千万不能忘了,每次扫颜色之后都要吧sum清空,为什么?前面的客栈不能重复计算阿!好吧如果实在不懂,就自己画图,在结合下面的代码想吧

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define N 200002
using namespace std;
int n,m,p,num;
long long ans;
int color[51],sum[51];
struct Hotel{
int color,cost;
}hotel[N];//习惯用结构体
int main()
{
    scanf("%d%d%d",&n,&m,&p);
    for(int i=1;i<=n;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        hotel[i].color=x;
        hotel[i].cost=y;
        color[x]++;
    }
    for(int i=1;i<=n;i++)
    {
        sum[hotel[i].color]++;
        color[hotel[i].color]--;
        if(hotel[i].cost<=p)
        for(int j=0;j<=m;j++)
        {
            if(j==hotel[i].color)
            ans+=color[j]*sum[j]+sum[j]-1;
            else
            ans+=color[j]*sum[j];
            sum[j]=0;//千万别忘了清零
        }
    }
    printf("%lld\n",ans);
    return 0;
}

---------------------------------------------------分割线----------------------------------------------------好吧,如果实在不懂,上洛谷去看大佬题解吧。。。。。。
时间: 2024-10-05 22:28:01

noip历年真题Y2011D1T2选择客栈的相关文章

noip历年真题Y2012D2T2借教室

先上题目 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望编程解决这个问题. 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借.共有m份订单,每份订单用三个正整数描述,分别为dj,sj,tj,表示某租借者需要从第sj天到第tj天租借教室(包括第sj天和第tj天),每天需要租借dj个教室. 我们假定,租借者对教室的大小.地

软考之信息系统项目管理师(包含2005-2018历年真题详解+官方指定第三版教程+高清学习视频)

基本搜集整理了全网所有的信息系统项目管理师资料,建议不要各位再浪费时间去各个网站下载找寻了,时间宝贵!!!全网独此一家,不要倒卖,收集不易!!!!谢谢!!!! 持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实的资料!!! 全网最全,独此一家,货真价实,我整理了几天,才整理完,部分真题和教程网上没免费的,是我掏钱买的,费心整理,希望各位同学顺利通过考试!!! 软考之信息系统项目管理师的资料,由于资料太大,分成了三个部分,各位可以根据自己的需要进行下载,如果条件允许,建议各位到专业的培

蓝桥杯——历年真题之带分数

问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0). 类似这样的带分数,100 有 11 种表示法. 输入格式 从标准输入读入一个正整数N (N<1000*1000) 输出格式 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数. 注意:不要求输出每个表示,只统计有多少表示法! 样例输入1 100 样例输出1 11 样例输入

华为历年真题(数组题6)

对一个数组,将数组中偶数从大到小排序,奇数从小到大排序, 奇数和偶数交叉着放且输出数组第一位放奇数,若奇数和偶数不等长,则把剩下的直接放到数组中. #include<iostream> #include<vector> #include<algorithm> using namespace std; bool cmp(int &a,int &b) { return (a>b); } void changnum(int *input,int n,in

(最新)2017年下半年软考各科历年真题及答案解析

[徐朋出品,必属精品]作为51CTO学院的软考特级讲师,本着对广大学员负责的态度,在每年同学们参加完软考考试,我都会尽早的给大家发布各科的真题详细解析资料.一方面是为了帮助参加软考考试的同学对自己考试情况做一个准确评估:另一方面是为未来参加软考考试的学员展现软考最新的考题形式,考察要点,助其有重点的复习软考考试. 历时多载,是同学们的坚定支持,才使我更加坚定,勇往直前,做更好的课程回馈大家. 现将最新的软考各科资料整理如下,同学们可以自行下载学习,学习过程中有疑问,也可给我留言. [持续更新,未

2019年二级建造师《水利电力工程》教材哪里有? _ 二级建造师水利电力工程材料+历年真题

根据2018年二级建造师考试已过,接下来就是2019年二级建造师的考试预习考试的时间了,虽然留给我们的时间已经不足与四个月,但是在这短短的几个月我们可以提前预习2019年二级建造师的相关教材,下面"题名考试网"小编就给大家说说水利电力工程大概预习! 二级建造<水利电力工程>预测材料: >>>>>二级建造师考试成绩查询<<<<< <水利电力工程>分为一下考试三点: 一.水利电力工程技术: 水利电力技术主要

软考之系统集成项目管理工程师(包含2009-2018历年真题详解+第二版考试辅导教程+官方指定最新版教程)

软考之系统集成项目管理工程师(包含2009-2018历年真题以及答案详解.系统集成项目管理工程师教程第2版-清华大学出版社-高清PDF,官方指定用书),持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实的资料!!! 全网最全,独此一家,货真价实,部分真题和教程网上没免费的,是我掏钱买的,费心整理,希望各位同学顺利通过考试!!! 下载地址:百度网盘,https://pan.baidu.com/s/15Twr0i9eVbMC9_VbwzWKRQ 原文地址:https://www.cnbl

软考之高级系统架构设计师(包含2009-2018历年真题详解+课本教程+论文范文+视频教程)

软考-高级系统架构设计师2009-2018历年考试真题以及详细答案(试题和答案分离的哦),同时含有课本教程.系统架构设计师视频教程.系统架构设计师论文范文.持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实的资料!!!! 全网最全,独此一家,费心整理,希望各位同学顺利通过考试!!! 高级系统架构师历年真题以及答案解析.希赛第四版教程.最新清华版官方指定教程.论文范文等资源下载地址: 百度网盘: https://pan.baidu.com/s/1LDTJgGkuuNPKZ6K8eEzV

软考之高级系统分析师(包含历年真题详解+课本教程+论文范文+视频教程)

软考-高级系统分析师2009-2018历年考试真题以及详细答案(试题和答案分离的哦),同时含有课本教程. 分析师视频教程.持续更新后续年份的资料.请点赞!!请点赞!!!绝对全部货真价实的资料!!!! 全网最全,独此一家,费心整理,希望各位同学顺利通过考试!!! 高级分析师历年真题以及答案解析.最新清华版官方指定教程等资源下载地址:请加群联系群主获取 原文地址:https://www.cnblogs.com/shiyh/p/12123603.html