HIT 1867 经理的烦恼

点击打开HIT 1867

思路: 树状数组
分析:
1 题目要求的是给定一个区间求这个区间质数的个数
2 题目给定n条命令和每个店的初始的值,那么我们初始化的时候就要通过判断给定的初始值是否为质数来初始化
3 因为要求的是质数的个数,那么我们可以这么想,假设现在改变了店铺x的值,那么我们通过判断前后是否是质数的关系来更新树状数组
4 求区间的质数的个数的时候直接求即可

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 1000010;

int n , val;
int num[MAXN];
int treeNum[MAXN];

int lowbit(int x){
    return x&(-x);
}

int getSum(int x){
    int sum = 0;
    while(x){
         sum += treeNum[x];
         x -= lowbit(x);
    }
    return sum;
}

void add(int x , int val){
    while(x < MAXN){
         treeNum[x] += val;
         x += lowbit(x);
    }
}

// 注意判断质数的写法
bool isPrime(int x){
    if(x <= 1)
        return false;
    if(x == 2)
        return true;
    int tmp = sqrt(x);
    for(int i = 2 ; i <= tmp ; i++)
        if(x%i == 0)
            return false;
    return true;
}

void init(){
    int x = 0;
    if(isPrime(val))
        x = 1;
    memset(treeNum , 0 , sizeof(treeNum));
    for(int i = 1 ; i <= n ; i++){
        num[i] = val;
        add(i , x);
    }
}

void solve(int mark , int x , int y){
    if(mark == 1){
        int ans = getSum(y);
        ans -= getSum(x-1);
        printf("%d\n" , ans);
    }
    else{
        int tmp = num[x];
        num[x] += y;
        if(isPrime(num[x])){
            if(!isPrime(tmp))
               add(x , 1);
        }
        else{
            if(isPrime(tmp))
               add(x , -1);
        }
    }
}

int main(){
    int cas = 1;
    int m , mark;
    int x , y;
    while(scanf("%d%d%d" , &n , &m , &val) &&n+m+val){
         init();
         printf("CASE #%d:\n" , cas++);
         while(m--){
              scanf("%d%d%d" , &mark , &x , &y);
              solve(mark , x , y);
         }
         puts("");
    }
    return 0;
}
时间: 2024-09-21 07:15:41

HIT 1867 经理的烦恼的相关文章

树状数组专题【完结】

1 国外的论文点击打开链接 2 我的总结点击打开链接 任何能够造成树状数组下表为0的操作都会使得程序TLE,这是个很重要的地方! 第一题 poj 2299 Ultra-QuickSort 点击打开poj 2299 思路: 离散化+树状数组 分析: 1 题目的意思就是要求逆序数对 2 题目的输入个数有500000的规模但是每个数的最大值为999999999,因此我们需要离散化这些数据 3 对于数据9 1 0 5 4我们离散化成5 2 1 4 3 那么对于输入一个树a[i]我们去求一下它的离散化后的

你在为不能雇到一名优秀的产品经理烦恼吗?

我在一个初创公司干招聘已经有段时间了,当然,在初创公司招人跟在大公司那肯定是相当不一样的.当初在Yahoo! Search ,那感觉就好像我们总是在招人.每周,我都要做5-8个面试.就像是有永无止境的简历,面试和录用协议.但是现在我不再在做招聘经理了.在工作的时候,我们也就只招聘很少的几个产品经理.虽然公司也总在招聘,但我经常是面试团队的成员.在大公司,你首先可以注意到的就是团队之间的分工很细致.但是在初创公司,大家都要或多或少去做各种事情,所以你需要的是成为一名全能手.而更重要的是,未来是难以

夏季机房,IT经理如何确保安全运维?

  据新华社电,近期暴雨侵袭全国,21个省份遭遇洪涝灾害,已致33人死亡.14人失踪.昨日6时,河北省气象台继续发布暴雨蓝色预警,预计承德中南部.唐山.秦皇岛.廊坊等多地区有大雨,局部有暴雨,为防止城市内涝.中小河流洪水和山洪地质灾害,提醒相关部门及广大群众做好防御工作.显然,进入盛夏极端多变性的天气,已向人们拉响了预警. 面对多变性天气,企业IT机房和数据中心同样面临管理.安全等多方面考验.而随着信息化技术迅猛发展,中国已经成为全球数据中心.4月17日,亚马逊Cloud Drive云存储河北廊

