hdu5124(树状数组+离散化)
2014-11-30 02:10
309 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124
题意:有n条线段,求被覆盖到次数最多的点的次数
分析:
1.可以转化成求前缀和最大的问题:将区间改成左闭右开(即右端点加1),排序,从左往右遍历,若为左端点则加一,右端点则减一。
2.树状数组,离散化一下,然后区间更新,单点查询。
View Code
题意:有n条线段,求被覆盖到次数最多的点的次数
分析:
1.可以转化成求前缀和最大的问题:将区间改成左闭右开(即右端点加1),排序,从左往右遍历,若为左端点则加一,右端点则减一。
2.树状数组,离散化一下,然后区间更新,单点查询。
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> #include <queue> #include <cstdlib> #include <vector> #include <set> #include <map> #define LL long long #define inf 1<<30 #define mod 1000000007 using namespace std; vector <pair<int,int> > v; int main() { int T; scanf("%d",&T); while (T--) { v.clear(); int n; scanf("%d",&n); for (int i = 0; i < n; i++) { int x; scanf("%d",&x); v.push_back(make_pair(x,1)); scanf("%d",&x); v.push_back(make_pair(x + 1,-1)); } sort(v.begin(), v.end()); int ans = 0; int sum = 0; for (int i = 0; i < v.size(); i++) { sum += v[i].second; ans = max(sum,ans); } printf("%d\n",ans); } }
View Code
相关文章推荐
- HDU5792(离散化+树状数组求逆序数)树状数组求逆序深入讲解
- poj-2299-Ultra-QuickSort-(树状数组and离散化)
- HDU 5654 (树状数组 离散化)
- poj2299 Ultra-QuickSort(离散化+树状数组求逆序数)
- POJ 2299 Ultra-QuickSort(树状数组+离散化 或 归并排序求逆序)
- 【树状数组--求逆序数(离散化)】poj2299 Ultra-QuickSort
- 洛谷2448 无尽的生命[树状数组 离散化]
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- CodeForces 459D Pashmak and Parmida's problem 树状数组 + 离散化
- Codeforces 652D Nested Segments【离散化+思维+树状数组】
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- lines---hdu5124(离散化+数组模拟)
- 树状数组--求逆序对-离散化
- 离散化+树状数组求逆序数
- hdu_2227_Find the nondecreasing subsequences_树状数组,离散化
- HDU 4605 Magic Ball Game(可持续化线段树,树状数组,离散化)
- Turing Tree(树状数组+离散化)
- 南阳oj _600花儿朵朵(树状数组插线问点+坐标离散化)
- poj 2299 离散化+树状数组求逆序数
- POJ(2761)Feed the dogs (树状数组+离散化+贪心)