zoukankan      html  css  js  c++  java
  • [莫队]小B的询问 洛谷P2709

    Description

    P2709
    小B 有一个长为n的整数序列(a),值域为([1,k])
    他一共有m个询问,每个询问给定一个区间([l,r])
    求:(sum_{i=1}^k c_i^2)
    其中 (c_i)
    表示数字 (i)([l,r]) 中的出现次数。
    小B请你帮助他回答询问。

    Solution

    莫队算法板子题 mark

    Code

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <string>
    #include <queue>
    #include <cmath>
    #include <map>
    #include <set>
    #define mem(a,b) memset(a,b,sizeof(a))
    #define debug cout<<0<<endl
    #define ll long long
    const int MAXN = 5e4 + 10;
    const int MOD = 1e9 + 7;
    using namespace std;
    
    struct Q{
        int l, r, k;
    } q[MAXN];
    
    int N, M, K;
    
    int pos[MAXN], a[MAXN], cnt[MAXN];
    ll ans[MAXN];
    ll res;
    
    inline void Add(int n) {
        cnt[a[n]]++;
        res += 2ll*cnt[a[n]] - 1;
    }
    
    inline void Sub(int n) {
        cnt[a[n]]--;
        res -= 2ll*cnt[a[n]] + 1;
    }
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> N >> M >> K;
        int siz = sqrt(N);
        for (int i = 1; i <= N; i++) {
            cin >> a[i];
            pos[i] = i/siz;
        }
        for (int i = 1; i <= M; i++) {
            cin >> q[i].l >> q[i].r;
            q[i].k = i;
        }
        sort(q+1,q+M+1,[](Q x, Q y){
            return pos[x.l] == pos[y.l] ? x.r < y.r : pos[x.l] < pos[y.l];
        });
        int l = 1, r = 0;
        for (int i = 1; i <= M; i++) {
            while (q[i].l < l) Add(--l);
            while (q[i].r > r) Add(++r);
            while (q[i].l > l) Sub(l++);
            while (q[i].r < r) Sub(r--);
            ans[q[i].k] = res;
        }
        for (int i = 1; i <= M; i++) {
            cout << ans[i] << endl;
        }
    
        return 0;
    }
    
  • 相关阅读:
    shell脚本通过ping命令来获取平均延时
    源码大招:不服来战!撸这些完整项目,你不牛逼都难!
    最新最全的 Android 开源项目合集
    3.环境搭建-Hadoop(CDH)集群搭建
    mycat安装和测试
    LVS+keepalived
    Linux上利用NFS实现远程挂载
    CentOS下MySQL主从同步配置
    Nginx配置文件(nginx.conf)配置详解
    Storm集群搭建
  • 原文地址:https://www.cnblogs.com/ez4zzw/p/12705157.html
Copyright © 2011-2022 走看看