【五一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 ...
随机推荐
- 入手node
一.安装node(查询使用npm) 二.安装淘宝镜像(查询使用cnpm,安装淘宝镜像之后下载速度会更快) 三.安装相关资料时,在预安装的文件夹使用: shift + 右键, 打开命令行窗口,进入终端
- leetcode69. x 的平方根 🌟
题目: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 ...
- [Tyvj2032]升降梯上(最短路)
[Tyvj2032]升降梯上 Description 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升 ...
- windows下数字以2进制打印
#include <cstdlib> _itoa(num, buf, 2); 打印buf既是二进制
- jmeter性能工具 之监控cpu,内存等信息(四)
1.jmeter 本身不支持直接监控 cpu,内存等信息,需要去官网下载控件 JMeterPlugins-Standard-1.4.0.zip 解压好将其中\lib\ext\JMeterPlug ...
- python之requests模块中的params和data的区别
params的时候之间接把参数加到url后面,只在get请求时使用: import requests url='https://api.ireaderm.net/account/charge/info ...
- Leetcode_132. Palindrome Partitioning II_[DP]
题目链接 Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...
- K短路模板POJ 2449 Remmarguts' Date
Time Limit: 4000MS Memory Limit: 65536K Total Submissions:32863 Accepted: 8953 Description &qu ...
- dijkstra求最小环
任意一个环的权值,我们都可以看成两个有边相连的结点i.j的直接距离加上i.j间不包含边(边i->j)的最短路径. 求最短路径我们第一个想到的就是Dijkstra算法. 而Dijkstra所求的是 ...
- python中生成器generator
通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素 ...