[3.30校内训练赛]

来自FallDream的博客,未经允许,请勿转载,谢谢。

---------------------------------------------------

ditoly这次打好了虐爆我们的主意,掏出三道丧题,囊括三种赛制,第一道丧病oi题,第二道sb交互题,第三道奇怪提答............

第二道交互题没人做,也挺奇怪的,不讲了;

第三道是找规律,也就50个数列把,我拿出我最强的找规律水平,用上插值啊快速幂啊矩阵乘法啊肉眼观察法啊乱差分啊等等办法,骗到了48分,貌似全场最高了..得分靠随缘,也不讲了。

讲讲第一题,给定一个数列,需要支持100种操作。    $n,m\leqslant 100000$

1:查询一段区间,你每次可以任选其中一段区间+1或者-1,求把它变成全是0的最小次数。

10:区间加一个值。  11:区间翻转   100:回到k次操作之前的状态。  

看到这题,很明显可以可持久化平衡树,但我姿势不够,不会,而且丧病出题人卡空间。还好脑补了一种乱建边的方法,从一个状态向它能转移到的状态连边,然后dfs,离开时撤销,类似线段树分治。

然后维护一棵平衡树,修改操作容易维护,查询操作的答案是这个区间差分的绝对值之和加上左右端点的绝对值之和除以2.  我把查询做成了只能-1,爆0了qaq

