HDU5200 数据离线处理

  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5200 ,数据离线处理。

  这是BestCoder Round #36的C题,比赛时自己用线段树做,姿势不够优美,TLE了,后来才想到用离线处理的话很简单。



解法:

  先把所有的树的高度和下标都存下来,然后按照高度进行排序;接下来把所有询问都先存下来,按照询问的高度进行排序。对于当前的查询h,在树中删除比h小的树木,假设删除的树的下标为p,则查看当前p+1和p-1位置的树木是否删去,如果两个位置都在,则+1,如果两个都被删去,则-1,如果一个存在一个已经被删去,段数不变。最后注意处理边界情况。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <vector>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
#define LL __int64
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
const int maxn = 50000 + 5;
struct Tree {
    int h , pos;
    bool operator < (const Tree &tmp) const {
        return h < tmp.h;
    }
}t[maxn] , q[maxn];
int vis[maxn] , ans[maxn];
int main()
{
    int n , m , i , j;
    while(~scanf("%d %d" , &n , &m)) {
        for(i = 1 ; i <= n ; i++) {
            scanf("%d" , &t[i].h);
            t[i].pos = i;
        }
        for(i = 1 ; i <= m ; i++) {
            scanf("%d" , &q[i].h);
            q[i].pos = i;
        }
        sort(t + 1 , t + n + 1);
        sort(q + 1 , q + m + 1);
        memset(vis , 0 , sizeof(vis));
        vis[0] = vis[n + 1] = 1;
        int cnt = 1;
        for(i = j = 1 ; i <= m ; i++) {
            while(j <= n && t[j].h <= q[i].h) {
                int p = t[j++].pos;
                if(vis[p - 1] && vis[p + 1])
                    cnt--;
                if(!vis[p - 1] && !vis[p + 1])
                    cnt++;
                vis[p] = 1;
            }
            ans[q[i].pos] = cnt;
        }
        for(i = 1 ; i <= m ; i++)
            printf("%d\n" , ans[i]);
    }
    return 0;
}
时间: 2024-10-29 10:10:24

HDU5200 数据离线处理的相关文章

大数据技术之_18_大数据离线平台_04_数据分析 + Hive 之 hourly 分析 + 常用 Maven 仓库地址

二十.数据分析20.1.统计表20.2.目标20.3.代码实现20.3.1.Mapper20.3.2.Reducer20.3.3.Runner20.3.4.测试二十一.Hive 之 hourly 分析21.1.目标21.2.目标解析21.3.创建 Mysql 结果表21.4.Hive 分析21.4.1.创建 Hive 外部表,关联 HBase 数据表21.4.2.创建临时表用于存放 pageview 和 launch 事件的数据(即存放过滤数据)21.4.3.提取 e_pv 和 e_l 事件数据

Spark进阶 大数据离线与实时项目实战 完整版

第1章 课程介绍&学习指南本章会对这门课程进行说明并进行学习方法介绍. 第2章 Redis入门Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度.本章将从Redis特性.应用场景出发,到Redis的基础命令,再到Redis的常用数据类型实操,最后通过Java API来操作Redis,为后续实时处理项目打下坚实的基础... 第3章 HBase入门HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:

HDU 5139数据离线处理

此题可以找到规律f(n) = 1! * 2! *...*n!, 如果直接打表的话,由于n比较大(10000000),所以会超内存,这时候就要用到离线处理数据,就是先把数据存起来,到最后在暴力一遍求解就行了,代码如下 代码一(超内存): 1 #include <stdio.h> 2 3 const long long mod = 1000000007; 4 const int N = 10000007; 5 long long a[N]; 6 7 int main() 8 { 9 a[0] =

大数据离线(一)

数据分析 数据分析作用 在商业领域中,进行数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来,总结出所研究对象的内在规律,帮助管理者进行有效的判断和决策.数据分析在企业日常经营分析中主要有三大作用: 现状分析:告诉你当前的状况 原因分析:告诉你某一现状为什么发生 预测分析:告诉你将来会发生什么 数据分析基本步骤 明确分析目的和思路:比如用户行为理论 用户行为轨迹 >> 用户的网站行为 >> 网站分析指标 数据收集 一般数据来源主要有以下几种方式:数据库.公开出

大数据技术之_18_大数据离线平台_01_项目开发流程+大数据常用应用/分析平台/业务处理方式+数据分析平台的数据来源+数据处理的流程+项目集群的规模+需求分析+技术架构/选型

一.项目开发流程1.1.项目调研1.2.项目需求分析1.3.方案设计1.3.1.概要设计1.3.2.详细设计1.4.编码实现1.4.1.单元测试1.4.2.集成测试1.4.3.压力测试1.4.4.用户测试二.大数据常用应用2.1.数据出售2.2.数据分析2.2.1.百度统计2.2.2.友盟2.2.3.其他统计分析组织2.3.搜索引擎2.3.1.solr2.3.2.luence2.3.3.luence & solr 对比2.4.推荐系统(高数)2.4.1.技术2.4.2.算法2.5.精准营销2.5

HDU5200 Trees (离线处理)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5200 题意: 每次去掉高度小于q的树,每次输出剩下的块数. 分析: 我们对高度从高到低进行排序,对要去掉的高度从低到高进行排序. 因此前面去掉的在后面一定会去掉,因可以离线处理,节省时间, 然后需要开一个辅助空间,记录这棵树去没有去掉. 代码如下: #include <iostream> #include <cstdio> #include <cstring> #incl

大数据离线(三)

HDFS HDFS基本概念 HDFS 介绍 HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统,分布式文件系统解决的问题就是数据存储. HDFS设计目标 HDFS 将有成百上千的服务器组成硬件故障是常态,因此故障的检测和自动快速恢复是 HDFS 的核心架构目标. HDFS 上的应用主要是以流式读取数据,因此比之数据访问的反应时间,更关 键的在于数据访问的高吞吐量. 运行在 HDFS 之上的程序有很大量的数据集,所以HDFS 被调整

大数据离线(四)

MapReduce MapReduce计算模型 MapReduce的思想就是" 分而治之" Map 负责"分",即把复杂的任务分解为若干个"简单的任务"来处理."简单的任务"包含三层含义:一是数据或计算的规模相对任务要大大缩小:二是就近计算原则,即任务会分配到存放着所需数据的节点上进行计算:三是这些小任务可以并行计算,彼此间几乎没有依赖关系. Reduce 负责对 map 阶段的结果进行汇总. MapReduce设计构思 ①如

大数据技术之_18_大数据离线平台_02_Nginx+Mysql+数据收集+Web 工程 JS/JAVA SDK 讲解+Flume 故障后-如何手动上传 Nginx 日志文件至 HDFS 上

十一.Nginx11.1.介绍11.2.常见其他 Web 服务器11.3.版本11.4.Nginx 安装11.5.目录结构11.6.操作命令十二.Mysql12.1.介绍12.2.关系型数据库(SQL)种类12.3.特征12.4.术语12.4.与非关系型数据库比较(Not Only SQL)12.4.1.种类12.4.2.特征12.4.3.总结十三.数据收集13.1.收集方式13.2.数据的事件类型13.2.1.Launch 事件13.2.2.PageView 事件13.3.Nginx 日志收集