10^9的大数组显然开不了。所以也算比较裸的离散化了。。。

令pos[i].pp[j]表示从左到右第j个高度为i的树的位置  (pp是个vector,范围0..now-1)

 pos[i].num表示有几个高度为i的树

 pos[i].now表示当前kill到第几个了(从0开始计数)

离散化模板get:

 int Bin(int key,int n,int X[])
{
int l = , r = n - ;
while (l <= r)
{
int m = (l + r) >> ;
if (X[m] == key) return m;
if (X[m] < key) l = m + ;
else r = m - ;
}
return -;
} int main()
{
//balabala nnd=;
for(int i=; i<=N; i++)
{
scanf("%d",&h[i]);
X[nnd++]=h[i]; //先用数组X[1..m]存下这些数
}
sort(X,X+nnd); //然后对X从小到大排序
int m=;
for(int i=; i<nnd; i++) //去重
if(X[i]!=X[i-]) X[m++]=X[i];
sort(X,X+m); //再排序一遍 scanf("%d",&p);
int hs=Bin(p,m,X); //hs就是p离散化之后的值 //balabala
}

AC Code:

 #include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; struct abc
{
vector<int> pp; //[0..num-1]
int num=;
int now=;
} pos[]; int N,M,nnd;
int h[];
int Q;
int X[]; int Bin(int key,int n,int X[])
{
int l = , r = n - ;
while (l <= r)
{
int m = (l + r) >> ;
if (X[m] == key) return m;
if (X[m] < key) l = m + ;
else r = m - ;
}
return -;
} int main()
{
while(cin>>N>>M)
{
memset(pos,,sizeof(pos));
nnd=;
for(int i=; i<=N; i++)
{
scanf("%d",&h[i]);
X[nnd++]=h[i];
}
sort(X,X+nnd);
int m=;
for(int i=; i<nnd; i++)
if(X[i]!=X[i-]) X[m++]=X[i];
sort(X,X+m);
//Bin(p,m,X); for(int i=; i<=N; i++)
{
int tmp=Bin(h[i],m,X);
pos[tmp].num++;
pos[tmp].pp.push_back(i);
} for(int i=; i<=M; i++)
{
scanf("%d",&Q);
int tmp=Bin(Q,m,X);
if(pos[tmp].num==)
printf("-1\n");
else
{
int tm=pos[tmp].now;
pos[tmp].now++;
pos[tmp].num--;
int ans=pos[tmp].pp[tm];
printf("%d\n",ans);
}
} } return ;
}

hdu 5233 离散化的更多相关文章

  1. R - Weak Pair HDU - 5877 离散化+权值线段树+dfs序 区间种类数

    R - Weak Pair HDU - 5877 离散化+权值线段树 这个题目的初步想法,首先用dfs序建一颗树,然后判断对于每一个节点进行遍历,判断他的子节点和他相乘是不是小于等于k, 这么暴力的算 ...

  2. HDU 5233 Gunner II 离散化

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5233 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  3. HDU 2836 (离散化DP+区间优化)

    Reference:http://www.cnblogs.com/wuyiqi/archive/2012/03/28/2420916.html 题目链接: http://acm.hdu.edu.cn/ ...

  4. hdu 5233 Gunner II

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=5233 简单题,stl水之... #include<algorithm> #include& ...

  5. (转)hdu 3436Queue-jumpers--splay+离散化

    dalao博客 http://acm.hdu.edu.cn/showproblem.php?pid=3436 题意:初始排列1到N,现在要你实现3种操作: 将x插入到队头去 询问x当前的位置 询问第x ...

  6. hdu 5009 离散化

    http://acm.hdu.edu.cn/showproblem.php?pid=5009 有一段序列,涂连续一段子序列的代价为该子序列出现不同数字个数的平方,求最小代价涂完整个序列. ai有10^ ...

  7. hdu -4325-Flowers(离散化 线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=4325: 题目意思: 给你N个花开的时间段,然后在有M个时间点,问你在这个时间点有多少花开着. 昨天刚做的一个类似 ...

  8. hdu 4833 离散化+dp ****

    先离散化,然后逆着dp,求出每个点能取到的最大利益,然后看有没有钱,有钱就投 想法好复杂 #include <stdio.h> #include <string.h> #inc ...

  9. HDU 5925 离散化

    东北赛的一道二等奖题 当时学长想了一个dfs的解法并且通过了 那时自己也有一个bfs的解法没有拿出来 一直没有机会和时ji间xing来验证对错 昨天和队友谈离散化的时候想到了 于是用当时的思路做了一下 ...

随机推荐

  1. NET Core中怎么使用HttpContext.Current

    NET Core中怎么使用HttpContext.Current 阅读目录 一.前言 二.IHttpContextAccessor 三.HttpContextAccessor 回到目录 一.前言 我们 ...

  2. 通过ssh tunnel连接内网ECS和RDS

    通过ssh tunnel连接内网ECS和RDS 这里讲了ssh tunnel的原理.很清晰. 此后又给外网访问内网增加了一种思路.感觉特别棒. 拓宽了思路:

  3. 文本比较算法Ⅱ——Needleman/Wunsch算法

    在"文本比较算法Ⅰ--LD算法"中介绍了基于编辑距离的文本比较算法--LD算法. 本文介绍基于最长公共子串的文本比较算法--Needleman/Wunsch算法. 还是以实例说明: ...

  4. Theano2.1.11-基础知识之稀疏

    来自:http://deeplearning.net/software/theano/tutorial/sparse.html sparse 通常来说,稀疏矩阵可以和常规矩阵一样提供相同的功能.两者不 ...

  5. iframe在ios下无故扩大的问题探究

    移动端页面内嵌了个 iframe,在 ios 下打开却发现页面怪异.比如 demo.代码如下: <!DOCTYPE html> <html lang="zh-CN" ...

  6. 一次由于开启 Safari 无痕浏览 引发的艰难“捉虫”事件

    事件回顾 做了一个移动端的页面,测试的时候出现了一个诡异的 bug.别的浏览器都好好的,就 ios 的 Safari 浏览器页面停止了渲染,似乎是有一段 js 文件没有载入.但是奇怪的是,同一型号的 ...

  7. [bzoj2286][Sdoi2011]消耗战(虚树上的DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2286 分析:对于普通的树形dp:f[x]=min(∑f[son],m[x]),其中f[ ...

  8. P值与significant(显著性)的理解

    P值与significant的理解 来源:广州市统计局   发表日期:2015-01-21     P值可以理解为结论的风险大小,也就是根据数据得出的结果有多大的错误风险,P值越小,结论错误的风险越小 ...

  9. [转]论acm与泡妞

    abstract :本文从各个方面讨论了泡妞与做题之间的相似之处与不同点,尽量的站在一个公平的角度阐述这一问题,所得的研究成果填补了国内外的理论空白. - 泡了一个好妞就好像做了一道难题一样快感都是相 ...

  10. 1025基础REDIS

    -- 登录AUTHPING -- 通用命令EXISTS KEY EXPIRE KEY seconds 为给定 KEY 设置过期时间 -- 字符SET runoobkey redisDEL runoob ...