【五一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 ...
随机推荐
- (一)WebPack4.0 从零开始
一:WebPack基础知识 (1):webpack的定义 webpack官网给出的定义是:webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). ...
- 解析安装mysql
大多数人在结束咱们前面学习的基础知识的时候,其实一脸懵逼,不过我们已经开始步入了另一个新的高度,针对基础知识还是必须巩固针对性的进行补充,可以分模块总结:比如基础知识的数据结构---->函数-- ...
- openstack stein部署手册 6. nova-api
# 建立数据库用户及权限 create database nova; grant all privileges on nova.* to nova@'localhost' identified by ...
- MYSQL学习笔记——连接以及存储过程
连接 当我们需要从多个表查询数据时,我们就需要使用到连接操作,mysql支持内连接,左连接以及右连接三种连接方式. 数据库准备 首先我们创建两个表t1, t2: create table t1(i1 ...
- MYSQL学习笔记——常用语句
1.检索数据 1.1.检索单个列:SELECT prod_name FROM products; 1.2.检索多个列:SELECT prod_id, prod_name, prod_price FRO ...
- 2018-10-01-weekly
Algorithm 77. 组合 What 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. How 利用递归的思想,当凑够k个数时,就回退回去,remove掉一个数,在 ...
- DDD领域驱动设计初探(一):聚合
前言:又有差不多半个月没写点什么了,感觉这样很对不起自己似的.今天看到一篇博文里面写道:越是忙人越有时间写博客.呵呵,似乎有点道理,博主为了证明自己也是忙人,这不就来学习下DDD这么一个听上去高大上的 ...
- thinkphp 响应对象response
1.可以通过修改配置文件的 default_return_type修改输出类型 // 默认输出类型 'default_return_type' => 'html', 2. 可以通过Config类 ...
- ssh服务配置
------------------------------------------ ssh 服务安装ssh apt-get install openssh-server启动 service ssh ...
- Test 6.29 T4 简单数据结构练习
问题描述 费了一番功夫,神犇 CJK 终于完成了前三道题目."不错,不愧是新一代神犇啊!" JesseLiu 满意地说道,"不过,你在算法方面的功底固然不错.对于数据结构 ...