zoukankan      html  css  js  c++  java
  • 【洛谷3948】数据结构

    题面

    分析

    看着数据规模很大,实际上Q只有1000组,后面都是无修改的询问了。

    于是考虑到差分区间修改,可以达到O(1)的效率,而每次查询的时候再O(N)计算差分数组的前缀和即可。

    对于后面不带修改的询问,只需要O(N)维护前缀和

    时间复杂度O(N*Q)。其实感觉就是个暴力qvq

    代码

    1. #include<bits/stdc++.h>  
    2. using namespace std;  
    3. #define N 800080  
    4. #define ll long long  
    5. ll minx,maxx,mod,n,q,l,r,x,ans,now,final;  
    6. char op[10];  
    7. ll a[N],c[N],sum[N];  
    8. template<class T>  
    9. inline void read(T &x)  
    10. {  
    11.     x=0;ll f=1;static char c=getchar();   
    12.     while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}  
    13.     while(c>='0'&&c<='9'){x=x*10+c-'0',c=getchar();}  
    14.     x*=f;  
    15. }  
    16. int main()  
    17. {  
    18.     read(n);read(q);read(mod);read(minx);read(maxx);  
    19.     while(q--)  
    20.     {  
    21.         scanf("%s",op);  
    22.         if(op[0]=='A')  
    23.         {  
    24.             read(l),read(r),read(x);  
    25.             c[l]+=x;c[r+1]-=x;  
    26.         }  
    27.         else  
    28.         {  
    29.             ans=0;now=0;  
    30.             read(l);read(r);  
    31.             for(ll i=1;i<=r;i++)  
    32.             {  
    33.                 now+=c[i];  
    34.                 if(i>=l&&(now*i)%mod>=minx&&(now*i)%mod<=maxx)  
    35.                     ans++;  
    36.             }     
    37.             printf("%lld ",ans);  
    38.         }  
    39.     }  
    40.     read(final);  
    41.     for(ll i=1;i<=n;i++)  
    42.     {  
    43.         a[i]=a[i-1]+c[i];  
    44.         if((a[i]*i)%mod>=minx&&(a[i]*i)%mod<=maxx)sum[i]=sum[i-1]+1;  
    45.         else sum[i]=sum[i-1];  
    46.     }  
    47.     while(final--)  
    48.     {  
    49.         read(l);read(r);  
    50.         printf("%lld ",sum[r]-sum[l-1]);  
    51.     }  
    52.     return 0;  
    53. }   
  • 相关阅读:
    git命令使用方法
    git与svn对比
    浏览器缓存原理
    网络性能优化常用方法
    sass/scss 和 less的区别
    AngularJS和ReactJS对比
    让IE6,7,8支持HTML5新标签的方法
    Retina 屏移动设备 1px解决方案
    HttpClient学习
    国家二字码对照表
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9852916.html
Copyright © 2011-2022 走看看