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. salt基本原理

            转载自: 来自:http://tech.mainwise.cn/?p=438     说明:salt是一个异构平台基础设置管理工具(虽然我们通常只用在Linux上),使用轻量级的通讯器 ...

  2. 端口扫描base

    #coding:utf8 import os import socket import sys def IsOpen(ip,port): s = socket.socket(socket.AF_INE ...

  3. oracle:如何用sql生成日历

    BI分析中,经常需要将事实表与时间维度表关联起来,按年/月/日来逐层展示,常用的做法是创建一张日历表,结构类似如下: create table T_BAS_CALENDAR ( d_year ) no ...

  4. Python2.6-原理之类和oop(下)

    来自<python学习手册第四版>第六部分 五.运算符重载(29章) 这部分深入介绍更多的细节并看一些常用的重载方法,虽然不会展示每种可用的运算符重载方法,但是这里给出的代码也足够覆盖py ...

  5. winddows 运行指令 (2)

    cmd.exe--------CMD命令提示符 chkdsk.exe-----Chkdsk磁盘检查 certmgr.msc----证书管理实用程序 calc-----------启动计算器 charm ...

  6. Crowdsourcing(众包)

    群众外包(英语:crowdsourcing)是互联网带来的新的生产组织形式.<连线>(Wired)杂志记者Jeff Howe于2006年发明的一个专业术语,用来描述一种新的商业模式,即企业 ...

  7. Rectangles Area Sum

    #include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #in ...

  8. Ceph Zabbix plugin 插件和模板

    由于Ceph项目中的 Celemeter 缺乏告警功能和监控平台的统一性要求, YY 云平台Ceph集群的监控需求,都是在团队已有的zabbix平台基础上开发完成的. 在已有的git开源项目基础上做了 ...

  9. java定时器

    package com.lid;            import java.util.Calendar;      import java.util.Date;      import java. ...

  10. Linux服务器配置git服务

    前言 Git是一个非常著名的分布式版本控制系统,而广大开发者更是习惯在最大的远程仓库GitHub上提交自己的代码.但是有时候,一些小项目不值得放到GitHub上去,或是由于隐私问题不好在GitHub的 ...