差分数组——面对大数据的处理
Posted knightero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了差分数组——面对大数据的处理相关的知识,希望对你有一定的参考价值。
题目链接:https://www.luogu.com.cn/problem/CF1000C
解决思路:
总体上是差分数组,但是可以知道r的上限太大了,我们不能开那么大的数组
解决思路是就记录端点即可,使用map记录
#include <iostream> #include <map> using namespace std; long long int cun[200010]; map<long long int, long long int>num; map<long long int, long long int>::iterator it; int main() { long long int n; long long int l, r; cin >> n; for (int i = 1; i <= n; i++) { cin >> l >> r; num[l]++; num[r + 1]--; }//以上和差分数组完全一致 long long int cnt = 0; it=num.begin(); long long int cmp = it->first; for ( it = num.begin(); it != num.end(); it++)//巧妙之处 {//cnt的计算和差分数组计算次数的方法一样 cun[cnt] += it->first-cmp;//能算出这个点距离上次出现的端点多远了 cmp = it->first; cnt += it->second; } for (int i = 1; i <= n; i++) { if (i != 1)cout << " "; cout << cun[i]; } return 0; }
以上是关于差分数组——面对大数据的处理的主要内容,如果未能解决你的问题,请参考以下文章