LINK:Greater and Greater

确实没能想到做法。

考虑利用bitset解决问题。

做法是:逐位判断每一位是否合法 第一位 就是 bitset上所有大于\(b_1\)的位置 置为1.

那么右移一位就得到下次判断的东西 然后 处理处相应>=\(b_2\)的东西 然后再&一下。

这样复杂度为\(\frac{nm}{w}\) w取64 所以可以通过.

不过值得一提的是 预处理的那个东西不能全部预处理出来 因为这样做 空间复杂度是\(\frac{nm}{w}\)的会爆掉。

直接维护\(ans_i\)表示以i开头是否合法 那么对于每次一个p位置的判定 所有为1的位置得到之后我们能反推出以某个位置为起点的是合法的 &一下即可。

这样就不需要那么大空间了。

code
  1. //#include<bits\stdc++.h>
  2. #include<iostream>
  3. #include<iomanip>
  4. #include<cstdio>
  5. #include<cstring>
  6. #include<string>
  7. #include<ctime>
  8. #include<cmath>
  9. #include<cctype>
  10. #include<cstdlib>
  11. #include<queue>
  12. #include<deque>
  13. #include<stack>
  14. #include<vector>
  15. #include<algorithm>
  16. #include<utility>
  17. #include<bitset>
  18. #include<set>
  19. #include<map>
  20. #define ll long long
  21. #define db double
  22. #define INF 10000000000000000ll
  23. #define ldb long double
  24. #define pb push_back
  25. #define put_(x) printf("%d ",x);
  26. #define get(x) x=read()
  27. #define gt(x) scanf("%d",&x)
  28. #define gi(x) scanf("%lf",&x)
  29. #define put(x) printf("%d\n",x)
  30. #define putl(x) printf("%lld\n",x)
  31. #define gc(a) scanf("%s",a+1)
  32. #define rep(p,n,i) for(RE int i=p;i<=n;++i)
  33. #define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
  34. #define fep(n,p,i) for(RE int i=n;i>=p;--i)
  35. #define vep(p,n,i) for(RE int i=p;i<n;++i)
  36. #define pii pair<int,int>
  37. #define mk make_pair
  38. #define RE register
  39. #define P 1000000007
  40. #define gf(x) scanf("%lf",&x)
  41. #define pf(x) ((x)*(x))
  42. #define uint unsigned long long
  43. #define ui unsigned
  44. #define EPS 1e-4
  45. #define sq sqrt
  46. #define S second
  47. #define F first
  48. #define mod 1000000007
  49. #define V vector<int>
  50. #define l(x) t[x].l
  51. #define r(x) t[x].r
  52. #define sum(x) t[x].sum
  53. #define cnt(x) t[x].cnt
  54. using namespace std;
  55. char buf[1<<15],*fs,*ft;
  56. inline char getc()
  57. {
  58. return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;
  59. }
  60. inline int read()
  61. {
  62. RE int x=0,f=1;RE char ch=getc();
  63. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}
  64. while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}
  65. return x*f;
  66. }
  67. const int MAXN=150010,maxn=40010;
  68. bitset<MAXN>ans,w;
  69. int a[MAXN],b[maxn];
  70. int c[MAXN],p[MAXN];
  71. int n,m;
  72. inline int cmp1(int x,int y){return a[x]>a[y];}
  73. inline int cmp2(int x,int y){return b[x]>b[y];}
  74. int main()
  75. {
  76. freopen("1.in","r",stdin);
  77. get(n);get(m);
  78. rep(1,n,i)get(a[i]),p[i]=i;
  79. rep(1,m,i)get(b[i]),c[i]=i;
  80. sort(p+1,p+1+n,cmp1);
  81. sort(c+1,c+1+m,cmp2);
  82. int flag=1;
  83. ans.set();
  84. rep(1,m,i)
  85. {
  86. while(a[p[flag]]>=b[c[i]]&&flag<=n)
  87. {
  88. w[p[flag]]=1;
  89. ++flag;
  90. }
  91. ans=ans&(w>>c[i]-1);
  92. }
  93. put(ans.count());return 0;
  94. }

