nyoj_600_花儿朵朵_201404162000
花儿朵朵
- 描述
- 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游客来他的花园欣赏漂亮的花朵,游客们总是会询问,某个时间有多少种花儿同时在盛开着?hrdv虽然知道每种花儿的开花时间段,但是他不能很快的答出游客的问题,你能编写一个程序帮助他吗?
- 输入
- 第一行有个整数t,表示有t组测试数据,每组测试数据第一行为两个整数n,m(0<n<100000,0<m<100000);随后有n行,每一行有两个整数x,y(0<x<y<1000000000),表示这一种花的盛开时间是从x到y;随后有m行,每行有一个整数,代表游客询问的时间。
- 输出
- 对于每次游客的询问,输出一个整数在单独的一行,表示这个时间盛开的花有多少种。
- 样例输入
-
2
1 1
5 10
4
2 3
1 4
4 8
1
4
6 - 样例输出
-
0
1
2
1 - 上传者
- TC_胡仁东
-
//本题的关键是离散化,不然数组的空间不能开那么大,接下来运用树状数组来存储,查找,问题便可迎刃而解 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX = ;
//测试数据有点水,将 MAX 改为100010 也能过
typedef struct Node
{
int num;
int id; //id为记录输入的顺序,是建立一一映射的关键
}Node;
Node s[MAX];
int a[MAX],c[MAX]; int cmp(const void *a,const void *b)
{
return (*(Node *)a).num - (*(Node *)b).num;
} int lowbit(int i)
{
return i&(-i);
} void add(int i,int value)
{
while(i<MAX)
{
c[i]+=value;
i+=lowbit(i);
}
} int sum(int i)
{
int t=;
while(i>)
{
t+=c[i];
i-=lowbit(i);
}
return t;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,j,n,m,total,count;
memset(c,,sizeof(c));
scanf("%d%d",&n,&m);
total=n*+m;// 把所有要输入的数据综合到一块,然后建立一一映射的关系(把大数变成小数,以缩小存储空间)
for(i=;i<total;i++)
{
scanf("%d",&s[i].num);
s[i].id=i;
}
qsort(s,total,sizeof(s[]),cmp);
count = ;a[s[].id]=count;
for(i=;i<total;i++)//大数变小,建立成映射关系
{
if(s[i].num!=s[i-].num)
a[s[i].id]=++count;
else
a[s[i].id]=count;
}
for(i=;i<n*;i+=)//更新树状数组结点信息(插线取点法)
{
add(a[i],);
add(a[i+]+,-);
}
for(i=n*;i<total;i++)
printf("%d\n",sum(a[i]));
}
return ;
}
//a树状数组 + 离散化树状数组 + 离散化
nyoj_600_花儿朵朵_201404162000的更多相关文章
- nyoj 600——花儿朵朵——【离散化、线段树插线问点】
花儿朵朵 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游 ...
- nyoj_600:花儿朵朵(树状数组+坐标离散化)
http://acm.nyist.net/JudgeOnline/problem.php?pid=600 只附代码好了 #include<bits/stdc++.h> using name ...
- nyoj 600:花儿朵朵(树状数组+坐标离散化)
http://acm.nyist.net/JudgeOnline/problem.php?pid=600 只附代码好了 #include<bits/stdc++.h> using name ...
- 【代码笔记】iOS-推荐收听,左右两个tableView
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- Solr 09 - SolrJ操作Solr单机服务 (Solr的Java API)
目录 1 SolrJ是什么 2 SolrJ对索引的CRUD操作 2.1 创建Maven工程(打包方式选择为jar) 2.2 配置pom.xml文件, 加入SolrJ的依赖 2.3 添加和修改索引 2. ...
- Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...
- Java中的集合类,集合类有哪些,如何增添删除元素,如何遍历
http://www.cnblogs.com/LittleHann/p/3690187.html import java.util.*; public class TestCollection { p ...
- 科幻小说《霜与火》 by 雷·布雷德伯里
漫漫长夜中,西姆出世了,躺在山洞冰凉的石头上,嗷嗷大哭,浑身血液奔流,脉搏每分钟一千跳.他不停地长大.妈妈用发烫的双手喂西姆吃东西.人生的梦魔开场了.一来到世间,他的眼睛就闪烁着警觉的光芒:而后又令人 ...
- (四)DIH导入结构化数据
(四)DIH导入结构化数据 目前大多数的应用程序将数据存储在关系数据库(如oracle.sql server .mysql等).xml文件中.对这样的数据进行搜索是很常见的应用.所谓的DataImpo ...
随机推荐
- loadrunner中get和post请求
loadrunner中可以使用web_url和web_link发送get请求,使web_submit_form和web_sumbit_data发送post请求. 有什么不同呢?推荐使用哪一个? web ...
- Kali Linux的介绍
Kali Linux是什么? Kali Linux是一个渗透测试平台兼安全审计平台,它集成了多款漏洞检测.目标识别和漏洞利用工具. Kali Linux是专门用于渗透测试的Linux操作系统:基于De ...
- RabbitMQ一:消息队列的认识
1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信.传统的做法有两种1.串行的方式:2.并行方式. (1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信.以上三个任务全部完 ...
- 连接oracle出现的问题以及解决办法
连接oracle出现过的问题: 1,ORA-12514::监听程序当前无法识别链接描述符中请求的服务 1)重启服务,看是否解决 2)测试网络监听是否能监听成功,监听不成功的话,查看下面几个点:服务名( ...
- 【转】Java实现将文件或者文件夹压缩成zip
转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...
- 创建对象——单例(Singleton)模式
单例(Singleton)模式: 保证一个类在系统里只能有一个对象被实例化. 如:缓存池.数据库连接池.线程池.一些应用服务实例等. 难点:在多线程环境中,保证实例的唯一性. ...
- arduino 字符解析
Arduino String.h库函数详解 此库中包含1 charAT()2 compareTo()3 concat()4 endsWith()5 equals()6 equalslgnoreCa ...
- WEB前端响应式布局之BootStarp使用
1.Bootstrap简介:1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JavaScript 的 ...
- CAD在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据
在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据.下面帮助的完整例子,在控件安装目录的 Sample\Ie\iedemo.htm 中. 主要用到函数说明: _DMxDrawX::InsertBlo ...
- CMU Database Systems - Two-phase Locking
首先锁是用来做互斥的,解决并发执行时的数据不一致问题 如图会导致,不可重复读 如果这里用lock就可以解决,数据库里面有个LockManager来作为master,负责锁的记录和授权 数据库里面的基本 ...