lines---hdu5124(离散化+数组模拟)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124

就是有n条在x轴的线段,给你线段的左右端点,每条线段都会覆盖点,求出最多被覆盖多少次

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
#define N 201000

int b[N], v[N];

struct node
{
    int L, R;
}a[N];

int main()
{
    int T, n;
    scanf("%d", &T);
    while(T--)
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        memset(v, 0, sizeof(v));
        int k=0, Max=0, ans=0;
        scanf("%d", &n);
        for(int i=0; i<n; i++)
        {
            scanf("%d %d", &a[i].L, &a[i].R);
            b[k++]=a[i].L;
            b[k++]=a[i].R;
        }///离散化处理;

        sort(b, b+k);
        k = unique(b, b+k)-b;///排序去重;

        for(int i=0; i<n; i++)
        {
            int L=lower_bound(b, b+k, a[i].L)-b;
            int R=lower_bound(b, b+k, a[i].R)-b;
            v[L]++;///相当于是入点++出点--;最后把v从前到后加在一起就相当于此点被加过几次;
            v[R+1]--;
        }

        for(int i=0; i<k; i++)
        {
            ans+=v[i];
            Max=max(Max, ans);///求最大的值;
        }
        printf("%d\n", Max);
    }
    return 0;
}

时间: 2024-10-31 12:03:26

lines---hdu5124(离散化+数组模拟)的相关文章

Hdu 3887树状数组+模拟栈

题目链接 Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1757    Accepted Submission(s): 582 Problem Description You are given a tree, it’s root is p, and the node is numbered fr

hdu4280 Island Transport(最大流Dinic数组模拟邻接连边)

Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 10716    Accepted Submission(s): 3430 Problem Description In the vast waters far far away, there are many islands. People are l

PAT 甲级 1052 Linked List Sorting (25 分)(数组模拟链表,没注意到不一定所有节点都在链表里)

1052 Linked List Sorting (25 分) A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, y

队列(数组模拟)

//队列(数组模拟) class Queue{ private int[] queue; //队列函数 int length; int head; //头指针 int tail; //尾指针 int num; //丢列中元素个数 public Queue(){ } public Queue(int s){ //构造队列函数 length=s; queue=new int[length]; //s为队列长度 head=0; tail=-1; num=0; } public void inQueue

数组模拟单向链表例题(UVa11988)

指针的链表实现方式是,当前节点的next指向下一个节点,用数组模拟就是 for(int i=next[0];i!=0;i=next[i]) i=next[i]:就是一条链. 例题: 你有一个破损的键盘.键盘上的所有键都可以正常工作,但有时Home键或者End键会自动按下.你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开.当你打开显示器时之后,展现在你面前的是一段悲剧文本.你的任务时在打开显示器之前计算出这段悲剧文本. 输入包含多组数据.每组数据占一行,包含不超过100000个字母

UVA11988 Broken Keyboard (a.k.a. Beiju Text)【数组模拟链表】

Broken Keyboard (a.k.a. Beiju Text) You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem with the keyboard is that sometimes the "home" key or the "end" key gets automatically pressed (inter

用数组模拟栈的结构

package datastruct; import java.util.Arrays; /** * 用数组模拟栈的结构:后进先出(LIFO) 线性表结构 * @author stone * 2014-07-29 06:34:49 */ public class SimulateStack<E> { public static void main(String[] args) { SimulateStack<String> ss = new SimulateStack<Str

数组模拟堆栈的存储方式代码实践

堆栈的模式是先进后出,取出后堆栈中就没有取出的元素了,所以在模拟时候要注意这些问题. 1 import java.util.Arrays; 2 3 /* 4 5 需求:编写一个类使用数组模拟堆栈的存储方式. 6 7 堆栈存储特点: 先进后出,后进先出. 8 9 注意: 不再使用的对象,应该不要让变量指向该对象,要让该对象尽快的被垃圾回收期回收. 10 11 12 */ 13 class StackList{ 14 15 Object[] elements; 16 17 int index = 0

【Weiss】【第03章】练习3.25:数组模拟队列

[练习3.25] 编写实现队列的例程,使用 a.链表 b.数组 Answer: 在这章一开头就已经写了个链表的队列例程了,所以实际上只要做b小题就可以. 数组模拟队列和链表的两点小不同是: ①.数组空间有限,入队需要检测数组是否已经满 ②.数组经过几次操作后,rear可能绕回front前面,所以许多操作都要用模来实现. 测试代码: 1 #include <iostream> 2 #include "queue.h" 3 using namespace std; 4 usin