【五一qbxt】day7-2 选择客栈
停更20天祭qwq(因为去准备推荐生考试了一直在自习qwq)


这道题的前置知识是DP,可以参考=>【五一qbxt】day3 动态规划 鬼知道我写的是什么emm
这道题真的做了超级久了,大约从五六号的开始做吧,推荐生考试一直耽搁了qwq
鹅且——我wa了好多好多次qwq,也真是令人质壁分离了。
一个O(n)的动态规划的思路:
准备好多好多不同的数组:
- pre[i] 表示位置 i 之前 (包括位置 i) 最大的满足最低消费的咖啡店位置
- pos[j] 表示第 j 种颜色客栈目前出现的最大的位置
- tot[j] 表示第 j 种颜色客栈目前出现的总个数
- res[i] 表示位置 i 作为右端点能组成多少组配对
可能有点抽象,so:

现在已经知道一组并不毒瘤的良心数据:
5 2 3
0 5
1 3
0 2
1 4
1 5(其实就是洛谷的样例)
辣么:

这样大概可能应该会好理解一点吧qwq。
前面的pos与tot都是记录的当前值,因此很显然我们要一边处理一边DP:
首先输入一组color与money
判断新输入的这个客栈是否满足最低消费的需要,如果满足,pre[i]=i;否则显然pre[i]的值与上一个客栈的pre相同emm

注意:处理完pre后要接着去处理res,处理的顺序应为:pre=>res=>tot&pos;
处理res:(转移方程)
把选择每种颜色的客栈都枚举一下:

判断当前客栈与前一个颜色相同的客栈之间是否有满足最低消费的另一客栈,如果没有,前一个颜色相同的客栈的组合数就等于当前客栈的组合数。
举个例子:

如果有,那么对于i之前的每一个与之颜色相同的客栈都可以与i配对组成一种方案,即pre[i]=tot[c]
这样转移方程就有了:
然后对于每个方案都+起来,就是最后的ans;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
const int maxn = ;
const int maxk = ; using namespace std; int n,k,p,c,m,ans,maxl;
int pre[maxn],pos[maxn],tot[maxn],res[maxn]; int main(){ scanf("%d%d%d",&n,&k,&p);
for(int i = ;i <= n;i++){
scanf("%d%d",&c,&m);
if(m <= p) pre[i] = i;
else pre[i] = pre[i-]; for(int j = ;j < k;j++){
if(pre[i] < pos[c]) res[i] = res[pos[c]];
else res[i] = tot[c];
} pos[c] = i;
tot[c]++;
ans += res[i];
} cout<<ans<<endl;
}
end-
【五一qbxt】day7-2 选择客栈的更多相关文章
- NOIP2011选择客栈[递推]
题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...
- 选择客栈noip2011
哈,没想到吧.今天居然有两篇(算什么,厕所读物吗 选择客栈 本题的更优解请跳转zt 这题11年,刚改2day. 对于30% 的数据,有 n ≤100: 对于50% 的数据,有 n ≤1,000: 对于 ...
- 一本通1546【NOIP2011】选择客栈
1546:NOIP2011 选择客栈 时间限制: 1000 ms 内存限制: 524288 KB 题目描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 n 编号. ...
- 洛谷 P1311 选择客栈 解题报告
P1311 选择客栈 题目描述 丽江河边有 \(n\) 家很有特色的客栈,客栈按照其位置顺序从 \(1\) 到 \(n\) 编号.每家客栈都按照某一种色调进行装饰(总共 \(k\) 种,用整数 \(0 ...
- 洛谷P1311 选择客栈
P1311 选择客栈 题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一 ...
- 【11NOIP提高组】选择客栈(信息学奥赛一本通 1546)(洛谷 1311)
题目描述 丽江河边有nn家很有特色的客栈,客栈按照其位置顺序从 11到nn编号.每家客栈都按照某一种色调进行装饰(总共 kk 种,用整数 00 ~k-1k−1 表示),且每家客栈都设有一家咖啡店,每家 ...
- Noip2011 提高组 选择客栈
P1311 选择客栈 直通 思路: ①看题,我们可以发现一个显然的性质,即当最左边的客栈向右移动时,最右边的客栈时单调向右的,并且右端点往右的客栈也符合要求.(因为只要左侧有一个满足的,右边的自然可以 ...
- luoguP1311 选择客栈 题解(NOIP2011)
P1311 选择客栈 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...
- Luogu P1311 选择客栈(前缀和)
P1311 选择客栈 题意 题目描述 丽江河边有\(n\)家很有特色的客栈,客栈按照其位置顺序从\(1\)到\(n\)编号.每家客栈都按照某一种色调进行装饰(总共\(k\)种,用整数\(0\)~\(k ...
随机推荐
- React与Typescript整合
0. Typescript Typescript对于前端来说可以说是越来越重要了,前端的很多项目都用Typescript进行了重构.这主要得益于Typescript有比较好的类型支持,在编码的过程中可 ...
- LINUX VSFTP配置及安装
------------------转载:亲身实践,确实好用(http://www.cnblogs.com/jack-Star/p/4089547.html) 1.VSFTP简介 VSFTP是一个基于 ...
- ES基本原理
Elasticsearch是基于一款高性能的.可扩展的信息检索工具库Lucene构建的强大的搜索引擎,在很多情况,它也被作为NoSql数据库并取得了很好的效果,下面介绍下ES的基本概念,映射到数据库的 ...
- P.W.N. CTF - Web - Login Sec
题目 链接:https://ctftime.org/task/6934 题解 Login 1 题目给出了源码 var http = require('http'); const crypto = re ...
- vue @import css
@import '~@/assets/scss/helpers/_mixin'; 原理:CSS loader 会把把非根路径的url解释为相对路径, 加~前缀才会解释成模块路径.
- 超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述
前言: 由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品. STM32L151C8T6 功能特点: (1)Flash:64k (2) ...
- Linux内核设计与实现 总结笔记(第八章)下半部和推后执行的工作
上半部分的中断处理有一些局限,包括: 中断处理程序以异步方式执行,并且它有可能打断其他重要代码的执行. 中断会屏蔽其他程序,所以中断处理程序执行的越快越好. 由于中断处理程序往往需要对硬件进行操作,所 ...
- JAVA中short和short相加自动转化为int
精度小于int的数值运算的时候都回被自动转换为int后进行计算 所以,下面的代码会报编译错误 short s1 = 1;short s2 = 1;s1= (s1+s2); 必须改成: short s1 ...
- potplayer录制视频包含字幕
用potplayer录制视频,只能保存视频,外挂字幕的视频字幕无法录制进去 在字幕设置里将几个选项更改,即 字幕输出方式改为直接, 渲染方式不要选矢量即可. 如图:
- Mac自带服务器的应用
Mac OS下自带了apache,方便部署一些静态数据(html,css,js,xml,图片等数据) 一.系统默认路径 系统默认是隐藏apache安装目录的,但我们可以通过“命令行”或者“文件夹前往” ...