bzoj2762-[JLOI2011]不等式组
求 \(x=k\) 时满足一元一次不等式 \(ax+b<c\) 的个数.
解出 \(\frac{c-b}{a}\) 之后取整,得到合法区间,用树状数组维护.
注意 \(a\) 的值域是 \([-10^9,10^8]\) , \(k\) 的值域是 \([-10^6,10^6]\) . 需要特判范围外的部分.
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
using namespace std;
#define rep(i,l,r) for(register int i=(l);i<=(r);++i)
#define repdo(i,l,r) for(register int i=(l);i>=(r);--i)
#define il inline
typedef double db;
typedef long long ll;
//---------------------------------------
const int vsz=2e6+20;
int nmax=2e6+16;
int bit[vsz];
#define lb(v) (v&(-v))
void add(int p,int v){while(p<=nmax)bit[p]+=v,p+=lb(p);}
void addr(int l,int r,int v){add(l,v);add(r+1,-v);}
int que(int p){int res=0;while(p)res+=bit[p],p-=lb(p);return res;}
const int nsz=1e5+10;
int ninf=1e6+3,line[nsz][2],pl=0;
int tr(int v){return v+1e6+5;}
void insert(int a,int b,int c){
int l,r;
if(a==0){
if(b<=c)l=ninf,r=-ninf;
else l=-ninf,r=ninf;
}
else if(a>0){
l=floor((db)(c-b)/a)+1,r=ninf;
}
else{
l=-ninf,r=ceil((db)(c-b)/a)-1;
}
l=max(l,-ninf),r=min(r,ninf);
if(r<-ninf||l>ninf)l=ninf,r=-ninf;
line[++pl][0]=l,line[pl][1]=r;
if(l!=ninf)addr(tr(l),tr(r),1);
}
void del(int p){
if(line[p][0]==ninf&&line[p][1]==-ninf)return;
addr(tr(line[p][0]),tr(line[p][1]),-1);
line[p][0]=ninf,line[p][1]=-ninf;
}
int query(int p){
return que(tr(p));
}
int n;
char s[150];
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>n;
int a,b,c;
rep(i,1,n){
cin>>s;
if(s[0]=='A'){
cin>>a>>b>>c;
insert(a,b,c);
}
else if(s[0]=='D'){
cin>>a;
del(a);
}
else{
cin>>a;
cout<<query(a)<<'\n';
}
}
return 0;
}
bzoj2762-[JLOI2011]不等式组的更多相关文章
- 【BZOJ2762】[JLOI2011]不等式组 树状数组
[BZOJ2762][JLOI2011]不等式组 Description 旺汪与旺喵最近在做一些不等式的练习.这些不等式都是形如ax+b>c 的一元不等式.当然,解这些不等式对旺汪来说太简单了, ...
- BZOJ 2762: [JLOI2011]不等式组( 平衡树 )
对不等式变形..然后就是维护一些数, 随便找个数据结构都能写吧....用double感觉会有精度误差, 分类讨论把<改成<=了很久后弃疗了, 自己写了个分数体....然后速度就被完爆了.. ...
- 【做题记录】 [JLOI2011]不等式组
P5482 [JLOI2011]不等式组 超烦人的细节题!(本人调了两天 QAQ ) 这里介绍一种只用到一只树状数组的写法(离线). 树状数组的下标是:所有可能出现的数据进行离散化之后的值. 其含义为 ...
- bzoj 2762: [JLOI2011]不等式组——树状数组
旺汪与旺喵最近在做一些不等式的练习.这些不等式都是形如ax+b>c 的一元不等式.当然,解这些不等式对旺汪来说太简单了,所以旺喵想挑战旺汪.旺喵给出一组一元不等式,并给出一个数值 .旺汪需要回答 ...
- 【BZOJ2762】[JLOI2011]不等式组(树状数组)
题目: BZOJ2762 分析: 加入的不等式分三种情况 当\(a>0\),可以变成\(x>\lfloor \frac{c-b}{a}\rfloor\) 当\(a=0\),若\(b> ...
- 【Luogu】 P5482 [JLOI2011]不等式组 题解
本来以为有多难,结果发现是道树状数组水题... 显然,对于每一个添加的不等式,有3种情况: \(a<0\) .此时可转换为 $x < {{a} \over {c-b}} $ . 但是,我们 ...
- BZOJ2801/洛谷P3544 [POI2012]BEZ-Minimalist Security(题目性质发掘+图的遍历+解不等式组)
题面戳这 化下题面给的式子: \(z_u+z_v=p_u+p_v-b_{u,v}\) 发现\(p_u+p_v-b_{u,v}\)是确定的,所以只要确定了一个点\(i\)的权值\(x_i\),和它在同一 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学
题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...
随机推荐
- nrf2401 - 最廉价的2.4G无线通信方案
所有的使用Arduino 的朋友大多都会知道大名鼎鼎的XBee 这个土豪级的ZigBee 的通信模块.我们是做产品开发的,对于XBee这个产品可谓是又爱又恨,不得不承认他确实是一个好货,从做工到功能都 ...
- Maven 安装和配置
一.Maven 简介 Maven 是一个强大的Java项目构建工具,类似.NET中的NuGet ,Node.js的NPM. 正如nuget.org ,Maven有一个中央仓库 maven.org,可以 ...
- H5 16-并集选择器
16-并集选择器 我是标题 我是段落 我是段落 我是段落 <!DOCTYPE html> <html lang="en"> <head> < ...
- NYOJ-16-矩形嵌套 记忆化搜索
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...
- group by用法
select * from Table group by id,一定不能是*,而是某一个列或者某个列的聚合函数. 参考:http://www.cnblogs.com/jingfengling/p/59 ...
- git更新提交代码常用命令
git pull 拉取代码 git add -A 提交所有变化(包括删除.新增.修改) git commit -m "注释" 本地仓库提交 git push origin mast ...
- iOS基于B站的IJKPlayer框架的流媒体探究
阅读数:6555 学习交流及技术讨论可新浪微博关注:极客James 一.流媒体 流媒体技术从传输形式上可以分为:渐进式下载和实施流媒体. 1.渐进式下载 它是介于实时播放和本地播放之间的一种播放方式, ...
- mysql 中Varchar 与char的区别
一.字符与字节与编码关系 ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制.最 ...
- 记第一次多用户在Git提交代码
今天第一次进行了多用户(其实就两人)在自建Git服务器提交代码. 先记录碰到的问题:首先是本地提交代码时,进行了add,commit后,在push时碰到服务器故障,待设置好服务器后,再push时,却p ...
- Python_内置函数之zip
zip函数用于将可迭代的对象作为参数,将对象中的元素打包成一个个元祖,然后返回这些元祖组成的列表.如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同. l1 = [1, 2, 3] l2 ...