论逻辑清晰的重要性、

首先大小的关系明摆着是要你建一颗线段树

然后就可以分类讨论了

x没有 y有

x有 y没有

x没有 y没有

x有 y有

对于都没有的情况  只可能是maybe

对于一个没有的情况,只有可能有false和maybe

对于都有的 可能有true maybe false

对于有的直接查询,对于没有的二分查找+1或-1

注意:

l=1,r=n+1

a<=b

y==x视为maybe   ←感觉不科学

码:

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
#define zuo o<<1,l,mid
#define you o<<1|1,mid+1,r
map<int,int>ma;
#define N 100005
int yl[N<<2],a,b,op,c,x,y,dui[N],n,m,i,ans,lin1,lin2,lin3;
void up(int o)
{yl[o]=max(yl[o<<1],yl[o<<1|1]);
}
void jia(int o,int l,int r)
{if(a<=l&&r<=b){if(op==0){yl[o]=c;}else{c=max(c,yl[o]);         }return;}
int mid=(l+r)>>1;
if(a<=mid)jia(zuo);
if(b>mid)jia(you);
up(o);
}
int main()
{int l,r;scanf("%d",&n);for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
ma[x]=i;
dui[i]=x;
a=b=i;
c=y;
jia(1,1,n);
}
dui[n+1]=2147483644;
scanf("%d",&m);
op=1;for(i=1;i<=m;i++){scanf("%d%d",&y,&x);
if(y==x)
{
printf("maybe\n");
}else
if(ma[x]==0&&ma[y]==0)
{printf("maybe\n");
}else
if(ma[x]==0&&ma[y]!=0)
{l=1;r=n+1;while(l<r){int mid=(l+r)>>1;if(dui[mid]>x)r=mid;else  l=mid+1,ans=mid;}x=ans;a=b=ma[y];c=0;jia(1,1,n);lin1=c;a=ma[y]+1;b=x;c=0;if(a<=b)jia(1,1,n);lin2=c;if(lin1<=lin2){printf("false\n");}else{printf("maybe\n");    }
}else if(ma[x]!=0&&ma[y]==0)
{   l=1;r=n+1;while(l<r){int mid=(l+r)>>1;if(dui[mid]>y)r=mid,ans=mid;else  l=mid+1;}y=ans;a=b=ma[x];c=0;jia(1,1,n);lin1=c;a=y;b=ma[x]-1; c=0;
if(a<=b) jia(1,1,n);lin2=c;if(lin1<=lin2){printf("false\n");}else{printf("maybe\n");   }
}else
{c=0;a=b=ma[x];jia(1,1,n);
lin1=c;c=0;a=b=ma[y];jia(1,1,n);
lin2=c;c=0;a=ma[y]+1;b=ma[x]-1;
if(a<=b)    jia(1,1,n);
lin3=c;
if(ma[x]-ma[y]==x-y) if(lin1<lin2&&lin1>lin3&&lin2>lin3)
{printf("true\n");
}       else printf("false\n");
else if(lin1<lin2&&lin1>lin3&&lin2>lin3)
{printf("maybe\n");
}   else printf("false\n");
}}
}

2017.9.28 降雨量 思考记录相关推荐

  1. 2017.10.28 排序 思考记录

    这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...

  2. 2017.10.28 压缩 思考记录

    这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd   = abRRcdcdcdcdR != Ma ...

  3. 2017.9.28 产品加工 思考记录

    很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...

  4. 2017.7.28 愤怒的小鸟 思考记录

    现在来看,这个noip的状压dp就不是很难了 先枚举抛物线(一个确定的,两个确定的) 再对每个抛物线枚举目标,把能打的压在一起 最后扫一遍抛物线,枚举状态出最优解即可 注意此题精度!设成0.00005 ...

  5. 2017.9.5 组合数学 思考记录

    这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...

  6. 2017.9.4 Nim 思考记录

    只要知道nim的结论   这题就是链剖板子题.1A 注意bzoj 的  换行符是     \r!!      \r!!      \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...

  7. 2017.10.6 单词 思考记录

    少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...

  8. 2017.10.5 高速公路 思考记录

    ..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...

  9. 2017.10.1 蚯蚓 思考记录

    现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...

最新文章

  1. sqlite数据库实现字符串查找的方法(instr,substring,charindex替代方案)
  2. 交叉验证和超参数调整:如何优化您的机器学习模型
  3. 小米11全系机型补齐,超大杯压场,但Pro版也不容忽视
  4. 无聊的题目,权当一乐
  5. 研究年轻用户的心理影响排名 Instagram最负面
  6. java通过mysql验证登录注册范例
  7. MySQL 5.7.12新增MySQL Shell命令行功能
  8. 原生js实现图片验证码
  9. java 文件比对(三)-- 使用 xmlUnit
  10. linux修改文件类型和权限
  11. ORACLE的语言从中文修改为英文
  12. IOS 微信端 视频自动播放问题解决方法
  13. OBM-业务高可用性
  14. 2018-2019赛季多校联合新生训练赛第七场补题和题解(中石油)
  15. 【07】函数调用:为什么会发生stack overflow?
  16. 【附源码】计算机毕业设计java在线学习系统的设计与开发设计与实现
  17. 绝地求生体验服服务器修复吗,绝地求生测试服1月24日更新内容 修复滑步
  18. 慕思披露招股书,智慧床垫能成为后来者追赶的助燃剂吗?
  19. 一站到底题库 mysql_MySQL 8 OCP(1Z0-908)认证考试题库原题(第12题)
  20. [hadoop全分布部署]安装Hadoop、配置Hadoop 配置文件①

热门文章

  1. Spark之SparkSQL实战
  2. MapReduce高级编程2
  3. Kotlin学习笔记18 反射Part2
  4. leetcode题目:第 k 个数
  5. mongodb更新操作符$unset
  6. 贪吃蛇博弈算法python_算法应用实践:如何用Python写一个贪吃蛇AI
  7. 三星计算机用户的密码忘了,如果三星计算机忘记了开机密码怎么办
  8. redlock java_分布式Redis的分布式锁Redlock
  9. 服务器摆放需要预留U位么_卧室系列 | 选床+摆放新姿势,提升睡眠品质小技巧...
  10. 照片打印预览正常打印空白_照片打印机怎么挑选 照片打印机的选购技巧分享 - 台式电脑...