• 莫队板子,例题


    https://www.luogu.org/problemnew/show/P1494

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int M=5e4+4;
     5 struct node{
     6     int l,r,pos,id;
     7     bool operator <(const node &x){
     8         if(x.pos==pos)
     9             return r<x.r;
    10         else
    11             return pos<x.pos;
    12     }
    13 }b[M];
    14 ll a[M],ANSzi[M],ANSmu[M],cnt[M],flag[M];
    15 int main(){
    16     int n,m;
    17     scanf("%d%d",&n,&m);
    18     for(int i=1;i<=n;i++)
    19         scanf("%lld",&a[i]);
    20     int N=(int)sqrt(n);
    21     for(int i=1;i<=m;i++){
    22         scanf("%d%d",&b[i].l,&b[i].r);
    23         b[i].pos=(b[i].l-1)/N+1;
    24         b[i].id=i;
    25     }
    26     sort(b+1,b+1+m);
    27     int l=1,r=0;
    28     ll ans=0;
    29     for(int i=1;i<=m;i++){
    30         if(b[i].l==b[i].r){
    31             flag[b[i].id]=1;
    32             continue;
    33         }
    34     //    cout<<"*********"<<b[i].id<<"*********"<<endl;
    35         while(l>b[i].l)
    36             l--,ans+=cnt[a[l]],cnt[a[l]]++;
    37     //    cout<<ans<<endl;
    38         while(r<b[i].r)
    39             r++,ans+=cnt[a[r]],cnt[a[r]]++;
    40     //    cout<<ans<<endl;
    41         while(l<b[i].l)
    42             ans-=cnt[a[l]]==0?0:cnt[a[l]]-1,cnt[a[l]]--,l++;
    43     //    cout<<ans<<endl;
    44         while(r>b[i].r)
    45             ans-=cnt[a[r]]==0?0:cnt[a[r]]-1,cnt[a[r]]--,r--;
    46     //    cout<<ans<<endl;
    47         ANSzi[b[i].id]=ans,ANSmu[b[i].id]=(b[i].r-b[i].l+1)*1ll*(b[i].r-b[i].l)*1ll/2;
    48     //    cout<<"l==="<<l<<"r==="<<r<<endl;
    49     //    cout<<ans<<endl;
    50     }
    51     for(int i=1;i<=m;i++){
    52         if(flag[i]==1||ANSzi[i]==0){
    53             printf("0/1
    ");
    54             continue;
    55         }
    56         int sign=__gcd(ANSzi[i],ANSmu[i]);
    57         printf("%lld/%lld
    ",ANSzi[i]/sign,ANSmu[i]/sign);
    58         
    59     }
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    讯时新闻系统再探
    三顾讯时对讯时新闻发布系统的艰难突破
    MsSQL注入猜解数据库技术
    提取中国IP段信息
    翻译杂感 via刘未鹏
    学习密度与专注力
    Cross Compilation Toolchains
    RHEL/CentOS 6.0使用第三方软件库(EPEL与RPMForge、RPMFusion软件库)
    一个很好的shell配置文件
    Cloud Computing
  • 原文地址:https://www.cnblogs.com/starve/p/10859788.html
Copyright © 2020-2023  润新知