#include<iostream>
#include<cstdio>
#define MN 100000
#define ll long long
using namespace std;
inline int read()
{int x = 0 , f = 1; char ch = getchar();while(ch < '0' || ch > '9'){ if(ch == '-') f = -1;  ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}int s[MN+5],n,m,cnt=0;
struct ques{int kind,l,r,x;ll ans;}q[MN+5];
struct edge{int to,next;}e[MN+5];
int fa[MN+5],c[MN+5][2],rt,head[MN+5],size[MN+5];
ll num[MN+5],ad[MN+5],nl[MN+5],nr[MN+5],sum[MN+5];
bool rev[MN+5];template<typename t> t abs(t x){return x<0?-x:x;}
inline void ins(int f,int t){e[++cnt]=(edge){t,head[f]};head[f]=cnt;}void update(int x)
{int l=c[x][0],r=c[x][1];nl[x]=(l?nl[l]:num[x]);nr[x]=(r?nr[r]:num[x]);size[x]=size[l]+size[r]+1;sum[x]=0;if(l) sum[x]+=sum[l]+abs(num[x]-nr[l]);if(r) sum[x]+=sum[r]+abs(num[x]-nl[r]);
}inline void mark(int x,int z)
{nl[x]+=z;nr[x]+=z;num[x]+=z;ad[x]+=z;
}void pushdown(int x)
{int l=c[x][0],r=c[x][1];if(rev[x]) {rev[l]^=1;rev[r]^=1;rev[x]^=1;swap(c[l][0],c[l][1]);swap(c[r][0],c[r][1]);swap(nl[l],nr[l]);swap(nl[r],nr[r]);}if(ad[x]){mark(l,ad[x]);mark(r,ad[x]);ad[x]=0;}
}void build(int&x,int l,int r,int last)
{if(l>r) return;x=l+r>>1;fa[x]=last;num[x]=s[x];if(l==r) {size[x]=1;nl[x]=nr[x]=s[x];sum[x]=0;return;}build(c[x][0],l,x-1,x);build(c[x][1],x+1,r,x);update(x);
}void rotate(int x,int&k)
{int y=fa[x],z=fa[y],l=c[y][1]==x,r=l^1;if(y==k) k=x; else c[z][c[z][1]==y]=x;fa[x]=z;fa[y]=x;fa[c[x][r]]=y;c[y][l]=c[x][r];c[x][r]=y;update(y);update(x);
}void splay(int x,int&k)
{while(x!=k){int y=fa[x],z=fa[y];if(y!=k){if(c[z][1]==y^c[y][1]==x) rotate(x,k);else rotate(y,k);    } rotate(x,k);}
}int find(int x,int rk)
{pushdown(x);int sz=size[c[x][0]]+1;if(sz==rk) return x;else if(sz<rk) return find(c[x][1],rk-sz);else return find(c[x][0],rk);
}int split(int l,int r)
{splay(find(rt,l),rt);splay(find(rt,r),c[rt][1]);return c[c[rt][1]][0];
}void solve(int x)
{if(q[x].kind==1) {ll y=sum[split(q[x].l,q[x].r+2)];q[x].ans=(1LL*abs(num[find(rt,q[x].l+1)])+abs(num[find(rt,q[x].r+1)])+y)/2;}if(q[x].kind==10){int y=split(q[x].l,q[x].r+2);mark(y,q[x].x); update(c[rt][1]);update(rt);}if(q[x].kind==11) {int y=split(q[x].l,q[x].r+2);rev[y]^=1;swap(c[y][0],c[y][1]);swap(nl[y],nr[y]);update(c[rt][1]);update(rt);}for(int i=head[x];i;i=e[i].next)solve(e[i].to);if(q[x].kind==10){int y=split(q[x].l,q[x].r+2);mark(y,-q[x].x); update(c[rt][1]);update(rt);}if(q[x].kind==11){int y=split(q[x].l,q[x].r+2);rev[y]^=1;swap(c[y][0],c[y][1]);swap(nl[y],nr[y]);update(c[rt][1]);update(rt);}
}int main()
{n=read();m=read();for(int i=1;i<=n;i++)s[i+1]=read();for(int i=1;i<=m;i++){q[i].kind=read();if(q[i].kind==1) q[i].l=read(),q[i].r=read();if(q[i].kind==10) q[i].l=read(),q[i].r=read(),q[i].x=read();if(q[i].kind==11) q[i].l=read(),q[i].r=read();if(q[i].kind==100) q[i].x=read(),ins(i-q[i].x-1,i);else ins(i-1,i);}cnt=0;build(rt,1,n+2,0);solve(0);for(int i=1;i<=m;i++)if(q[i].kind==1)printf("%lld\n",q[i].ans);return 0;
}

 

转载于:https://www.cnblogs.com/FallDream/p/xunlian330.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Automatic Detection of Welding Defects Using Faster R-CNN

Automatic Detection of Welding Defects Using Faster R-CNN 基于快速R-CNN的焊接缺陷自动检测 简介&#xff1a;使用Inception-ResNet模型进行缺陷检测 数据集&#xff1a;射线图像 Abstract Experts are required to properly detect the test results and it takes a lot…

让Android Studio支持系统签名(证书)

有时候&#xff0c;我们开发的apk需要用到系统权限&#xff0c;需要在AndroidManifest.xml中添加共享系统进程属性&#xff1a; android:sharedUserId"android.uid.system" android:sharedUserId"android.uid.shared" android:sharedUserId"android…

eslint 保存自动格式化_代码规范之理解ESLint、Prettier、EditorConfig

授权转载自&#xff1a;nowThenhttps://juejin.cn/post/6895889063111294990前言团队多人协同开发项目中困恼团队管理一个很大的问题是&#xff1a;无可避免地会出现每个开发者编码习惯不同、代码风格迥异&#xff0c;为了代码高可用、可维护性&#xff0c; 如何从项目管理上尽…

BZOJ 4259: 残缺的字符串 [FFT]

4259: 残缺的字符串 题意&#xff1a;s,t&#xff0c;星号任意字符&#xff0c;匹配方案数 和上题一样 多乘上一个\(a_{ji}\)就行了 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using na…

Deep learning based multi-scale channel compression feature surface defect detection system

基于深度学习的多尺度通道压缩特征表面缺陷检测系统 Deep learning based multi-scale channel compression feature surface defect detection system 简述&#xff1a;首先应用背景分割和模板匹配技术来定义覆盖目标工件的ROI区域。提取的感兴趣区域被均匀地裁剪成若干个图像…

unix dos mac 文件格式不同导致问题

问题&#xff1a; 运行该脚本出现/bin/sh^M: bad interpreter: No such file or directory 解决&#xff1a; 错误中脚本文件的一个非常可能的原因是DOS格的, 即每一行的行尾以\r\n来标识, 其ASCII码各自是0x0D, 0x0A. 能够有非常多种办法看这个文件是DOS格式的还是UNIX格式…

python中的封装调用_Python基础之封装

一、什么是封装 在程序设计中&#xff0c;封装&#xff08;Encapsulation&#xff09;是对具体对象的一种抽象&#xff0c;即将某些部分隐藏起来&#xff0c;在程序外部看不到&#xff0c;其 含义是其他程序无法调用。 要了解封装&#xff0c;离不开“私有化”&#xff0c;就是…

Multi-scale multi-intensity defect detection in ray image of weld bead

Multi-scale multi-intensity defect detection in ray image of weld bead 焊道射线图像中的多尺度多强度缺陷检测 Abstract The radiographic test used to inspect the internal defects is an important non-destructive testing technique for welding.The weld bead ra…

前端MVC框架之 Angular

一、什么是Angular jQuery&#xff0c;它属于一种类库(一系列函数的集合)&#xff0c;以DOM为驱动核心&#xff1b;而Angular是一种 MVC 的前端框架&#xff0c;则是前端框架&#xff0c;以数据和逻辑为驱动核心&#xff0c;它有着诸多特性&#xff0c;最重要的是&#xff1a;模…

C语言关键字(三)

之前的两篇文章 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;数据类型关键字&#xff09;​zhuanlan.zhihu.com 嵌入式Linux&#xff1a;c语言深度解剖&#xff08;入门篇&#xff09;​zhuanlan.zhihu.com 这篇文件继续讲解C语言关键字 想问大家一个问题&#xff0c…

Review on the Recent Welding Research with Application of CNN-Based Deep Learning

Abstract CNNs enables end-to-end learning with- out feature extraction and in-situ estimation of the process outputs. cnn使端到端学习没有特征提取和现场估计的过程输出。 The papers was classified into 5 groups: four for supervised learning models and one …

python bottle框架 运维_python bottle 框架实战教程:任务管理系统 V_1.0版 | linux系统运维...

经过1-2个星期的开发&#xff0c;现在用任务管理功能&#xff08;添加、删除、修改&#xff0c;详细&#xff09;、项目管理功能&#xff08;添加、删除&#xff0c;修改&#xff0c;详细&#xff09;等&#xff0c;我把现在完成的版本&#xff0c;叫做1.0吧。发布完这个版本后…

[转]你每天90%的注意力被浪费了

[转]你每天90%的注意力被浪费了 最近有一句话很流行&#xff0c;叫做“就怕聪明的人比你还努力&#xff01;”大名鼎鼎的日本寿司之神&#xff0c;小野二郎&#xff0c;有一次记者问他成功的秘诀是什么&#xff0c;小野的答案就两个字“专注”&#xff0c;说自己是把整个生命&a…

Android.mk中添加宏定义

在Boardconfig.mk 中添加一个 IMAGE_FOR_FACTORY_TEST: true 由于Boardconfig.mk和各目录的Android.mk是相互关联的 所以我们可以在Android.mk 中添加 一个 ifdef IMAGE_FOR_FACTORY_TEST LOCAL_CFLAGS -DFACTORY_TEST endif 在Android.mk中添加的这行相当于在 该目录…

Android客制化-恢复出厂设置但保留文件

很久没有记录了&#xff0c;持之以恒做一件事&#xff0c;需要一定的毅力呐&#xff01; 最近遇到了一个需求&#xff0c;要求恢复出厂设置保留内置sd卡下某个目录的文件。思来想去&#xff0c;从驱动那边备份校准信号文件得到了一些思路。因为带通话设置的装置需要进行校准&a…

form 窗体增加边框_C#控件美化之路(13):美化Form窗口(上)

在开发中最重要的就是美化form窗口&#xff0c;在开发中&#xff0c;大多都是用会用自主美化的窗口开发程序。本文只是点多&#xff0c;分为上中下节。分段讲解。本文主要讲解窗口美化关键步骤。首先美化窗体&#xff0c;就需要自己绘制最大化 最小化 关闭按钮。其次就是界面样…

第四周数据结构

转载于:https://www.cnblogs.com/bgd150809329/p/6650255.html

gdb x命令_gdb基本命令

参考自&#xff1a;gdb基本命令(非常详细)_JIWilliams-CSDN博客_gdb命令​blog.csdn.net本文介绍使用gdb调试程序的常用命令。 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试…

cmds在线重定义增加列

--输出信息采用缩排或换行格式化EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, PRETTY, TRUE);--确保每个语句都带分号EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, SQLTERMINATOR, TRUE);--关闭表索引、外键等关联&…

YOLOX-PAI: An Improved YOLOX, Stronger and Faster than YOLOv6

YOLOX-PAI&#xff1a;一种改进的YOLOX&#xff0c;比YOLOv6更强更快 原文&#xff1a;https://arxiv.org/pdf/2208.13040.pdf 代码&#xff1a;https://github.com/alibaba/EasyCV 0.Abstract We develop an all-in-one computer vision toolbox named EasyCV to facilita…