首先,预处理三个数组。

pre[x]表示在此之前颜色为x的客栈有多少个。

f[x]表示在此之前的客栈中,某个点c,c的颜色为x,并且从c点到已经读入的点之间有费用小于p的客栈,这样的c点的个数

last[x]表示上一个颜色为x的客栈出现在哪

那么接下来的事情就很显然了。

首先读进去一个客栈,如果这个客栈满足费用小于等于p,就把它存下来,为temp(也就是说找到一个最近的费用满足题目要求的客栈)

接下来,如果客栈temp在上一个此颜色的客栈之后出现,那么就更新f[x]为pre[x]。(因为temp是满足费用的,那么在此之前所有颜色为x点pre[x]都能满足我们之前对点c的定义,所以都加入f数组)

每次ans+=f[x]。当前新读入的点的颜色为x,那么它与前面所有颜色为x且满足费用的(即f[x])都可以匹配,所以加入ans

最后,更新你的pre和last数组即可

代码:

#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define write(a) printf("%d\n",a);
#define REP(i,a,b) for (int i=(a);i<=(b);i++)
#define PER(i,a,b) for (int i=(a);i>=(b);i--)
#define N 200005
#define M 1000005
#define INF 1e9
using namespace std;
template <class T>
inline void read(T& num) {
bool start=,neg=;
char c;
num=;
while ((c=getchar())!=EOF) {
if (c=='-') start=neg=; else
if (c>='' && c<='') {
start=;
num=num*+c-'';
} else if (start) break;
}
if (neg) num=-num;
}
/*===========Head Template================*/
int n,m,p;
int f[N],pre[N],last[N];
int ans=;
int main() {
read(n);read(m);read(p);
int x,y,tmp;
REP(i,,n) {
read(x);read(y);
if (y<=p) tmp=i;
if (tmp>=last[x]) f[x]=pre[x];
ans+=f[x];
pre[x]++;
last[x]=i;
}
write(ans);
}

这应该也算dp吧,看来我见识的题还是太少了。。。

(我是不会告诉你这是抄的,不过上面的解释部分我自己补充了一下)

code1135 选择客栈的更多相关文章

  1. NOIP2011选择客栈[递推]

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

  2. 选择客栈noip2011

    哈,没想到吧.今天居然有两篇(算什么,厕所读物吗 选择客栈 本题的更优解请跳转zt 这题11年,刚改2day. 对于30% 的数据,有 n ≤100: 对于50% 的数据,有 n ≤1,000: 对于 ...

  3. 一本通1546【NOIP2011】选择客栈

    1546:NOIP2011 选择客栈 时间限制: 1000 ms         内存限制: 524288 KB 题目描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 n 编号. ...

  4. 洛谷 P1311 选择客栈 解题报告

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

  5. 洛谷P1311 选择客栈

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

  6. 【11NOIP提高组】选择客栈(信息学奥赛一本通 1546)(洛谷 1311)

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

  7. Noip2011 提高组 选择客栈

    P1311 选择客栈 直通 思路: ①看题,我们可以发现一个显然的性质,即当最左边的客栈向右移动时,最右边的客栈时单调向右的,并且右端点往右的客栈也符合要求.(因为只要左侧有一个满足的,右边的自然可以 ...

  8. 【五一qbxt】day7-2 选择客栈

    停更20天祭qwq(因为去准备推荐生考试了一直在自习qwq) [noip2011选择客栈] 这道题的前置知识是DP,可以参考=>[五一qbxt]day3 动态规划 鬼知道我写的是什么emm 这道 ...

  9. luoguP1311 选择客栈 题解(NOIP2011)

    P1311 选择客栈  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

随机推荐

  1. 《DSP using MATLAB》 示例 Example 9.12

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. Eclipse添加中文javadoc

    SUN官方API中文版[JDK1.6]1.6API文档(中文)的下载地址:ZIP格式用来设置javadoc,下载地址:http://download.java.net/jdk/jdk-api-loca ...

  3. 二:状压dp

    一:状压dp的基本特征 状态压缩问题一般是指用十进制的数来表示二进制下的状态 这种用一个数来表示一组数,以降低表示状态所需的维数的解题手段,就叫做状态压缩. 常用到位运算 二:位运算 &:与运 ...

  4. SQL Server 查询表的主键的两种方式

    方式1: select b.column_name from information_schema.table_constraints a inner join information_schema. ...

  5. 【转】Java中的内部类和匿名类

       Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的 ...

  6. websocket之四:WebSocket 的鉴权授权方案

    引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...

  7. mysql-9索引

    mysql索引的建立对于mysql的高效运行是很重要的,索引可以大大提高mysql的检索速度. 索引分为单列索引和组合索引. 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索 ...

  8. python + docker, 实现天气数据 从FTP获取以及持久化(一)

    前情提要 最近项目需要天气数据(预报和历史数据)来作为算法程序的输入. 项目的甲方已经购买了天气数据, 依照他们的约定,天气数据的供应商会将数据以"文本" (.TXT)的方式发到F ...

  9. 6.2笔记-DQL语句查询数据库

    一.DQL语句 1.常量列 SELECT `StudentName` AS 姓名, `Address` AS 地址, '北京信息中心' AS 学校名称 FROM `student`; 2.常用函数 聚 ...

  10. AWT,Swing,RCP 开发

    http://www.blogjava.net/youxia/category/17374.html