hdu3193 降维+rmq
/*
给定n个数对(p,d),如果有这么一个数对(pi,di),其他所有的数对都不能严格小于这个数对
请求出有多少个这样的数对!
解法:对于数对(p,d),能找到在【1,p-1]之间的小于d的数对,那么数对(p,d)不符合要求,反之符合
那么开一个数组x,x[i]表示价格不超过p的最小的d的值,rmq打表后即可
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 10005
struct node{
int p,d;
bool operator<(const node & a)const{
if(p==a.p) return d<a.d;
return p<a.p;
}
}a[maxn],ans[maxn];
int dp[maxn][],x[maxn],n,tot;
void ST(){
for(int i=;i<=;i++)dp[i][]=x[i];
for(int j=;(<<j)<=maxn;j++)
for(int i=;i+(<<j)-<=maxn;i++)
dp[i][j]=min(dp[i][j-],dp[i+(<<(j-))][j-]);
}
int query(int L,int R){
int k=log2(R-L+);
return min(dp[L][k],dp[R-(<<k)+][k]);
}
int main(){
while(scanf("%d",&n)==){
for(int i=;i<;i++)
x[i]=maxn;
for(int i=;i<=n;i++){
scanf("%d%d",&a[i].p,&a[i].d);
a[i].p++;a[i].d++;
x[a[i].p]=min(x[a[i].p],a[i].d);
}
ST();tot=;
for(int i=;i<=n;i++){
if(a[i].p==) ans[tot++]=a[i];
else if(a[i].d<=query(,a[i].p-)) ans[tot++]=a[i];
}
printf("%d\n",tot);
sort(ans,ans+tot);
for(int i=;i<tot;i++) printf("%d %d\n",ans[i].p-,ans[i].d-);
}
}
hdu3193 降维+rmq的更多相关文章
- 【LightOJ 1081】Square Queries(二维RMQ降维)
Little Tommy is playing a game. The game is played on a 2D N x N grid. There is an integer in each c ...
- [数据结构]RMQ问题小结
RMQ问题小结 by Wine93 2014.1.14 1.算法简介 RMQ问题可分成以下2种 (1)静态RMQ:ST算法 一旦给定序列确定后就不在更新,只查询区间最大(小)值!这类问题可以用倍增 ...
- 【模板】RMQ(计算区间最值)
①一维RMQ (1) dp[i,j] 表示从第i个数起连续2j个数中的(最大值min.最小值max.最大公约数gcd……),通过更改下列代码中的红色函数即可实现. (2) b数组放置所需查询的数列. ...
- 奇异值分解(SVD)原理与在降维中的应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
- 用scikit-learn进行LDA降维
在线性判别分析LDA原理总结中,我们对LDA降维的原理做了总结,这里我们就对scikit-learn中LDA的降维使用做一个总结. 1. 对scikit-learn中LDA类概述 在scikit-le ...
- scikit-learn一般实例之四:使用管道和GridSearchCV选择降维
本例构建一个管道来进行降维和预测的工作:先降维,接着通过支持向量分类器进行预测.本例将演示与在网格搜索过程进行单变量特征选择相比,怎样使用GrideSearchCV和管道来优化单一的CV跑无监督的PC ...
- 机器学习基础与实践(三)----数据降维之PCA
写在前面:本来这篇应该是上周四更新,但是上周四写了一篇深度学习的反向传播法的过程,就推迟更新了.本来想参考PRML来写,但是发现里面涉及到比较多的数学知识,写出来可能不好理解,我决定还是用最通俗的方法 ...
- BZOJ 3489: A simple rmq problem
3489: A simple rmq problem Time Limit: 40 Sec Memory Limit: 600 MBSubmit: 1594 Solved: 520[Submit] ...
- UVA 11235Frequent values(RMQ)
训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到 ...
随机推荐
- P4891 序列
P4891 序列 题目描述 给定两个长度为 n 的序列 A 和 B,定义序列 \(C_i=\max\limits_{j=1}^i A_j\) 定义当前的价值是 $\prod\limits_{i=1}^ ...
- python---模板引擎
布局文件layout.html:就是对文件的格式化输出(对其中的标签进行替换) <!DOCTYPE html> <html lang="en"> <h ...
- java keytool证书工具使用小结【转】
java keytool证书工具使用小结 keytool导入导出多条目对比 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, ...
- C# Regex正则常用方法的使用
using System; using System.Collections; using System.Configuration; using System.Data; using System. ...
- mysql select 时间戳转标准时间写法
select FROM_UNIXTIME(create_time, '%Y-%m-%d %H:%i:%S') as create_time from tabName
- 前端mock数据的几种方式
方式 备注 本地php服务架设 直接输出json 使用在线mock服务 如easyMock.apizza.Rap1\2 , 可以远程协作 本地node服务:koa+mongodb 本地node ...
- split('\r\n')
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来. 实际我的脚本读取FTP的列表,如果用的split("\r\n"),可以获得正 ...
- Python(十三)python的函数重载
首先,重载函数的功能是实现参数不同情况下功能相同的函数. 函数重载的目的是解决功能相同的函数的以下问题: 1.参数的类型: 2.参数的个数: 对于情况1,函数功能呢相同,参数不同的情况. python ...
- 2、SpringBoot接口Http协议开发实战8节课(7-8)
7.SpringBoot2.x文件上传实战 简介:讲解HTML页面文件上传和后端处理实战 1.讲解springboot文件上传 MultipartFile file,源自SpringMVC 1)静态页 ...
- block循环引用
block里边会有循环引用的风险,它可能对外部一个变量出现强引用,所以需要判断里边是否有循环引用,通过dealloc方法(销毁当前控制器.或销毁要测试的变量),判断是否循环引用.主要在block 里边 ...