这道题我改啊,改啊,交啊,就对了。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include<cstring>
  5. #include<algorithm>
  6. using namespace std;
  7. const int N = ;
  8. const int M = ;
  9. int a[N];
  10. int p[M];
  11. int tree[M*],cover[M*];
  12. void Prime()
  13. {
  14. a[] = ;
  15. for (int i=; i<sqrt(N); i++) {
  16. if(a[i]);
  17. else{
  18. for (int j=*i; j<N ;j+=i) {
  19. a[j]=;
  20. }
  21. }
  22. }
  23. }
  24. void down(int i,int l,int r)
  25. {
  26.  
  27. int k;
  28. int mid=(l+r)>>;
  29. if (cover[i] != -)
  30. {
  31. if(l!=r){cover[i<<]=cover[i<<|]=cover[i];
  32. if(!a[cover[i]])k=;
  33. else k=;
  34. tree[i<<]=k*(mid-l+);
  35. tree[i<<|]=k*(r-mid);}
  36. else p[l]=cover[i];
  37. cover[i]=-;
  38. }
  39. }
  40. void build(int rt,int l,int r)
  41. {
  42. if(l==r){
  43. if(!a[p[l]])
  44. tree[rt]=;
  45. else tree[rt]=;
  46. return;
  47. }
  48. int mid=(l+r)>>;
  49. build(rt<<,l,mid);
  50. build(rt<<|,mid+,r);
  51. tree[rt]=tree[rt<<]+tree[rt<<|];
  52. }
  53. void A(int v,int l,int rt,int L,int R)
  54. { down(rt,L,R);
  55. if(L==R){
  56. if(!a[p[l]+=v])
  57. tree[rt]=;
  58. else tree[rt]=;
  59. return;
  60. }
  61.  
  62. int mid=(L+R)>>;
  63. if(l<=mid)A(v,l,rt<<,L,mid);
  64. if(l>mid)A(v,l,rt<<|,mid+,R);
  65. tree[rt]=tree[rt<<]+tree[rt<<|];
  66. }
  67. int Q(int l,int r,int rt,int L,int R)
  68. { down(rt,L,R);
  69. if(L>=l&&R<=r){
  70. return tree[rt];
  71. }
  72. int ans=;
  73.  
  74. int mid=(L+R)>>;
  75. if(l<=mid)ans+=Q(l,r,rt<<,L,mid);
  76. if(r>mid)ans+=Q(l,r,rt<<|,mid+,R);
  77. return ans;
  78. }
  79. void Re(int k,int l,int r,int rt,int L,int R)
  80. {down(rt,L,R);
  81. if(L>=l&&R<=r){
  82. if(!a[k])
  83. tree[rt]=R-L+;
  84. else tree[rt]=;
  85. cover[rt]=k;
  86. return;
  87. }
  88.  
  89. int mid=(L+R)>>;
  90. if(l<=mid)Re(k,l,r,rt<<,L,mid);
  91. if(r>mid)Re(k,l,r,rt<<|,mid+,R);
  92. tree[rt]=tree[rt<<]+tree[rt<<|];
  93. }
  94. int main() {
  95. Prime();
  96. int T,n,m;
  97. scanf("%d",&T);
  98. while(T--)
  99. {
  100. scanf("%d%d",&n,&m);
  101. for(int i=;i<=n;i++)
  102. {
  103. scanf("%d",&p[i]);
  104. }
  105. build(,,n);
  106. memset(cover,-,sizeof cover);
  107. char s[];
  108. while(m--)
  109. {
  110. scanf("%s",s);
  111. if(s[]=='A')
  112. {
  113. int v,l;
  114. scanf("%d%d",&v,&l);
  115. A(v,l,,,n);
  116. //for(int i=1;i<=n;i++)printf("%d ",p[i]);
  117. // puts("");
  118. }
  119. else if(s[]=='Q')
  120. {
  121. int l,r;
  122. scanf("%d%d",&l,&r);
  123. printf("%d\n",Q(l,r,,,n));
  124. //for(int i=1;i<=n;i++)printf("%d ",p[i]);
  125. // puts("");
  126. }
  127. else if(s[]=='R')
  128. {
  129. int x,l,r;
  130. scanf("%d%d%d",&x,&l,&r);
  131. Re(x,l,r,,,n);
  132. // for(int i=1;i<=n;i++)printf("%d ",p[i]);
  133. // puts("");
  134. }
  135. }
  136. }
  137. }

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 10000005;
const int M = 100005;
int a[N];
int p[M];
int tree[M*4],cover[M*4];
void Prime()
{
        a[1] = 1;
        for (int i=2; i<sqrt(N); i++) {
            if(a[i]);
            else{
                for (int j=2*i; j<N ;j+=i) {
                        a[j]=1;
                }
            }
        }
}
void down(int i,int l,int r)
{
    
int k;
int mid=(l+r)>>1;
    if (cover[i] != -1)
    {
        if(l!=r){cover[i<<1]=cover[i<<1|1]=cover[i];
        if(!a[cover[i]])k=1;
        else k=0;
        tree[i<<1]=k*(mid-l+1);
        tree[i<<1|1]=k*(r-mid);}
        else p[l]=cover[i];
        cover[i]=-1;
    }
}
void build(int rt,int l,int r)
{
    if(l==r){
        if(!a[p[l]])
        tree[rt]=1;
        else tree[rt]=0;
        return;
    }
    int mid=(l+r)>>1;
    build(rt<<1,l,mid);
    build(rt<<1|1,mid+1,r);
    tree[rt]=tree[rt<<1]+tree[rt<<1|1];
}
void A(int v,int l,int rt,int L,int R)
{    down(rt,L,R);
    if(L==R){
        if(!a[p[l]+=v])
        tree[rt]=1;
        else tree[rt]=0;
        return;
    }

int mid=(L+R)>>1;
    if(l<=mid)A(v,l,rt<<1,L,mid);
    if(l>mid)A(v,l,rt<<1|1,mid+1,R);
    tree[rt]=tree[rt<<1]+tree[rt<<1|1];    
}
int Q(int l,int r,int rt,int L,int R)
{    down(rt,L,R);
        if(L>=l&&R<=r){
        return tree[rt];
    }
    int ans=0;

int mid=(L+R)>>1;
    if(l<=mid)ans+=Q(l,r,rt<<1,L,mid);
    if(r>mid)ans+=Q(l,r,rt<<1|1,mid+1,R);
    return ans;
}
void Re(int k,int l,int r,int rt,int L,int R)
{down(rt,L,R);    
    if(L>=l&&R<=r){
        if(!a[k])
        tree[rt]=R-L+1;
        else tree[rt]=0;
        cover[rt]=k;
        return;
    }

int mid=(L+R)>>1;
    if(l<=mid)Re(k,l,r,rt<<1,L,mid);
    if(r>mid)Re(k,l,r,rt<<1|1,mid+1,R);
    tree[rt]=tree[rt<<1]+tree[rt<<1|1];    
}
int main() {
    Prime();
     int T,n,m;
     scanf("%d",&T);
     while(T--)
     {
         scanf("%d%d",&n,&m);
         for(int i=1;i<=n;i++)
         {
             scanf("%d",&p[i]);
         }
         build(1,1,n);
        memset(cover,-1,sizeof cover);
         char s[10];
         while(m--)
         {
             scanf("%s",s);
             if(s[0]=='A')
             {
                 int v,l;
                 scanf("%d%d",&v,&l);
                 A(v,l,1,1,n);
                 //for(int i=1;i<=n;i++)printf("%d ",p[i]);
                // puts("");
             }
             else if(s[0]=='Q')
             {
                 int l,r;
                 scanf("%d%d",&l,&r);
                 printf("%d\n",Q(l,r,1,1,n));
                //for(int i=1;i<=n;i++)printf("%d ",p[i]);
                // puts("");
             }
             else if(s[0]=='R')
             {
                 int x,l,r;
                 scanf("%d%d%d",&x,&l,&r);
                 Re(x,l,r,1,1,n);
                // for(int i=1;i<=n;i++)printf("%d ",p[i]);
            //    puts("");
             }
         }
     }   
}

