【kAri OJ】wzt的树

时间限制 1000 ms 内存限制 65536 KB

题目描述

改革春风吹满地,中国人民真争气!家庭联产承包责任制以后,全国人民争想发家致富。wzt于是包了一个山头来种植金丝楠木,花了好几年种了N棵树,每棵高度为Hi mm。今年终于有人上门收购了(跪求了半天)!!

一共来了Q个厂家要求采购树木,每家都对树的高度有各自要求,必须高于Xi mm。这可把wzt难倒了,这么多的树可怎么统计啊!于是找到了机智的S菊苣,希望知道自己手头还囤积了多少棵不符合此厂家要求的树。

S菊苣实在太忙了,于是麻烦你编程来计算一下

输入格式

第一行是case数T (T ≤20)

每个case,首先输入树木的数量N (N ≤50000)

然后输入每颗树的高度Hi。

之后输入厂家的数量Q (Q ≤50000)

然后输入每个厂家对树木的要求Xi.

Hi和Xi都为int型

输出格式

针对每个询问,输出一行相对应的结果。

输入样例

1
2
1 3
1
2

输出样例

1

分析

先排序,然后二分找出小于等于Xi 的最后一棵树。

代码

#include<cstdio>
#include<algorithm>
using namespace std;
int t,n,h[50005]= {-1},q,x;
int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=1; i<=n; i++)
            scanf("%d",&h[i]);
        sort(h+1,h+n+1);
        scanf("%d",&q);
        for(int i=0; i<q; i++)
        {
            scanf("%d",&x);
            int l=0,r=n,m;
            while(l<r-1)
            {
                m=l+r>>1;
                if(h[m]<=x) l=m;
                else r=m;
            }
            if(l+1==r&&h[r]<=x)l++;
            printf("%d\n",l);
        }
    }
    return 0;
}
时间: 2024-10-09 13:50:34

【kAri OJ】wzt的树的相关文章

山东省赛题 NEU OJ 1444 线段树双标记

http://acm.neu.edu.cn/hustoj/problem.php?id=1444 OJ问题论坛发帖http://t.cn/zjBp4jd FAQ http://t.cn/zjHKbmN Linux问题看http://t.cn/aWnP1n 1444: Devour Magic 时间限制: 1 Sec  内存限制: 256 MB 提交: 129  解决: 21 [提交][状态][讨论版] 题目描述 In Warcraft III, Destroyer is a large flyi

玲珑oj 1117 线段树+离线+离散化,laz大法

1117 - RE:从零开始的异世界生活 Time Limit:1s Memory Limit:256MByte Submissions:438Solved:68 DESCRIPTION 486到了异世界,看到了一群可爱的妹子比如蕾姆啊,艾米莉亚啊,拉姆啊,白鲸啊,怠惰啊等等!有一天膜女告诉486说她的能力可能不能再用了,因为膜女在思考一个数据结构题,没心情管486了.486说我来帮你做,膜女说你很棒棒哦! 给一个集合,最开始为空(不是数学上的集合)五个操作: 1.插入x2.把小于x的数变成x3

kAri OJ 92 统计节点个数 邻接表

92. 统计节点个数 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出一棵有向树,一共有N(1<N≤1000)个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为p节点,现在你的任务是统计p节点的个数. 如样例,第一组的p节点为1,2,3:第二组的p节点为0. 输入格式 第一行为数据组数T(1≤T≤100). 每组数据第一行为N表示树的节点数.后面为N?1行,每行两个数x,y(0≤x,y<N),代表y是x的儿子节点

hrbust oj 1526+2028 树状数组

冒泡排序中 如果一个数的后面的某个数和这个数不符合排序规则 那么这个数就会在未来的某次冒泡中与那个数进行交换 这里用到了 树状数组求逆序数的办法来做 需要注意的是2028并不可以改完数组大小后直接套1526代码 因为会超出int的范围 树状数组求逆序对的耗时要比归并排序长一些 不过简单.. 之所以要记录下来这道题是因为在其中并没有说 每一个数都是独一无二的 那么当我们离散化的时候就需要做出一些小的调整 1526 #include<stdio.h> #include<string.h>

FZU oj 2277 Change 树状数组+dfs序

Problem 2277 Change Time Limit: 2000 mSec    Memory Limit : 262144 KB  Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai. Initially all the node’s value is 0. We have q operations. T

SDUT OJ 3045 迷之图论 (树的直径)

题目地址:SDUT OJ 3045 这题比赛的时候想的差不多..但是总是觉得不对..写了一次就没再写,然后删了..当时没想到的是第二次求出来的就是最长链..当时想到的两次bfs找最大值(这一种方法其实结果也对..TAT..),还有找到点后在回溯减去重点等等..但总觉得好像都不太对...赛后才知道这题原来是树的直径.....牡丹江区域现场赛的时候遇到过,不过赛后也没看... 找树的直径的方法其实就是先任取一点进行bfs,找到最远的一点,这时最远的一点肯定是最长链端点之一,然后再从这一最远点开始bf

Light OJ 1411 Rip Van Winkle`s Code 线段树成段更新

题目来源:Light OJ 1411 Rip Van Winkle`s Code 题意:3中操作 1种查询 求区间和 其中每次可以把一段区间从左到右加上1,2,3,...或者从右到左加上...3,2,1 或者把某个区间的数都置为v 思路:我是加了6个域 add是这段区间每个数都要加上add  add是这么来的 对与123456...这个等差数列 可能要分为2个区间 那么我就分成123和123 两个右边的等差数列每个数还应该加上3 所以右区间add加3 v是这个区间都要置为v 他的优先级最高 b是

Light OJ 1114 Easily Readable 字典树

题目来源:Light OJ 1114 Easily Readable 题意:求一个句子有多少种组成方案 只要满足每个单词的首尾字符一样 中间顺序可以变化 思路:每个单词除了首尾 中间的字符排序 然后插入字典树 记录每个单词的数量 输入一个句子 每个单词也排序之后查找 根据乘法原理 答案就是每个单词的数量之积 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>

【bzoj4811】[Ynoi2017]由乃的OJ 树链剖分+线段树区间合并

题目描述 由乃正在做她的OJ.现在她在处理OJ上的用户排名问题.OJ上注册了n个用户,编号为1-",一开始他们按照编号 排名.由乃会按照心情对这些用户做以下四种操作,修改用户的排名和编号:然而由乃心情非常不好,因为Deus天 天问她题...因为Deus天天问由乃OI题,所以由乃去学习了一下OI,由于由乃智商挺高,所以OI学的特别熟练她 在RBOI2016中以第一名的成绩进入省队,参加了NOI2016获得了金牌保送 Deus:这个题怎么做呀? yuno:这个不是NOI2014的水题吗... Deu