码迷,mamicode.com
首页 > 其他好文 > 详细

hoj 经理的烦恼

时间:2014-07-19 23:25:55      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   os   io   for   re   c   

简单树状数组;

模板,,

题目大意,给定N个商店,有初始商品数量.有两种指令,0 x y 表示x位置的商店的商品数量增加y
1 x y 表示查询[x,y]区间内的商品数量为素数的商店的数目..
这里更新的条件就变成去判断更新值是否从非素数变成素数或是从素数变成非素数..
然后对树状数组进行更新..

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int tree[1000010];
bool vis[1000010];
int num[1000010],a;
int qq(int c)
{
    if(c<=1) return 0;
    for(int i=2;i*i<=c;i++)
    {
        if(c%i==0)
            return 0;
    }
    return 1;
}


int Lowbit(int i)
{
    return i&(-i);
}
int show(int x)
{
    int sum=0;
    while(x>0)
    {
        sum+=tree[x];
        x-=Lowbit(x);
    }
    return sum;
}
void yy(int x)
{
    if(qq(num[x]))
    {
        if(!vis[x])
        {
            vis[x]=1;
            while(x<=a)
            {
                tree[x]++;
                x+=Lowbit(x);
            }
        }
    }
    else
    {
        if(vis[x])
        {
            vis[x]=0;
            while(x<=a)
            {
                tree[x]--;
                x+=Lowbit(x);
            }
        }
    }
}
int main()
{
    int b,c;
    int t=0;
    int q,w,e;
    while(scanf("%d %d %d",&a,&b,&c))
    {
        t++;
        if(a==0&&b==0&&c==0)
            break;
        printf("CASE #%d:\n",t);
        for(int i=1;i<=a;i++)
            num[i]=c;
        if(qq(c))
        {
            for(int i=1;i<=a;i++)
            {
                vis[i]=1;
                tree[i]=Lowbit(i);
            }
        }
        else
        {
            memset(tree,0,sizeof(tree));
            memset(vis,0,sizeof(vis));
        }
        for(int i=1;i<=b;i++)
        {
            scanf("%d%d%d",&q,&w,&e);
            if(q==1)
            {
                printf("%d\n",show(e)-show(w-1));
            }
            else
            {
                num[w]+=e;
                yy(w);
            }
        }
        printf("\n");
    }
    return 0;
}

hoj 经理的烦恼,布布扣,bubuko.com

hoj 经理的烦恼

标签:style   os   io   for   re   c   

原文地址:http://blog.csdn.net/asuxiexie/article/details/37968607

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!