ZOJ 2015 10月份 月赛 3911 Prime Query的更多相关文章

  1. ZOJ 3911 Prime Query ZOJ Monthly, October 2015 - I

    Prime Query Time Limit: 1 Second      Memory Limit: 196608 KB You are given a simple task. Given a s ...

  2. ZOJ 3911 Prime Query(线段树)

    Prime Query Time Limit: 1 Second      Memory Limit: 196608 KB You are given a simple task. Given a s ...

  3. Prime Query (ZOJ 3911 线段树)

    Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...

  4. 143 - ZOJ Monthly, October 2015 I Prime Query 线段树

    Prime Query Time Limit: 1 Second      Memory Limit: 196608 KB You are given a simple task. Given a s ...

  5. ZOJ 5638——Prime Query——————【线段树区间更新,区间查询,单点更新】

    Prime Query Time Limit: 1 Second      Memory Limit: 196608 KB You are given a simple task. Given a s ...

  6. 4分钟apache自带ab压力测试工具使用: 2015.10.4

    2015.10.44分钟apache自带ab压力测试工具使用:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一下部 ...

  7. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  8. First Scrum Meeting (2015/10/18)

    会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...

  9. 2015/10/9 Python核编初级部分学习总结

    终于在十一长假之后的两天看完了<Python核心编程>的初级部分.虽然到后来两章,类和环境看得越来越慢,越来越难以理解.很多东西只能靠强记,也没办法真正掌握了,我想了想,还是不强迫自己去背 ...

