csp

开考建好文件夹编译器不能用搞了半天换了台电脑

四道题看完一个小时过去了

第一题不会正解写了部分分还有点悬

第二题写暴力因为一个小错误调了半天

看时间不多了已经有点慌了

也没想正解直接开了下一题

从T3 T4选了T4写了部分分还写挂了

没有稳定好心态

和平常考试的感觉差了很多

T2

[CSP-S 2022] 假期计划

考场上没想正解用ST表写了个暴力痛失40分

考完一个小时就写出正解


我是大SB-_-

正解:

根据\(A,B\)正负性分情况讨论

线段树维护信息

  1. 当 \(B\)全为正 时 \(ans = A_{max}*B_{min}\)
  2. 当 \(B\)全为负 时 \(ans = A_{min}*B_{max}\)
  3. 当 \(B\)有正有负 时
    1. 当 \(A\)全为正 时 \(ans = A_{min}*B_{min}\)
    2. 当 \(A\)全为负 时 \(ans = A_{max}*B_{max}\)
    3. 当 \(A\)有正有负 时 \(ans\)必定为负(先手选正后手必选负、先手选负后手必选正)
      1. 当A选正时 B会选最小的负使\(ans\)最小 A应选正最小使\(ans\)尽量大 即\(ans = A_{正min} * B_{min}\)
      2. 当A选负时 B会选最大的正使\(ans\)最小 A应选负最大使\(ans\)尽量大 即\(ans = A_{负max} * B_{max}\)

所以需要用线段树维护\(A_{max}\) \(A_{min}\) \(B_{max}\) \(B_{min}\) \(A_{正min}\) \(A_{负max}\)

std:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define ls p<<1
  5. #define rs p<<1|1
  6. const int N = 1e5+9;
  7. int n,m,q,a[N],b[N];
  8. struct tree
  9. {
  10. int l,r;
  11. int mxA,mxB,miA,miB,zmiA,fmxA;
  12. tree()
  13. {
  14. l=r=0;
  15. miA=miB=zmiA=1e9+1;
  16. mxA=mxB=fmxA=-1e9-1;
  17. }
  18. #define l(x) t[x].l
  19. #define r(x) t[x].r
  20. #define mxA(x) t[x].mxA
  21. #define mxB(x) t[x].mxB
  22. #define miA(x) t[x].miA
  23. #define miB(x) t[x].miB
  24. #define zmiA(x) t[x].zmiA
  25. #define fmxA(x) t[x].fmxA
  26. }t[N<<2];
  27. tree operator +(const tree &l,const tree &r)
  28. {
  29. tree p;
  30. p.l = l.l;
  31. p.r = r.r;
  32. p.mxA = max(l.mxA,r.mxA);
  33. p.mxB = max(l.mxB,r.mxB);
  34. p.miA = min(l.miA,r.miA);
  35. p.miB = min(l.miB,r.miB);
  36. p.zmiA = min(l.zmiA,r.zmiA);
  37. p.fmxA = max(l.fmxA,r.fmxA);
  38. return p;
  39. }
  40. void pushup(int p)
  41. {
  42. t[p] = t[ls] + t[rs];
  43. }
  44. void build(int p,int l,int r)
  45. {
  46. if(l == r)
  47. {
  48. l(p) = r(p) = l;
  49. miA(p)=mxA(p)=a[l];
  50. miB(p)=mxB(p)=b[l];
  51. if(a[l] > 0)zmiA(p)=a[l];
  52. else if(a[l] < 0)fmxA(p) = a[l];
  53. else zmiA(p) = fmxA(p) = a[l];
  54. return;
  55. }
  56. int mid = (l + r)>>1;
  57. build(ls,l,mid);
  58. build(rs,mid+1,r);
  59. pushup(p);
  60. }
  61. tree query(int p,int l,int r)
  62. {
  63. if(l <= l(p) && r >= r(p))return t[p];
  64. int mid = (l(p)+r(p))>>1;
  65. if(r <= mid)return query(ls,l,r);
  66. else if(l > mid)return query(rs,l,r);
  67. else return query(ls,l,r)+query(rs,l,r);
  68. }
  69. int main()
  70. {
  71. // freopen("game.in","r",stdin);
  72. // freopen("game.out","w",stdout);
  73. scanf("%d%d%d",&n,&m,&q);
  74. for(int i = 1;i <= n;i++)scanf("%d",&a[i]);
  75. for(int i = 1;i <= m;i++)scanf("%d",&b[i]);
  76. build(1,1,max(n,m));
  77. while(q--)
  78. {
  79. int l1,r1,l2,r2;
  80. scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
  81. tree A = query(1,l1,r1);
  82. tree B = query(1,l2,r2);
  83. if(B.miB >= 0)printf("%lld\n",1ll*A.mxA*B.miB);
  84. else if(B.mxB < 0)printf("%lld\n",1ll*A.miA*B.mxB);
  85. else if(A.miA >= 0)printf("%lld\n",1ll*A.miA*B.miB);
  86. else if(A.mxA < 0)printf("%lld\n",1ll*A.mxA*B.mxB);
  87. else printf("%lld\n",max(1ll*A.zmiA*B.miB,1ll*A.fmxA*B.mxB));
  88. }
  89. return 0;
  90. }

