zoukankan      html  css  js  c++  java
  • 洛谷 P3901 数列找不同(莫队)

    题目链接:https://www.luogu.com.cn/problem/P3901

    这道题简单莫队模板题,然后$add$和$del$分别处理$vis[]$从$0-->1$和从$1-->0$的情况,用一个$ans$记录,

    最后如果$ans==(R-L+1)$,那么就说明并没有重复的,反之。

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 
     6 using namespace std;
     7 typedef long long ll;
     8 const int N=100005;
     9 int ans,block;
    10 int a[N],vis[N],tot[N];
    11 
    12 struct node{
    13     int l,r;
    14     int id;
    15 }q[N];
    16 
    17 bool cmp(node aa,node bb){
    18     if(aa.l/block==bb.l/block) return aa.r<bb.r;
    19     return aa.l/block<bb.l/block;
    20 }
    21 
    22 void add(int pos){
    23     vis[a[pos]]++;
    24     if(vis[a[pos]]==1) ans++;
    25 }
    26 
    27 void del(int pos){
    28     vis[a[pos]]--;
    29     if(vis[a[pos]]==0) ans--;
    30 }
    31 
    32 int main(){
    33     int n,m;
    34     scanf("%d%d",&n,&m);
    35     block=sqrt(n);
    36     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    37     for(int i=1;i<=m;i++){
    38         scanf("%d%d",&q[i].l,&q[i].r);
    39         q[i].id=i;
    40     }
    41     sort(q+1,q+m+1,cmp);
    42     int L=1,R=0;
    43     for(int i=1;i<=m;i++){
    44         while(L<q[i].l){
    45             del(L);
    46             L++;
    47         }
    48         while(L>q[i].l){
    49             L--;
    50             add(L);
    51         }
    52         while(R<q[i].r){
    53             R++;
    54             add(R);
    55         }
    56         while(R>q[i].r){
    57             del(R);
    58             R--;
    59         }
    60         if(ans==q[i].r-q[i].l+1) tot[q[i].id]=1;
    61     }
    62     for(int i=1;i<=m;i++){
    63         if(!tot[i]) printf("No
    ");
    64         else printf("Yes
    ");
    65     }
    66     return 0;
    67 }
    AC代码
  • 相关阅读:
    Linux ReviewBoard安装与配置
    窗口部件预防式验证
    python-Levenshtein几个计算字串相似度的函数解析
    exactly-once和kafka
    关于回归树的创建和剪枝
    Python神坑:sum和numpy.sum
    Python问题汇总
    ES查询之刨根问底
    安装ES
    KNN手写实践:Python基于数据集整体计算以及排序
  • 原文地址:https://www.cnblogs.com/New-ljx/p/12274083.html
Copyright © 2011-2022 走看看