随机推荐

  1. 解决oracle_4031错误的方法

    原因分析: 大量的硬解析出现,产生大量小的free chunk突然出现大的sql 1.临时方法 alter system flush shared_pool; 2.共享SQL alter system ...

  2. poj 3608 Bridge Across Islands

    题目:计算两个不相交凸多边形间的最小距离. 分析:计算几何.凸包.旋转卡壳.分别求出凸包,利用旋转卡壳求出对踵点对,枚举距离即可. 注意:1.利用向量法判断旋转,而不是计算角度:避免精度问题和TLE. ...

  3. ar技术序章-SDK介绍和选择

    转自: http://blog.csdn.net/kun1234567/article/details/10402535 ar技术序章-SDK介绍和选择 分类: Augmented Reality20 ...

  4. OGG 单表初始化操作步骤

    有时候ogg两端数据不一致,且数据量较大,手工修改比较复杂的情况下,我们需要对这些表进行初始化.初始化的大概思路是: 1. 停止两端OGG 2. 如果业务不可以停很长时间,就需要配置目标端进程,暂停这 ...

  5. JQuery- 动画与效果

    这几天做网站,刚好用到! 1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[cal ...

  6. [转]3proxy 二级代理配置样例

    转自:http://www.cnblogs.com/airsong23/p/3893094.html 适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, ...

  7. Linux进程管理—信号、定时器

    信号: 1.       信号的作用: 背景: 进程之间通信比较麻烦. 但进程之间又必须通信,比如父子进程之间. 作用: 通知其他进程响应.进程之间的一种通信机制. 信号: 接受信号的进程马上停止,调 ...

  8. web 版发送邮件-已删除

    文章已被删除,如果不便,敬请谅解

  9. iOS UIKit:TabBar Controller

    1 结构剖析 IOS中的标签导航其实是一个UITabBarController对象,其也是一个Container View Controller.UITabBarController对象创建和管理了一 ...

  10. 卸载AMH 5.0面板的具体办法

    安装AMH 5.0面板只有YES.NO和EXIT,和AMH 4.X的安装.卸载.退出有点不同,那么如何卸载AMH 5.0面板呢? 1.root登录ssh 2.输入如下命令: killall php-f ...