上题目:

题目描述

丽江河边有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;
}

---------------------------------------------------分割线----------------------------------------------------好吧,如果实在不懂,上洛谷去看大佬题解吧。。。。。。

转载于:https://www.cnblogs.com/cytus/p/7605987.html

NOIP2011 D1 T2选择客栈相关推荐

  1. NOIP2011选择客栈[递推]

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

  2. Luogu P1311 选择客栈(前缀和)

    P1311 选择客栈 题意 题目描述 丽江河边有\(n\)家很有特色的客栈,客栈按照其位置顺序从\(1\)到\(n\)编号.每家客栈都按照某一种色调进行装饰(总共\(k\)种,用整数\(0\)~\(k ...

  3. 【NOIP2011TG】【OJ4366】【codevs1135】选择客栈

    选择客栈 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 丽江河边有 n ...

  4. Bailian4034 选择客栈【序列处理】

    4034:选择客栈 总时间限制: 1000ms 内存限制: 65535kB 描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种 ...

  5. NOIP 2015 D1 T2 信息传递

    趁着我还活在网上 多写点题解 * NOIP 2015 D1 T2 信息传递* 2996: [NOIP2015]信息传递 D1 T2 Time Limit: 1 Sec Memory Limit: 12 ...

  6. NOIP2011 选择客栈

    题目描述 Description 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从1 到n 编号.每家客栈都按照某一种色调进行装饰(总共k 种,用整数0 ~ k-1 表示),且每家客栈都设有一家 ...

  7. NOIP2011 选择客栈(洛谷P1311)

    题目描述: 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店 ...

  8. 洛谷P1311 选择客栈

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

  9. 洛谷——P1311 选择客栈

    https://www.luogu.org/problem/show?pid=1311 题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰 ...

最新文章

  1. python读取excel指定列-Python读取excel指定列生成指定sql脚本的方法
  2. 利用mybatis-generator自动生成代码
  3. EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
  4. 数学界最恐怖的存在,学过数学的人,一辈子都不会忘记!
  5. CentOS 7.4系统安装配置图解教程
  6. php 运行thinkphp,thinkPHP cli命令行运行PHP代码
  7. 每日算法系列【LeetCode 315】计算右侧小于当前元素的个数
  8. 【April Fools Day Contest 2014F】【愚人节脑洞 OEIS大法】000001 输出序列某一项
  9. QT自定义控件-经纬度输入框
  10. 1209 实验三同学评论
  11. 驭势领读 | 《让大象飞》:资本寒冬正好能让市场回归理性
  12. 开源免费的Mac剪切板管理工具-Maccy
  13. 嵌入式设备和固件中的自动漏洞检测(一):概览
  14. java_secret_dire宝典
  15. Linux:udev机制详解
  16. 华中科技大学计算机考研书籍,2020年华中科技大学计算机应用技术考研经验分享...
  17. 特斯拉与Uber达成协议,为Uber伦敦司机提供电动汽车
  18. Linux电脑安全管家
  19. 公路车sava和Java_入门之作 意外惊喜 SAVA追风5.0公路车 评测
  20. iptables、firewalld防火墙详解

热门文章

  1. sql左右连接的区别
  2. centos编译安装LNMP
  3. birt 报表设计(2)—介绍
  4. iOS设计模式 - 桥接
  5. 初试Node —— node.js的安装
  6. 虚拟化部署之Windows 7中远程管理Hyper-V
  7. python tableview 列宽_QTableView设置列宽
  8. python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
  9. 获取屏幕的宽高 android,Android获取屏幕宽高的方法
  10. 函数上下文this和参数列表arguments介绍