深深感到数学差的悲哀、连分类讨论都讨论不全,而且会晕、

所以分类讨论:

分成 大于号和 小于号 两种情况讨论

如果a>0,一定是大于号

如果右边是大于0的小数,那一定是上取整

如果右边是大于0的整数,那一定是+1

如果右边是小于0的小数,那一定是下取整

如果右边是小于0的整数,那一定是+1

如果a<0,一定是小于号

如果右边是大于0的小数,那一定是下取整

如果右边是大于0的整数,那一定是-1

如果右边是小于0的小数,那一定是上取整

如果右边是小于0的整数,那一定是-1

上面是同级的,所以要注意避免包含的情况,

然后abc范围是1e8的只有1e6是有用的,要注意取1e6(不读题TLE好几遍)

因为没有乘法,可以用double来判断是小数还是整数

由于满足的连续性,就可以建树状数组维护前缀和,由于大于和小于的序列是不一样的,所以维护两颗树状数组

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define N 4000006
int f1[N],f2[N];
int cz[N][3],a,b,c,n,cnt;
char ch[999];
int lowbit(int a)
{return (a&(-a));}
int jiady(int a,int qi)
{for(;qi<=3000001;qi+=lowbit(qi)){f1[qi]+=a;}
}
int jiaxy(int a,int qi)
{for(;qi<=3000001;qi+=lowbit(qi)){f2[qi]+=a;}
}
int xwdy(int qi)
{int ans=0;for(;qi>0;qi-=lowbit(qi)){ans+=f1[qi];}   return ans;
}
int xwxy(int qi)
{int ans=0;for(;qi>0;qi-=lowbit(qi)){ans+=f2[qi];}   return ans;
}
int main()
{ int i;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%s",ch);if(ch[0]=='A'){scanf("%d%d%d",&a,&b,&c);++cnt;cz[cnt][0]=1;     if(a==0){if(b>c){cz[cnt][1]=1;jiaxy(1,1); }else cz[cnt][0]=0;        }   if(a<0){double o=double(c-b)/double(a);int lin;if(o==int(o))lin=o-1;else if(o>0)  lin=int(o);
else    if(o<0)lin=int(o-0.99999999);
if(lin>1000000)lin=1000001;
if(lin<-1000000)lin=-1000001;cz[cnt][1]=1500001-lin;jiaxy(1,1500001-lin);          }   if(a>0){double o=double(c-b)/double(a);int lin;if(o==int(o))lin=o+1;
else    if(o>0)  lin=int(o+0.99999999);else    if(o<0)lin=int(o);
if(lin>1000000)lin=1000001;
if(lin<-1000000)lin=-1000001;cz[cnt][2]=1500001+lin;jiady(1,1500001+lin);    }   }if(ch[0]=='D'){scanf("%d",&a);if(cz[a][0]){cz[a][0]=0;if(cz[a][1]>0) {jiaxy(-1,cz[a][1]);    }if(cz[a][2]>0){jiady(-1,cz[a][2]);      }               }   }if(ch[0]=='Q'){scanf("%d",&a);int ans=0;ans+=xwxy(1500001-a);ans+=xwdy(1500001+a);printf("%d\n",ans);}}
}

2017.9.13 不等式组 思考记录相关推荐

  1. 2017.3.13 木棍分割 思考记录

    肯定是二分+dp 但只能想出n^2m dp 感觉每个数字的状态都和前面的数字和有关,但划分是灵活的,可以衍生出多种前缀和的情况. 看了题解,但是:   ..  .一脸懵逼,,代码是还pascal的.. ...

  2. 2017.10.13 硬币游戏 思考记录

    这个题用特征法可以比较好的找到思路 首先这个题有两个特征:1.正+反=反   反+正=反  正+正=正  反+反=正   应该能很快想到亦或 2.范围1e5  +  上限2^60   应该能很快想到倍 ...

  3. 2017.9.13 序列维护 思考记录

    终于不对拍1A线段树了.太不容易了 虽然这题挺裸的,省选福利,记住先乘后加的原则就可以搞了 注意位运算和取模的优先级,不要乱了,注意代码的位置问题 码(发现我的线段树非常瘦): #include< ...

  4. 2017.9.13 序列统计 思考记录

    这题.打表找规律成功的典型,分分钟找到组合数 首先列出展开表,然后找组合数: 要注意的就是连加的组合数可以加起来考虑和,不要老想着对一堆组合数找数字规律, 码: #include<iostrea ...

  5. 2017.7.13 维修数列 思考记录

    这题做了十多天..实在太难调了,而且关键是不知道哪错了.最后还是看的题解. 首先要注意在操作时up,注意在每个旋转区间的时候都有两个up,确保根节点是最新的,不然会出错 还要注意在rotate的时候和 ...

  6. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

  7. 2017.10.7 括号序列 思考记录

    这个题看起来很简单,但细节比较麻烦.参考完别人的代码后才想出自己的解法的.. 一开始认为已匹配的括号是可以直接消的,所以就只维护了两个变量 但还有区间取反.. 由于和已配对的括号的顺序有关,所以不是很 ...

  8. 2017.10.24 上升序列 思考记录

    终于有会做的题了... 一开始想用正常的lis ,然后从前往后扫, 由于最优查询区间在序列上是按顺序单调递增的,所以想记录每个点取哪个值跳到哪,这样是n*m logn的 然后发现既然是单调递增的那直接 ...

  9. 2017.10.10 杀人游戏 思考记录

    这个题题目描述还是有一点问题..这里的知道关系是有传递性的.第一次理解成只会明白直接相连的,最小点覆盖  --   这样就成np了吧.. 所以就比较显然了,,对于每组能互达的强连通分量,都只需一个头上 ...

最新文章

  1. 更换ubuntu软件源的方法
  2. 【OpenKruise v0.9.0】新增 Pod 重启、删除防护等重磅功能
  3. MySQL社区版的下载和安装
  4. 【2017年第1期】基于外卖物流配送大数据的调度系统
  5. BZOJ3592 : Architext
  6. 微信小程序wx.getUserProfile
  7. Eureka整合sidecar异构调用
  8. ffmpeg主要数据结构及其之间的关系
  9. 我的世界 java错误_我的世界error错误信息 应用程序错误解决方法
  10. 算法分析与设计实验报告一——分治算法
  11. 【互亿无线】如何选择国际短信服务商
  12. 开始学习ruby,对此语言的简介
  13. 华为员工标准岗位工资明细及分析
  14. Windows下的SysWow64和System32
  15. C语言,移动鼠标获得当鼠标当前位置坐标
  16. 【C++学习笔记】标准库类型vector
  17. 直通车roi提升优化方法 如何判断直通车权重高低
  18. define的函数用法
  19. 机器学习---降维算法
  20. 美团面试:MySQL 自增主键一定是连续的吗?

热门文章

  1. 红橙Darren视频笔记 面试题 为什么view获取宽高为0 onCreate onResume view.post源码浅析(继承activity api27)
  2. keras报错ValueError: No data provided for XXX
  3. python3函数写文件路径时,怎么写文件路径
  4. WORD中如何添加复选框控件?
  5. WORD如何对标题批量地应用样式?
  6. flask-mail异步发送邮件_Python爬虫系列:用邮件来通知爬虫异常状况
  7. 【python基础知识】写入文件指定编码格式,例如utf-8
  8. 【图像处理基础知识】-混合高斯背景建模
  9. Swagger:Rest API的描述语言
  10. matlab函数用法积累