zoukankan      html  css  js  c++  java
  • HH的项链

    这题数据增强之后是真让人感觉HH

    LG1972 HH的项链

    改数据之后应该用西安段素或者梳妆十足,然而我也懒得改了,就发一个现在过不了的墨对算fa(然而卡一卡说不定能过)

    一 墨对是什么

    墨对是一个叫莫涛的dalao fa明的,是一种极其暴力的处理区间问题的数据结构(其实分块(逃。

    主要利用了分块

    二 思想

    将询问的区间排序,然后用两个指针X**跳(没了)。

    code

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int maxn = 500010;
    int col[maxn],ans[maxn],sum[1000003],n,m,base,answer;
    int l,r;  
    
    struct Q {
      int left;
      int right;
      int id;
    } ques[maxn]; 
    int q_sum = 0;
    
    bool comp(Q a,Q b) {
      if(a.left/base!=b.left/base)      
        return a.left<b.left;
      else
        return a.right<b.right;                        
    }
    
    inline void add(int x) {          
      if(++ sum[x] == 1) 
            answer ++;
    } 
    
    inline void del(int x) {
      if(-- sum[x] == 0) 
            answer --;
    } 
    
    int main() {
      ios::sync_with_stdio(false);
      cin>>n;
      base=sqrt(n);
      for(int i=1; i<=n; i++)
        cin>>col[i];
      cin>>m;
      for(int i=1; i<=m; i++) {
        cin>>ques[++q_sum].left; 
        cin>>ques[q_sum].right; 
        ques[q_sum].id=q_sum;     
      }
      sort(ques+1,ques+q_sum+1,comp); 
      l = ques[1].left;
      r = l-1; 
      for(int i=1; i<=q_sum; i++) {
        while(l<ques[i].left)
          del(col[l++]);
        while(l>ques[i].left)
          add(col[--l]);
        while(r>ques[i].right)
          del(col[r--]);
        while(r<ques[i].right)
          add(col[++r]);          
        ans[ques[i].id]=answer; 
      }
      for(int i=1; i<=q_sum; i++)
        cout<<ans[i]<<endl;      
      return 0;
    }
  • 相关阅读:
    第三方模块加载时出现XXX运行 提示错误:无法加载文件 C:UsersgxfAppDataRoaming pmXXX.ps1,因为在此系统上禁止运行脚本。
    node模块化
    前端面试集锦
    将字符转换成驼峰表示法
    JavaScript数据处理
    大数据基础整合
    移动端网页特效
    本地存储
    DOM重点核心
    触发器SQL
  • 原文地址:https://www.cnblogs.com/Alarak26/p/9166110.html
Copyright © 2011-2022 走看看