设计之外:产品经理真的那么重要吗

文章描述:产品经理是炮灰. 前些日子有篇网文,鼓吹产品经理的重要性,几乎夸上了天.有人评论道:"是为了争取加薪吗?"一语中的. 重要个毛线.依我看,都是炮灰. 一个人能取得多大的成功,取决于两点:1.他有多少才华与热情,2.这些才华和热情是否能战胜环境中的困难.很遗憾,摆在产品经理面前的障碍大部分是不可战胜的. 在这篇文章里,我们只讲靠谱的产品经理,不讲不靠谱的. 不论PM靠不靠谱,都分为两种,或者在大中型公司工作,或者在小型公司(创业团队)工作.环境障碍各自不同.先说前者.在大中型公

优秀IT项目经理的基本要求

摘要: IT行业已经发展了几十年,但如何成为一个优秀的IT项目经理?这个问题还在困扰着很多人.本文结合自己的实践经验和理论研究,针对中国国情,论述了IT项目经理基础知识体系的重要性,指出了IT项目经理应具备的知识体系和个性特征. 关键字:软件 项目经理 知识体系 能力 成熟度 一.PMBOK与项目管理能力的关系 本节对于项目管理资深人士属于啰嗦,但笔者慎重思考后还是认为有必要啰嗦几句,因为错误的观念依然在传播,毒害不知真相的人.只有让正确的观点流行传播,让大家了解真相,才能少走弯路,减少错误,使

产品经理其实都是炮灰

前些日子有篇网文,鼓吹产品经理的重要性,几乎夸上了天.有人评论道:"是为了争取加薪吗?"一语中的. 重要个毛线.依我看,都是炮灰. 一个人能取得多大的成功,取决于两点:1.他有多少才华与热情,2.这些才华和热情是否能战胜环境中的困难.很遗憾,摆在产品经理面前的障碍大部分是不可战胜的. 在这篇文章里,我们只讲靠谱的产品经理,不讲不靠谱的. 不论PM靠不靠谱,都分为两种,或者在大中型公司工作,或者在小型公司(创业团队)工作.环境障碍各自不同.先说前者.在大中型公司里,PM要做什么,甚至于怎

为什么要当项目经理

从程序员到项目经理,这个标题让我想起了很久以前一本书的名字<从Javascript到Java>.然而,从Javascript到Java充其量只是工具的更新,而从程序员到项目经理,却是一个脱胎换骨的过程.从Javascript到Java,是一个取巧的方法:而从程序员到项目经理,却并无捷径可走,必须从内而外的改变和提升. 一.为什么要当项目经理 1. 问题本质 如果我对一个老程序员说:有必要转项目经理啦,很多人第一反应是为什么一定要当项目经理?!,反问很给力,基至会让人哑口无言.但反问成功的结果可

总结产品经理中会经常犯的错误

看我的身边,看我的朋友,看我的同事,再看看我们这个并不成熟的圈子,我发现优秀的产品经理总归是很少.而且他们也要等犯完了所有应该犯的错误,然后才变得牛逼起来. 在反思我做产品经理的漫长历程的时候,我把我以前犯过的错误,把后来带人的所见,还有与朋友聊天时的所闻,全部都列出来,用来让大家各自警醒. 1.想当然. 这个就是产品经理经常所犯的最大错误了.当我们接到一个需求,然后我们想了想,就认为自己想的就是对的.因为我们用过太多同类产品,也想过很多类似的事情,等等.虽然我们也想去做市场调查,但漫长而经常不

中投挺进大宗商品市场缺投资型人才被视为成长的烦恼

踩着经济复苏的节拍,中国主权财富基金--中国投资有限责任公司(简称中投)最近频频出手.21日,亚洲最大的农产品.大宗工业原料供应商之一来宝集团公告称,中投将以8.5亿美元的总价格收购该公司12.91%的股权.专家分析,中投最新的举动将扩大中国在全球大宗商品市场的布局. 中投出手大宗商品 来宝集团在21日发布的公告中称,集团将通过私人配售方式,以每股2.1137新元的价格向中投出售5.73亿股股票,这笔交易的总价约为8.5亿美元.此次售股中,4.38亿股为新发行股,另有1.35亿股来自与集团创始人