CSP 记的更多相关文章

  1. CSP踩被记

    本来想起个清新脱俗的标题,但碍于语文功底不行,于是光明正大嫖了LiBoyi的高端创意,把这篇博客命名为踩被记. Day -6 用假暴力把真正解拍没了,伤心.Rp有点低 Day -4 信息学考,\(py ...

  2. CSP 2019游记 & 退役记

    扶苏让我记录他AK CSP 的事实 ZAY NB!!! "你不配" 两年半的旅行结束了,我背着满满的行囊下了车,望着毫不犹豫远去的列车,我笑着哭了,笑着翻着我的行囊-- 游记 Da ...

  3. 【生活】记第一次参加CCF CSP认证

    2018年03月18日 CCF CSP认证 三月份的这次csp认证,我之前是没报名的,一来自己还没什么准备,二来去年的那次认证我也没参加,开考前的一个礼拜,从朋友那得知,这次学校团体报名的名额还没报满 ...

  4. CSP/S 2020 退役记

    上一次的AFO记 上上次的AFO记 Day -INF 一条咸鱼的垂死挣扎. RP+=INF Day 0 出发辣. 早上来到机房,带上了准备的面包和泡面....然而后来嫌太占地方就没拿...草了. 而且 ...

  5. CSP J/S 2019受虐记

    一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...

  6. CSP 2019 退役记

    声明:博主不会时空穿越,也没有造成恐慌,不应禁赛三年 Day0 上午:打板子 Polya定理; exkmp; exbsgs; 乘法逆元; 矩阵快速幂; 扫描线; ST表; excrt; Dirichl ...

  7. CSP vs Actor Go vs Erlang

    源于从Erlang到Go的一些思维碰撞,就像当初从C++到Erlang一样,整理下来记于此. Actor Actor模型,又叫参与者模型,其”一切皆参与者(actor)”的理念与面向对象编程的“一切皆 ...

  8. 2019.10.26 CSP%您赛第三场

    \(CSP\)凉心模拟^_^ --题源\(lqx.lhc\)等各位蒟蒻 题目名称 比赛 传递消息 开关灯 源文件名 \(competition.cpp\) \(message.cpp\) \(ligh ...

  9. CSP-J&S2019前颓废记

    说了是颓废记,就是颓废记,因为真的很颓废...... 2018年12月 我看懂了<啊哈算法>(仅仅是看懂,并没有完全学会,只看得懂,却不会敲) 插曲:八上期末考试 我们老师阻挠我继续学OI ...

  10. CSP2019滚粗记

    CSP2019滚粗记 从不拖更 Day -inf 考完月考才停课\kel,然后月考又被吊打了. Day -1 和左边的\({\text L}\color{red} {\text{ongge}}\)右边 ...

随机推荐

  1. .NET静态代码织入——肉夹馍(Rougamo) 发布1.2.0

    肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...

  2. Python数据科学手册-机器学习: 主成分分析

    PCA principal component analysis 主成分分析是一个快速灵活的数据降维无监督方法, 可视化一个包含200个数据点的二维数据集 x 和 y有线性关系,无监督学习希望探索x值 ...

  3. Beats:如何使用Winlogbeat

  4. 迁移一个仓库到新的Gitlab

    一般这种迁移,要注意旧仓库的提交历史等信息也要同步到新的仓库. 先使用如下命令克隆老的: git clone --bare git@gitlab.test1.com:f2e/test.git 新仓库创 ...

  5. 「产品运营」研发效能之DevOps平台如何运营?

    有人常说「酒香不怕巷子深」.不是的,如果这个巷子是酒吧街,那最深的那家酒吧肯定是租金最便宜的.酒吧的地段好坏已经在租金价格上体现出来了.现在已经不是那个工具缺乏.有个工具就拍手称快.欣然去试用的时代了 ...

  6. 实验02_Proteus仿真数码管显示代码

    一.原理总结 利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当L ...

  7. git中 gitignore 忽略文件操作

    通常,.gitignore文件被放置在存储库的根目录中.根目录也称为父目录和当前工作目录.根文件夹包含组成项目的所有文件和其他文件夹.也就是说,您可以将它放在存储库中的任何文件夹中.你甚至可以有多个. ...

  8. 2.MongoDB系列之创建更新删除文档

    1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...

  9. [C#]SourceGenerator实战: 对任意对象使用await吧!!!

    [C#]SourceGenerator实战: 对任意对象使用await吧!!! 前言 本文记录一次简单的 SourceGenerator 实战,最终实现可以在代码中 await 任意类型对象,仅供娱乐 ...

  10. echarts的使用 超好用的报表制作、数据的图形化展示

    地址链接:https://echarts.apache.org/zh/index.html 1.图形选择 2.对应的js代码