bzoj 2762: [JLOI2011]不等式组——树状数组
Input
Output
Sample Input
Add 1 1 1
Add -2 4 3
Query 0
Del 1
Query 0
Del 2
Query 0
Add 8 9 100
Query 10
Sample Output
1
0
0
HINT
第1条添加到不等式组的不等式为x+1>1 ,第2条为-2x+4>3 ,所以第1个询问的时候只有第2条不等式可以成立,故输出1。
然后删除第1条不等式,再询问的时候依然是只有第2条不等式可以成立,故输出1。
再删除第2条不等式后,因为不等式组里面没有不等式了,所以没有不等式可以被满足,故输出0。
继续加入第3条不等式8x+9>100 ,当x=k=10时有8*10+9=89<100,故也没有不等式可以被满足,依然输出0。
数据范围:
20%的数据, N<=1000;
40%的数据, N<=10000;
100%的数据,N<=100000,
a,b,c的范围为[-10^8,10^8],k的范围为[-10^6,10^6]。
——————————————————————————————————
这道题有毒QAQ 感觉大佬博客提醒 神犇传送门
这题一堆坑点
1. a可能为0 那么这个时候如果b>c那么x取任意值都有解 否则无解
2. x有两种形式 x>y 或者 x<y
分类讨论之后 x>y的形式为 x>=floor(y)+1 x<y的形式为 x<=ceil(y)-1 这里不要加EPS否则就gg了QAQ
3.x的取值范围可能超过[-1000000,1000000]
4.由于有负数 所以区间修改时左右端点都要加上1000001 若加上1000000则死循环
5.很坑的一点是数据虽然说保证合法但是我们可以无视这句话了…… 有重复删除的不等式 需要记录
那么这些细节处理完之后就是简单的差分辣
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
const int mx=1e6;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,cnt,f[mx];
int s[mx<<|0xffff];
struct pos{int l,r;}q[mx];
char ch[];
pos find(int a,int b,int c){
if(!a){
if(b>c) return (pos){-mx,mx};
else return (pos){,};
}
else if(a>){
int p=floor(double(c-b)/a+);
if(p<-mx) return (pos){-mx,mx};
else if(p>mx) return (pos){,};
return (pos){p,mx};
}
else{
int p=ceil(double(c-b)/a-);
if(p>mx) return (pos){-mx,mx};
else if(p<-mx) return (pos){,};
return (pos){-mx,p};
}
}
int a,b,c;
#define lowbit(x) x&-x
void ins(int x,int v){while(x<=mx*+) s[x]+=v,x+=lowbit(x);}
int query(int x){
int sum=;
while(x) sum+=s[x],x-=lowbit(x);
return sum;
}
void modify(pos x,int s){ins(x.l++mx,s);ins(x.r++mx,-s);}
int main(){
n=read();
for(int i=;i<=n;i++){
scanf("%s",ch);
if(ch[]=='A'){
a=read(); b=read(); c=read();
q[++cnt]=find(a,b,c);
modify(q[cnt],);
}
else if(ch[]=='Q') b=read(),printf("%d\n",query(b+mx+));
else if(ch[]=='D'){
b=read(); if(f[b]) continue;
f[b]=; modify(q[b],-);
}
}
return ;
}
bzoj 2762: [JLOI2011]不等式组——树状数组的更多相关文章
- 【BZOJ2762】[JLOI2011]不等式组 树状数组
[BZOJ2762][JLOI2011]不等式组 Description 旺汪与旺喵最近在做一些不等式的练习.这些不等式都是形如ax+b>c 的一元不等式.当然,解这些不等式对旺汪来说太简单了, ...
- BZOJ 2762: [JLOI2011]不等式组( 平衡树 )
对不等式变形..然后就是维护一些数, 随便找个数据结构都能写吧....用double感觉会有精度误差, 分类讨论把<改成<=了很久后弃疗了, 自己写了个分数体....然后速度就被完爆了.. ...
- BZOJ 1901 Zju2112 Dynamic Rankings ——树状数组套主席树
[题目分析] BZOJ这个题目抄的挺霸气. 主席树是第一时间想到的,但是修改又很麻烦. 看了别人的题解,原来还是可以用均摊的思想,用树状数组套主席树. 学到了新的姿势,2333o(* ̄▽ ̄*)ブ [代 ...
- Codevs 3286 火柴排队 2013年NOIP全国联赛提高组 树状数组,逆序对
题目:http://codevs.cn/problem/3286/ 3286 火柴排队 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : ...
- [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】
题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...
- BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]
题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 ...
- BZOJ.4826.[AHOI/HNOI2017]影魔(树状数组/莫队 单调栈)
BZOJ LOJ 洛谷 之前看\(mjt\)用莫队写了,以为是一种正解,码了3h结果在LOJ T了没A= = 心态爆炸(upd:发现是用C++11(NOI)交的,用C++11交就快一倍了...) 深刻 ...
- bzoj 3262 陌上花开 - CDQ分治 - 树状数组
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- bzoj 2527 Meteors - 整体二分 - 树状数组
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
随机推荐
- BluetoothAdapter解析
这篇文章将会详细解析BluetoothAdapter的详细api, 包括隐藏方法, 每个常量含义. 一 BluetoothAdapter简介 1.继承关系 该类仅继承了Object类; 2.该类作用 ...
- UBUNTU如何安装tar.gz版的flash
adobe flash player的官方下载页面为:https://get.adobe.com/cn/flashplayer/ 不过近期通过APT方式以及ubuntu的软件中心都安装不了flashp ...
- Zigbee安全基础篇Part.1
原文地址: https://www.4hou.com/wireless/14211.html 导语:ZigBee是一种开源无线技术,用于低功耗嵌入式设备(无线电系统).本文探讨了ZigBee协议的可用 ...
- lol人物模型提取(七)
9月13号我就把上了贴图的模型文件发了过去,到9月18号他们那的颜色就上好了,一个叫"3d打印旗舰店"的人加了我微信并拍了几张照片发了给我,效果图如下: 第一眼看上去我还是 ...
- tcp中的发送窗口是啥意思?
初始的三次握手: 02:52:36.585412 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [S], seq 3800457532, win 4369 ...
- 【python】 可迭代对象、迭代器、生成器
可迭代对象 iterable 可直接作用于for循环的对象统称为可迭代对象. 有 list. dict.tuple.set.str等数据类型,还有 generator(包括生成器和带yield的gen ...
- Go语言【第六篇】:Go循环语句
Go语言循环语句 在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句,以下为大多数编程语言循环程序的流程如: Go语言提供了以下几种类型循环处理语句: 循环类型 描述 fo ...
- robot framework连接Oracle错误:ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
在使用robot framework的关键字Connect to Database Using Custom params连接Oracle数据库: Connect to Database Using ...
- Unable to open connection to "Microsoft SQL Server, provider V1.0.5000.0 in framework
解决办法:1 以管理员身份登陆2 找到ORACLE_HOME文件夹(D:\oracle\ora92),点右键,选属性——安全,在组或用户栏中选"Authenticated Users&quo ...
- BZOJ3747:[POI2015]Kinoman——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3747 https://www.luogu.org/problemnew/show/P3582 共有 ...