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:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define ls p<<1
#define rs p<<1|1
const int N = 1e5+9;
int n,m,q,a[N],b[N]; struct tree
{
int l,r;
int mxA,mxB,miA,miB,zmiA,fmxA;
tree()
{
l=r=0;
miA=miB=zmiA=1e9+1;
mxA=mxB=fmxA=-1e9-1;
}
#define l(x) t[x].l
#define r(x) t[x].r
#define mxA(x) t[x].mxA
#define mxB(x) t[x].mxB
#define miA(x) t[x].miA
#define miB(x) t[x].miB
#define zmiA(x) t[x].zmiA
#define fmxA(x) t[x].fmxA
}t[N<<2]; tree operator +(const tree &l,const tree &r)
{
tree p;
p.l = l.l;
p.r = r.r;
p.mxA = max(l.mxA,r.mxA);
p.mxB = max(l.mxB,r.mxB);
p.miA = min(l.miA,r.miA);
p.miB = min(l.miB,r.miB);
p.zmiA = min(l.zmiA,r.zmiA);
p.fmxA = max(l.fmxA,r.fmxA);
return p;
}
void pushup(int p)
{
t[p] = t[ls] + t[rs];
}
void build(int p,int l,int r)
{
if(l == r)
{
l(p) = r(p) = l;
miA(p)=mxA(p)=a[l];
miB(p)=mxB(p)=b[l];
if(a[l] > 0)zmiA(p)=a[l];
else if(a[l] < 0)fmxA(p) = a[l];
else zmiA(p) = fmxA(p) = a[l]; return;
} int mid = (l + r)>>1;
build(ls,l,mid);
build(rs,mid+1,r);
pushup(p);
} tree query(int p,int l,int r)
{
if(l <= l(p) && r >= r(p))return t[p]; int mid = (l(p)+r(p))>>1;
if(r <= mid)return query(ls,l,r);
else if(l > mid)return query(rs,l,r);
else return query(ls,l,r)+query(rs,l,r);
} int main()
{
// freopen("game.in","r",stdin);
// freopen("game.out","w",stdout); scanf("%d%d%d",&n,&m,&q);
for(int i = 1;i <= n;i++)scanf("%d",&a[i]);
for(int i = 1;i <= m;i++)scanf("%d",&b[i]);
build(1,1,max(n,m));
while(q--)
{
int l1,r1,l2,r2;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
tree A = query(1,l1,r1);
tree B = query(1,l2,r2); if(B.miB >= 0)printf("%lld\n",1ll*A.mxA*B.miB);
else if(B.mxB < 0)printf("%lld\n",1ll*A.miA*B.mxB);
else if(A.miA >= 0)printf("%lld\n",1ll*A.miA*B.miB);
else if(A.mxA < 0)printf("%lld\n",1ll*A.mxA*B.mxB);
else printf("%lld\n",max(1ll*A.zmiA*B.miB,1ll*A.fmxA*B.mxB)); }
return 0;
}

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. git hooks在业务中的使用

    起因 最近公司项目发生了一起线上事故,最后排查下来是配置文件的问题.项目里application.yml文件内会用@build.time@记录打包时的时间,但是这个写法是build-helper-ma ...

  2. Pytorch: repeat, repeat_interleave, tile的用法

    https://zhuanlan.zhihu.com/p/474153365 torch.repeat 使张量沿着某个维度进行复制, 并且不仅可以复制张量,也可以拓展张量的维度: import tor ...

  3. jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(2)

    前言:上篇已介绍了jenkins在k3s环境部署,本篇继续上篇讲述流水线构建部署流程 1.从gitlab上拉取代码步骤 在jenkins中,新建一个凭证:Manage Jenkins -> Ma ...

  4. 【gRPC】C++异步服务端客户端API实例及代码解析

    对于同步API而言,程序的吞吐量并不高.因为在每次发送一个gRPC请求时,会阻塞整个线程,必须等待服务端的ack回到客户端才能继续运行或者发送下一个请求,因此异步API是提升程序吞吐量的必要手段. g ...

  5. 【疑难杂症】if __name__ == '__main__'的理解

    今天进行小批量梯度下降时,代码给我报错,具体代码如下 import torch import numpy as np from torch.utils.data import Dataset from ...

  6. 10. Fluentd部署:高可用配置

    对于高访问量的web站点或者服务,可以采用Fluentd的高可用配置模式. 消息分发语义 Fluentd设计初衷主要是用作事件日志分发系统的.这类系统支持几种不同的分发模式: 至多一次.消息被立即发送 ...

  7. 【前端必会】webpack的目标代码

    背景 webpack生成什么样的代码呢?同的模块依赖的写法(import.export export default),会导致生成代码的不同,下面介绍普通的import与export 开始 导出PI1 ...

  8. LeetCode - 数组的旋转总结

    1. 数组的旋转总结 数组的旋转指的是将数组的最后若干个数提前到数组前面,数组的翻转指的是将数组的顺序颠倒.旋转可以通过多次翻转实现. 数组的翻转很简单,通过双指针来实现:交换数组的第一个数和最后一个 ...

  9. HDU1114 Piggy-Bank (完全背包)

    完全背包模板,和01背包相比不用倒推,因为一种可以选多个. 这道题求最小,dp数组初始化为无穷即可. 1 #include<iostream> 2 #include<cstring& ...

  10. 洛谷P4630 [APIO2018] Duathlon 铁人两项 (圆方树)

    圆方树大致理解:将每个点双看做一个新建的点(方点),该点双内的所有点(圆点)都向新建的点连边,最后形成一棵树,可以给点赋予点权,用以解决相关路径问题. 在本题中,方点点权赋值为该点双的大小,因为两个点 ...