题意:

给n个数字的序列,C v p 把v位上的数字置成p , S l r代表求区间[l,r]各数字相乘得数的符号,对于每个S输出所得符号(’+‘,’-‘,’0‘)

分析:

开两个数组表示区间负数的个数、0的个数、当数字被改时,更新数组、查询时区间含0符号是0,再根据负数的个数的奇偶判断。

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define read freopen("in.txt", "r", stdin)
#define N 100010
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
int zero[N],neg[N],n,m,a[N];
int sumn(int x){
int num=;
while(x>){
num+=neg[x];
x-=(x&(-x));
}
return num;
}
int sumz(int x){
int num=;
while(x>){
num+=zero[x];
x-=(x&(-x));
}
return num;
}
void add_init(int x){
if(a[x]<=){
int tmp=a[x];
while(x<=n){
if(tmp==)
zero[x]+=;
else
neg[x]+=;
x+=(x&(-x));
}
}
}
void add(int x,int d){
int tmp;
if(a[x]>){
a[x]=d;
if(d<=){
while(x<=n){
if(d<)
neg[x]+=;
else
zero[x]+=;
x+=(x&(-x));
}
}
}
else if(a[x]==){
a[x]=d;
if(d!=){
while(x<=n){
zero[x]-=;
if(d<)neg[x]+=;
x+=(x&(-x));
}
}
}
else{
a[x]=d;
if(d>=){
while(x<=n){
neg[x]-=;
if(d==)zero[x]+=;
x+=(x&(-x));
}
}
}
}
int main()
{
char op[];
string s;
while(~scanf("%d%d",&n,&m)){
s="";
memset(neg,,sizeof(neg));
memset(zero,,sizeof(zero));
int b;
for(int i=;i<=n;++i){
scanf("%d",&a[i]);
add_init(i);
}
/*for(int i=1;i<=n;++i)
cout<<sumn(i)<<" "<<sumz(i)<<endl;*/
int p,v;
while(m--){
scanf("%s%d%d",op,&p,&v);
if(op[]=='C'){
add(p,v);
}
else{
int tmp1=sumn(v)-sumn(p-);
int tmp2=sumz(v)-sumz(p-);
if(tmp2>)
s+='';
else{
if(tmp1%)
s+='-';
else s+='+';
}
}
}
cout<<s<<endl;
}
return ;
}

UVA 12532-Interval Product(BIT)的更多相关文章

  1. UVA 12532 Interval Product

    线段树水题,忽略每个数的大小,只记住他们的正负即可,规规矩矩的代码.不过这是我第一次完全自己写的一次A的代码了.纪念一下... #include <iostream> #include & ...

  2. CJOJ 1071 【Uva】硬币问题(动态规划)

    CJOJ 1071 [Uva]硬币问题(动态规划) Description 有n种硬币,面值分别为v1, v2, ..., vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为 ...

  3. UVA 575 Skew Binary (水)

    题意:根据这种进制的算法,例如,给你一个左式,要求推出右式.(其实右式就是一个十进制数,根据这种进位的方法来转成特殊进制的数.) 思路:观察转换特点,有点类似于二进制,但是其在后面还减一了.比如25- ...

  4. UVa 1602 网格动物(回溯)

    https://vjudge.net/problem/UVA-1602 题意:计算n连通块不同形态的个数. 思路: 实在是不知道该怎么做好,感觉判重实在是太麻烦了. 判重就是判断所有格子位置是否都相同 ...

  5. Uva 12627 Erratic Expansion(递归)

    这道题大体意思是利用一种递归规则生成不同的气球,问在某两行之间有多少个红气球. 我拿到这个题,一开始想的是递归求解,但在如何递归求解的思路上我的方法是错误的.在研读了例题上给出的提示后豁然开朗(顺便吐 ...

  6. UVA - 11624 J - Fire! (BFS)

    题目传送门 J - Fire! Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the ...

  7. UVA - 11277 Cyclic Polygons(二分)

    题意:已知圆的内接多边形的各个边长,求多边形的面积. 分析: 1.因为是圆的内接多边形,将多边形的每个顶点与圆心相连,多边形的面积就等于被分隔成的各三角形之和. 2.根据海伦公式,任意一个三角形的面积 ...

  8. uva 11059 maximum product(水题)——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB1QAAAMcCAIAAABo0QCJAAAgAElEQVR4nOydW7msuhKF2wIasIAHJK

  9. UVa 221城市正视图(离散化)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

随机推荐

  1. 由CHAR(2)引发的BUG

    我们在设计数据库标志位字段时,为考虑其扩展性,一般会设置为CHAR(2),例如 FLAG CHAR(2),这样我们就需要注意了,如果你给字段 FLAG赋值为‘0’,它在数据库中的真实情况是‘0+空格’ ...

  2. Eclipse 编译错误 Access restriction:The type *** is not accessible due to restriction on... 解决方案

    报错: Access restriction:The type JPEGCodec is not accessible due to restriction on required library C ...

  3. 区间dp笔记√

    区间DP是一类在区间上进行dp的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维. 然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两 ...

  4. 目标检测的图像特征提取之(二)LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像年提出,用于纹理特征提取.而且,提取的特征是图像的局部的纹理特征: 1.LBP特征的描述 原始的LBP算子定义为在3* ...

  5. ibatis框架的sqlmapclient接口

    SqlMapClient,是iBatis中的重要接口,这个接口涉及到对SQL映射的执行和批处理. 现在,就先了解它的对query开头方法的定义. 首先是 queryForList 方法: //指定SQ ...

  6. Xamarin.Android 入门之:Xamarin快速入门

    一. 准备工作 1.新建一个项目取名为phoneword 2.在项目创建好之后,让我们展开“Resources”文件夹然后找到并打开该文件夹下的“layout”文件夹,双击main.axml在Andr ...

  7. *Linux之rm命令

    自己瞅: [root@winner ~]# rm --help//rm-->remove用法:rm [选项]... 文件... 删除 (unlink) 文件. -f, --force 强制删除. ...

  8. python脚本实例001 - 通过列表内容判断输入输出信息

    要点总结: 输入输出方法,input().print()方法 list列表应用,list是一种有序的集合,可以随时添加和删除其中的元素. 条件语句if-else应用 #! /usr/bin/pytho ...

  9. jQuery选择器最佳实践--来自jQ官网

    1.基于ID选择器进行查询,并且使用find方法. //快速 $("#container div.footer"); //超快 $("#container"). ...

  10. apk反编译(4)Smali代码注入

    转自 : http://blog.sina.com.cn/s/blog_5674d18801019i89.html 应用场景 Smali代码注入只能应对函数级别的移植,对于类级别的移植是无能为力的.具 ...