zoukankan      html  css  js  c++  java
  • 分块 HDU 1166

    用分块也可以写 

    就分成根号n块

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<set>
    #include<string>
    #include<map>
    
    using namespace std;
    typedef long long LL;
    
    #define inf  2000000000
    #define MAXN 200010
    
    int num[MAXN];
    int en[MAXN];
    
    int main()
    {
    
        int t,ca;
        scanf("%d",&t);
        ca=1;
    
        while(t--)
        {
            int n;
            scanf("%d",&n);
            int sz=(int)sqrt(1.0*n);
            memset(en,0,sizeof(en));
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&num[i]);
                int x=i/sz;
                en[x]+=num[i];
            }
            printf("Case %d:
    ",ca++);
            while(1)
            {
                char s[10];
                scanf("%s",s);
                if(s[0]=='E')
                    break;
                int a,b;
                scanf("%d%d",&a,&b);
                if(s[0]=='Q')
                {
                    int ans=0;
    
                    for(int i=a;i<=b;)
                    {
                        int x=i/sz;
                        if(i%sz==0&&i+sz-1<=b)
                        {
                            ans+=en[x];
                            i+=sz;
                        }
                        else
                        {
                            ans+=num[i];
                            i++;
                        }
                    }
                    printf("%d
    ",ans);
                }
                else if(s[0]=='A')
                {
                    num[a]+=b;
                    int x=a/sz;
                    en[x]+=b;
                }
                else
                {
                    b=-b;
                    num[a]+=b;
                    int x=a/sz;
                    en[x]+=b;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    性能测试相关
    centos7 设置定时器 crond
    大杀器Bitset
    树形DP
    双线程DP
    状态压缩DP
    斜率优化DP
    01分数规划
    二分和三分
    uva11549 Floyd判圈法
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6438163.html
Copyright © 2011-2022 走看看