2020牛客暑假多校训练营 第二场 G Greater and Greater bitset的更多相关文章

  1. 2020牛客暑假多校训练营 第二场 H Happy Triangle set 线段树 分类讨论

    LINK:Happy Triangle 这道题很容易. 容易想到 a+b<x a<x<b x<a<b 其中等于的情况在第一个和第三个之中判一下即可. 前面两个容易想到se ...

  2. 2020牛客暑假多校训练营 第二场 E Exclusive OR FWT

    LINK:Exclusive OR 没做出 原因前面几篇说过了. 根据线性基的知识容易推出 不超过\(w=log Mx\)个数字即可拼出最大值 其中Mx为值域. 那么考虑w+2个数字显然也为最大值.. ...

  3. 2020牛客暑期多校训练营 第二场 K Keyboard Free 积分 期望 数学

    LINK:Keyboard Free 我要是会正经的做法 就有鬼了. 我的数学水平没那么高. 三个同心圆 三个动点 求围成三角形面积的期望. 不会告辞. 其实可以\(n^2\)枚举角度然后算出面积 近 ...

  4. 2020牛客暑期多校训练营 第二场 J Just Shuffle 置换 群论

    LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我 ...

  5. 2020牛客暑期多校训练营 第二场 I Interval 最大流 最小割 平面图对偶图转最短路

    LINK:Interval 赛时连题目都没看. 观察n的范围不大不小 而且建图明显 考虑跑最大流最小割. 图有点稠密dinic不太行. 一个常见的trick就是对偶图转最短路. 建图有点复杂 不过建完 ...

  6. 2020牛客暑期多校训练营 第二场 C Cover the Tree 构造 贪心

    LINK:Cover the Tree 最受挫的是这道题,以为很简单 当时什么都想不清楚. 先胡了一个树的直径乱搞的贪心 一直过不去.后来意识到这类似于最经典长链剖分优化贪心的做法 然后那个是求最大值 ...

  7. 2020牛客暑期多校训练营 第二场 B Boundary 计算几何 圆 已知三点求圆心

    LINK:Boundary 计算几何确实是弱项 因为好多东西都不太会求 没有到很精通的地步. 做法很多,先说官方题解 其实就是枚举一个点 P 然后可以发现 再枚举一个点 然后再判断有多少个点在圆上显然 ...

  8. 2020牛客暑期多校训练营 第二场 A All with Pairs 字符串hash KMP

    LINK:All with Pairs 那天下午打这个东西的时候状态极差 推这个东西都推了1个多小时 (比赛是中午考试的我很困 没睡觉直接开肝果然不爽 一开始看错匹配的位置了 以为是\(1-l\)和\ ...

  9. 2019牛客暑期多校训练营(第二场) H-Second Large Rectangle(单调栈)

    题意:给出由01组成的矩阵,求求全是1的次大子矩阵. 思路: 单调栈 全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面,比如: 1 0 0 1 ...

随机推荐

  1. 关于CSS自文档的思考_css声明式语言式代码注释

    obert C. Martin写的<Clean Code>是我读过的最好的编程书籍之一,若没有读过,推荐你将它加入书单. 注释就意味着代码无法自说明 —— Robert C. Martin ...

  2. 关于npm和yarn 安装vue脚手架

    第一篇博客有点小紧张.轻喷~ 第一步:安装node.js       地址 --------https://nodejs.org/en/ 详细步骤这里就不写了    可以去看     地址 ----- ...

  3. day77 作业

    目录 一.完成todolist案例 二.商品页面 一.完成todolist案例 <!DOCTYPE html> <html lang="en"> <h ...

  4. C++左值引用与右值引用

    本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/references-cpp?view=vs-2019 引用,类似于指针,用于存储一个位于内存某处的对象的 ...

  5. 【笔记】Java语法

    Java语法 兜兜转转,又绕回到Java了. 最近在学习Java,其实以前也学过,但是技术发展太快了,Java都出到14了..是时候该更新一下知识体系了. 然后看的是网上好评如潮的<Java核心 ...

  6. Android调用摄像机拍照(只能拍一张,第二张自动替换)

    这两天我玩了玩几天没动的Android,脑子里冒出一个注意,想用Android调用摄像机(偷拍)拍照,然后存下来,在网上百度一下就有很多人说,我也试了试,7.0以下非常轻松就成功了,因为7.0一下不用 ...

  7. 树形dp 之 小胖守皇宫

    题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边相连的宫殿间可以互相望见.大内保卫森严,三步一岗,五步一 ...

  8. 入门大数据---Hive计算引擎Tez简介和使用

    一.前言 Hive默认计算引擎时MR,为了提高计算速度,我们可以改为Tez引擎.至于为什么提高了计算速度,可以参考下图: 用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Re ...

  9. 爆肝整理:Linux常用命令,建议收藏!

    目录管理命令:mkdir.rmdir mkdir命令 rmdir命令 文件管理命令:cp.mv.rm cp命令 mv命令 rm命令 文件查看命令:cat.tac.head.tail.more.less ...

  10. 抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~

    0.问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用到了ThreadLoca ...