UVA 12532-Interval Product(BIT)
题意:
给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)的更多相关文章
- UVA 12532 Interval Product
线段树水题,忽略每个数的大小,只记住他们的正负即可,规规矩矩的代码.不过这是我第一次完全自己写的一次A的代码了.纪念一下... #include <iostream> #include & ...
- CJOJ 1071 【Uva】硬币问题(动态规划)
CJOJ 1071 [Uva]硬币问题(动态规划) Description 有n种硬币,面值分别为v1, v2, ..., vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为 ...
- UVA 575 Skew Binary (水)
题意:根据这种进制的算法,例如,给你一个左式,要求推出右式.(其实右式就是一个十进制数,根据这种进位的方法来转成特殊进制的数.) 思路:观察转换特点,有点类似于二进制,但是其在后面还减一了.比如25- ...
- UVa 1602 网格动物(回溯)
https://vjudge.net/problem/UVA-1602 题意:计算n连通块不同形态的个数. 思路: 实在是不知道该怎么做好,感觉判重实在是太麻烦了. 判重就是判断所有格子位置是否都相同 ...
- Uva 12627 Erratic Expansion(递归)
这道题大体意思是利用一种递归规则生成不同的气球,问在某两行之间有多少个红气球. 我拿到这个题,一开始想的是递归求解,但在如何递归求解的思路上我的方法是错误的.在研读了例题上给出的提示后豁然开朗(顺便吐 ...
- UVA - 11624 J - Fire! (BFS)
题目传送门 J - Fire! Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the ...
- UVA - 11277 Cyclic Polygons(二分)
题意:已知圆的内接多边形的各个边长,求多边形的面积. 分析: 1.因为是圆的内接多边形,将多边形的每个顶点与圆心相连,多边形的面积就等于被分隔成的各三角形之和. 2.根据海伦公式,任意一个三角形的面积 ...
- uva 11059 maximum product(水题)——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB1QAAAMcCAIAAABo0QCJAAAgAElEQVR4nOydW7msuhKF2wIasIAHJK
- UVa 221城市正视图(离散化)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
随机推荐
- CF 86D Powerful array
离线+分块 将n个数分成sqrt(n)块. 对所有询问进行排序,排序标准: 1. Q[i].left /block_size < Q[j].left / block_size (块号 ...
- Oracle 6 - 锁
Oracle锁没有额外的开销?Oracle的锁是怎么实现的?因为其他数据库,锁都是一种稀有资源和开销. 答:代码级实现?? 没有锁的话,并发更新就会有丢失更新的问题. 悲观锁和乐观锁 悲观锁一般用于有 ...
- JVM基础学习
public class TestJVM { // 运行时数据区[方法区.堆.程序计数器.虚拟机栈.本地方法栈] private static int _1M = 1024 * 1024; publi ...
- [topcoder] EllysNumberGuessing
http://community.topcoder.com/stat?c=problem_statement&pm=12975 简单题 #include <cstdlib> #in ...
- SQL查询(笔记2——实体查询)
SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供 ...
- eclipse 中忽略jsp, xml文件中的报错信息
有的时候, 在eclipse中, jsp, xml 文件时运行的好好的, 可是就是在eclipse中报错, 虽然不影响功能, 但看起来很烦, 去掉这些错误警告的方法是: Windows-Prefere ...
- RedHat6配置yum源 (32位)
由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用, 如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除redhat原有的yum rpm ...
- jQuery 、js 设置 显示隐藏
小问题 jQuery 操作方式: $("#ddl").parent().attr("style", "display:none"); j ...
- mysql 插入汉字 异常 Incorrect string value: '\xE8\xA7\x84\xE5\x88\x99' for column 'name'
今天使用mysql出现 Incorrect string value: '\xE8\xA7\x84\xE5\x88\x99' for column 'name' 异常 通过查找问题,发现是字段编码不支 ...
- JAVA文件中获取路径及WEB应用程序获取路径方法
JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...