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}}\)右边 ...
随机推荐
- 微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(一) 之 环境搭建及脚本录制
一.前言 半年前,偶然在视频号刷到某机构正在直播讲解Playwright框架的使用,就看了一会,感觉还不错,便被种草,就想着自己有时间也可以自己学一下,这一想着就半年多过去了. 读到这,你可能就去百度 ...
- 创建x11vnc系统进程
〇.前言 为方便使用vnc,所以寻找到一个比较好用的vnc服务端那就是x11vnc,索性就创建了一个系统进程 一.环境 系统:银河麒麟v4-sp2-server 软件:x11vnc[linux下].V ...
- Django 使用cmd 创建工程
一.Django 安装 1 通过pip安装 Django 如果你是通过升级的方式安装Django,那么你需要先卸载旧的版本. Django 提供3种发行版本,推荐使用官方的稳定版本: 你的操作系统提供 ...
- 使用elasticdump迁移es数据
安装elasticdump github地址:https://github.com/elasticsearch-dump/elasticsearch-dump # yum -y install npm ...
- NAT模式下的虚拟机连接主机网络
基于NAT模式的VMware虚拟机(Linux CentOS 7)连接主机(Windows 11)网络 一.什么是NAT模式 虚拟机连接主机网络的三种方式: Bridged(桥接) NAT(网络地址转 ...
- Mysql 数据库SQL脚本导入
1.进入mysql命令行窗口 mysql -uroot -p123456 2.展示所有数据库 show databases: 3.选择数据库 use 数据库名 4.展示选择的数据库中所有表 show ...
- Module Federation 模块联邦 在Vue3中使用Vue2搭建的微服务
前言: 备注:本文基于对webpack Module Federation有一定了解的情况下 一般情况下使用模块联邦都是会使用相同的版本,如Vue2的组件时在Vue2中使用,但我为什么会在Vue3项目 ...
- SQL Server复制的阶梯
SQL Server复制的阶梯:第1级 - SQL Server复制简介 本翻译文章来自作者:Sebastian Meine, 2012年12月26日 该系列 本文是Stairway系列的一部分:SQ ...
- POJ3417 Network暗的连锁 (树上差分)
树上的边差分,x++,y++,lca(x,y)-=2. m条边可以看做将树上的一部分边覆盖,就用差分,x=1,表示x与fa(x)之间的边被覆盖一次,m次处理后跑一遍dfs统计子树和,每个节点子树和va ...
- POJ2104 K-th number (整体二分)
刚学了整体二分,用这种解法来解决这道题. 首先对于每个询问时可以二分解决的,这也是可以使用整体二分的前提.将原来的序列看成是插入操作,和询问操作和在一起根据值域进行二分.用树状数组来检验二分值. 1 ...