CSP 记
csp
开考建好文件夹编译器不能用搞了半天换了台电脑
四道题看完一个小时过去了
第一题不会正解写了部分分还有点悬
第二题写暴力因为一个小错误调了半天
看时间不多了已经有点慌了
也没想正解直接开了下一题
从T3 T4选了T4写了部分分还写挂了
没有稳定好心态
和平常考试的感觉差了很多
T2
[CSP-S 2022] 假期计划
考场上没想正解用ST表写了个暴力痛失40分
考完一个小时就写出正解
我是大SB-_-
正解:
根据\(A,B\)正负性分情况讨论
线段树维护信息
- 当 \(B\)全为正 时 \(ans = A_{max}*B_{min}\)
- 当 \(B\)全为负 时 \(ans = A_{min}*B_{max}\)
- 当 \(B\)有正有负 时
- 当 \(A\)全为正 时 \(ans = A_{min}*B_{min}\)
- 当 \(A\)全为负 时 \(ans = A_{max}*B_{max}\)
- 当 \(A\)有正有负 时 \(ans\)必定为负(先手选正后手必选负、先手选负后手必选正)
- 当A选正时 B会选最小的负使\(ans\)最小 A应选正最小使\(ans\)尽量大 即\(ans = A_{正min} * B_{min}\)
- 当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 记的更多相关文章
- CSP踩被记
本来想起个清新脱俗的标题,但碍于语文功底不行,于是光明正大嫖了LiBoyi的高端创意,把这篇博客命名为踩被记. Day -6 用假暴力把真正解拍没了,伤心.Rp有点低 Day -4 信息学考,\(py ...
- CSP 2019游记 & 退役记
扶苏让我记录他AK CSP 的事实 ZAY NB!!! "你不配" 两年半的旅行结束了,我背着满满的行囊下了车,望着毫不犹豫远去的列车,我笑着哭了,笑着翻着我的行囊-- 游记 Da ...
- 【生活】记第一次参加CCF CSP认证
2018年03月18日 CCF CSP认证 三月份的这次csp认证,我之前是没报名的,一来自己还没什么准备,二来去年的那次认证我也没参加,开考前的一个礼拜,从朋友那得知,这次学校团体报名的名额还没报满 ...
- CSP/S 2020 退役记
上一次的AFO记 上上次的AFO记 Day -INF 一条咸鱼的垂死挣扎. RP+=INF Day 0 出发辣. 早上来到机房,带上了准备的面包和泡面....然而后来嫌太占地方就没拿...草了. 而且 ...
- CSP J/S 2019受虐记
一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...
- CSP 2019 退役记
声明:博主不会时空穿越,也没有造成恐慌,不应禁赛三年 Day0 上午:打板子 Polya定理; exkmp; exbsgs; 乘法逆元; 矩阵快速幂; 扫描线; ST表; excrt; Dirichl ...
- CSP vs Actor Go vs Erlang
源于从Erlang到Go的一些思维碰撞,就像当初从C++到Erlang一样,整理下来记于此. Actor Actor模型,又叫参与者模型,其”一切皆参与者(actor)”的理念与面向对象编程的“一切皆 ...
- 2019.10.26 CSP%您赛第三场
\(CSP\)凉心模拟^_^ --题源\(lqx.lhc\)等各位蒟蒻 题目名称 比赛 传递消息 开关灯 源文件名 \(competition.cpp\) \(message.cpp\) \(ligh ...
- CSP-J&S2019前颓废记
说了是颓废记,就是颓废记,因为真的很颓废...... 2018年12月 我看懂了<啊哈算法>(仅仅是看懂,并没有完全学会,只看得懂,却不会敲) 插曲:八上期末考试 我们老师阻挠我继续学OI ...
- CSP2019滚粗记
CSP2019滚粗记 从不拖更 Day -inf 考完月考才停课\kel,然后月考又被吊打了. Day -1 和左边的\({\text L}\color{red} {\text{ongge}}\)右边 ...
随机推荐
- .NET静态代码织入——肉夹馍(Rougamo) 发布1.2.0
肉夹馍(https://github.com/inversionhourglass/Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应 ...
- Python数据科学手册-机器学习: 主成分分析
PCA principal component analysis 主成分分析是一个快速灵活的数据降维无监督方法, 可视化一个包含200个数据点的二维数据集 x 和 y有线性关系,无监督学习希望探索x值 ...
- Beats:如何使用Winlogbeat
- 迁移一个仓库到新的Gitlab
一般这种迁移,要注意旧仓库的提交历史等信息也要同步到新的仓库. 先使用如下命令克隆老的: git clone --bare git@gitlab.test1.com:f2e/test.git 新仓库创 ...
- 「产品运营」研发效能之DevOps平台如何运营?
有人常说「酒香不怕巷子深」.不是的,如果这个巷子是酒吧街,那最深的那家酒吧肯定是租金最便宜的.酒吧的地段好坏已经在租金价格上体现出来了.现在已经不是那个工具缺乏.有个工具就拍手称快.欣然去试用的时代了 ...
- 实验02_Proteus仿真数码管显示代码
一.原理总结 利用两个寄存器R4和R5来存储两个数码管的显示效果,R4是前一个数码管显示所需,而R5是后一个数码管显示所需,利用左移操作RLC来使之每一位被依次输入到C中,然后将C输入到LED中(当L ...
- git中 gitignore 忽略文件操作
通常,.gitignore文件被放置在存储库的根目录中.根目录也称为父目录和当前工作目录.根文件夹包含组成项目的所有文件和其他文件夹.也就是说,您可以将它放在存储库中的任何文件夹中.你甚至可以有多个. ...
- 2.MongoDB系列之创建更新删除文档
1. 插入文档 // 单条插入 db.getCollection('blog').insertOne({'type': 'mongodb'}) // 批量 插入 db.getCollection('b ...
- [C#]SourceGenerator实战: 对任意对象使用await吧!!!
[C#]SourceGenerator实战: 对任意对象使用await吧!!! 前言 本文记录一次简单的 SourceGenerator 实战,最终实现可以在代码中 await 任意类型对象,仅供娱乐 ...
- echarts的使用 超好用的报表制作、数据的图形化展示
地址链接:https://echarts.apache.org/zh/index.html 1.图形选择 2.对应的js代码