ural1846 GCD2010(线段树+gcd+离散化)
来源:互联网 发布:c语言中bind函数 编辑:程序博客网 时间:2024/06/05 05:21
单点修改,相同的数给一个位置,记录出现次数,删为0就改这个点的值为0,第一次出现就改这个点的值为val,因此要离散化,变成单点修改即可。
tips:unique返回值为重复元素的首地址,即不同的数的个数+1
#include <bits/stdc++.h>using namespace std;#define N 100010int n,m,a[N],aa[N],vis[N];bool op[N];struct node{ int x;//x--gcd;}tree[N<<2];inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}inline void build(int p,int l,int r){ tree[p].x=0; if(l==r) return; int mid=l+r>>1; build(p<<1,l,mid); build(p<<1|1,mid+1,r);}inline int gcd(int x,int y){ return y==0?x:gcd(y,x%y);}inline void insert(int p,int l,int r,int x,int val){ if(l==r){ tree[p].x=val;return; } int mid=l+r>>1; if(x<=mid) insert(p<<1,l,mid,x,val); else insert(p<<1|1,mid+1,r,x,val); tree[p].x=gcd(tree[p<<1].x,tree[p<<1|1].x);}int main(){ freopen("a.in","r",stdin); m=read(); for(int i=1;i<=m;i++){ char s[2];scanf("%s",s);aa[i]=a[i]=read(); if(s[0]=='+') op[i]=1; else op[i]=0; } sort(aa+1,aa+m+1);n=unique(aa+1,aa+m+1)-aa-1; build(1,1,n); memset(vis,0,sizeof(vis)); for(int i=1;i<=m;i++){ int x=lower_bound(aa+1,aa+n+1,a[i])-aa; if(op[i]){ if(++vis[x]==1) insert(1,1,n,x,a[i]); } else{ if(--vis[x]==0) insert(1,1,n,x,0); } if(tree[1].x==0) puts("1"); else printf("%d\n",tree[1].x); } return 0;}
阅读全文
0 0
- ural1846 GCD2010(线段树+gcd+离散化)
- 线段树+离散化
- 离散化 + 线段树
- 线段树离散化
- 线段树离散化
- hihoCoder - 1079 - 离散化 (线段树 + 离散化)
- hihoCoder 1079 离散化(线段树离散化)
- HIHO #1079 : 离散化(线段树+离散化)
- PKU 2528 (线段树 + 离散化)
- PKU 3277(线段树 + 离散化)
- PKU 3368(线段树 + 离散化)
- hdu_4325 Flowers(离散化+线段树)
- poj2528 (线段树+离散化)
- poj2528(线段树+离散化)
- ural1019Line Painting(离散化,线段树)
- POJ 2528 (线段树 离散化)
- poj2528(离散化+线段树)
- hdu4288 Coder(线段树+离散化)
- java多线程初探
- java的基础语法(个人总结)
- sublime软件设置整理
- Leetcode-Search Insert Position-Python
- 上层使用jni(从java层到framework到JNI的用法过程)
- ural1846 GCD2010(线段树+gcd+离散化)
- Spring MVC 中图片等静态资源无法加载
- JavaScript数组排序
- HBase伪分布式的搭建
- android arm64硬件实现加速crc32算法
- GPU概念的一点总结
- javaScript:函数
- Ubuntu下MySQL-Python 的安装
- u-boot