[线段树 哈希] Codeforces452F. Permutation

Geogebra中级篇016—矩阵(Matrices) 在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。 阅读详情

考虑第 i 位上的数 ai ,如果对于任意 k∈[1,min(ai−1,n−ai)] ,ai−k 和 ai+k 都在它左边或者都在它右边,那么就不会存在以 ai 为中位数的长度为3的等差数列。

那么我们从左往右扫这个数列,用权值线段树记录哪些数出现过,那么就是判断区间 [ai−k,ai] 和 [ai,ai+k] 是否对称。

线段树上HASH一下就好了

复杂度 O(nlogn)

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

typedef unsigned long long Ull;

const int N=300010;
const Ull P=1000003;

int n,a[N];
Ull p[N],lval[N<<2],rval[N<<2];

inline char nc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}

inline void rea(int &x){
    char c=nc(); x=0;
    for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());
}

void Modify(int g,int l,int r,int x){
    if(l==r) return lval[g]=rval[g]=1,void();
    int mid=l+r>>1;
    (x<=mid)?Modify(g<<1,l,mid,x):Modify(g<<1|1,mid+1,r,x);
    lval[g]=lval[g<<1|1]+lval[g<<1]*p[r-mid];
    rval[g]=rval[g<<1]+rval[g<<1|1]*p[mid-l+1];
}

Ull Queryl(int g,int L,int R,int l,int r){
    if(L==l && r==R) return lval[g];
    int mid=L+R>>1;
    if(r<=mid) return Queryl(g<<1,L,mid,l,r);
    else if(l>mid) return Queryl(g<<1|1,mid+1,R,l,r);
    return Queryl(g<<1|1,mid+1,R,mid+1,r)+Queryl(g<<1,L,mid,l,mid)*p[r-mid];
}

Ull Queryr(int g,int L,int R,int l,int r){
    if(L==l && r==R) return rval[g];
    int mid=L+R>>1;
    if(r<=mid) return Queryr(g<<1,L,mid,l,r);
    else if(l>mid) return Queryr(g<<1|1,mid+1,R,l,r);
    else return Queryr(g<<1,L,mid,l,mid)+Queryr(g<<1|1,mid+1,R,mid+1,r)*p[mid-l+1];
}

int main(){
    rea(n);
    for(int i=1;i<=n;i++) rea(a[i]);
    p[0]=1; for(int i=1;i<=n;i++) p[i]=p[i-1]*P;
    for(int i=1;i<=n;i++){
        Modify(1,1,n,a[i]);
        int k=min(a[i]-1,n-a[i]);
        if(Queryl(1,1,n,a[i]-k,a[i])^Queryr(1,1,n,a[i],a[i]+k)) return puts("YES"),0;
    }
    puts("NO");
    return 0;
}
Python画柱状图(双柱状图,三柱状图)且显示对应数值 使用python实现双柱状图和三柱状图,并且在柱状图形的顶部显示对应数值; 阅读详情

相关推荐

基于vue2的echarts3D地球

采用vue2+js实现了echarts3D地球的放大、缩小和旋转

qq_44699269的博客 1132

树哈希(Tree Hash)

树哈希(Tree Hash) 顾名思义,对树进行哈希,经常判断两个树是否同构。一下均为对有根树的算法,而无根树只需要找重心 无权树 方法一 fnow=sizenow×∑fson(now,i)×seedi−1 f_{now}=size_{now} \times \sum f_{son(now,i)}\times seed^{i-1} fnow​=sizenow​×∑fson(now,i)​×seedi−1 其中 fxf_xfx​ 为以节点 xxx 为根的子树对应的哈希值。特殊地,我们令叶子节点的哈希值为 11

jiahonghao2002的博客 5340

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

在信息化时代,操作系统是数字世界的基石,而终端命令行则是高效驾驭服务器的核心技能。无论是软件部署、服务监控还是故障排查,掌握基于Shell的指令操作都能大幅提升工程效率。从最基础的文件目录管理、文本处理,到权限控制、进程监控与网络调试,命令行提供了一套强大且可自动化的操作范式。尤其对于运维工程师和开发者而言,理解管道、重定向以及脚本化任务,意味着将重复劳动转化为可复用的自动化流程。本文从环境准备讲起,系统梳理常用Linux命令的实际场景与输出验证,并延伸至Shell脚本编写与定时任务,帮助初学者快速建立从操

weixin_30522983的博客 255

【数据结构】树哈希

额~美味的树,啊啊,树,哈希~

weixin_66767924的博客 1815

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型

本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。

corn8的博客 612

U8二次开发CO-基于Net8调用COM对象

本文章介绍的U8二次开发CO技术,就是基于微软COM组件技术,使用微软开源的编程框架Net6/7/8/9来调用U8的COM组件,完成基本的登录认证,工作流处理,数据库操作等。

pccai的博客 5501

哈希树简介

哈希树(Hash Tree),在密码学及计算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签。哈希树能够高效、安全地验证大型数据结构的内容,是哈希链的推广形式。哈希树的概念由瑞夫·墨克于 1979 年申请专利,故亦称墨克树(Merkle tree)。

Doublelv 的博客专栏。 4345

使用Avalonia跨Linux平台

Avalonia类似使用WPF的技术方法来开发,所以,需要会使用WPF,其中的一些语法和写法与WPF有所区别,但是他们相差不大,会WPF的话,基本上可以看看文档后,完全掌握Avalonia的使用,从而达到跨平台开发的任务。其实写法有些不一样,可以参考官网的说明,进行修改。2. 安装完成后,重启VS2022,我们可以看到1和2,其中1是使用MVVM模式开发,2是普通模式开发,我们选择2,建立项目。9.直接双击粉红色的文件,进行安装,输入密码,但是美中不足的是,好像没有图标,图标似乎需要单独去设置。

故里2130 1万+

嵌入式学习43-二叉树

2^(k-1) 叶子节点。

PTnzl的博客 256

YOLOv11 改进 - 特征融合 | 替换 C3k2 涨点:GELAN 融合 CSP+ELAN 提精度

本文介绍了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)与 YOLOv11 的结合,以解决深度网络数据传输时的信息丢失问题。PGI 能为目标任务提供完整输入信息,计算目标函数以更新网络权重。GELAN 作为轻量级网络架构,由 SPPELAN、ELAN1、RepNCSPELAN4 等模块组成。我们将 GELAN 代码集成进 YOLOv11, 实验脚本显示,结合 GELAN 的 YOLOv11 在 MS COCO 数据集目标检测任务中或有良好表现。

魔改工程师的博客 1242

跨 Agent 语义沟通机制构建:共享知识图谱与语义对齐方法

在具身智能与多智能体系统协同日益复杂化的背景下,跨 Agent 的语义沟通能力成为任务完成效率和系统鲁棒性提升的关键技术路径。本文系统分析了当前业界在共享知识图谱、语义嵌入对齐、语义意图建模与跨模态语义通信协议设计方面的实践经验,深入讲解如何在 Habitat-MARL 与 Isaac-MARL 等平台中,基于实体-关系结构、语义分布表示与任务上下文,构建具备理解、共享、协作能力的多 Agent 语义系统。文章以工程实战为主,覆盖图谱构建、语义嵌入同步、对齐模型部署、通信接口集成等多个核心模块,结合真实应用

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1293

树哈希(Tree Hashing)原理与应用详解

树哈希(Tree Hashing),又称默克尔树哈希(Merkle Tree Hashing),是一种将数据组织成树状结构并逐层计算哈希值的密码学技术。其核心思想是将大量数据分割成多个数据块,为每个数据块计算哈希值,然后递归地将子节点的哈希值合并计算父节点的哈希值,最终得到一个代表整棵树的根哈希(Root Hash)。这个根哈希可以唯一地代表整棵树(即整个数据集)的完整性状态。任何底层数据的微小改动,都会导致从该数据块到根节点路径上所有哈希值的连锁变化,最终使根哈希值发生改变。

QY8765的博客 361

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 679

Codeforces 452F Permutation【线段树】【哈希】

DescriptionYou are given a permutation of numbers from 1 to n. Determine whether there’s a pair of integers a, b (1 ≤ a, b ≤ n; a ≠ b) such that the element (note, that it is usual division, not integ

Sdywolf的博客 780

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Codeforces】452F Permutation hash+线段树

题目传送门 开坑CF,纪念一下自己在CF上过了第一道题。(这有什么卵用?) 这题是今天考试的原题,在考场上我竟然因为数据过水而瞎搞AC了?!(看来那个数据是真的水) 考试时还有第一题,就是这题的造数据代码……(博主已经无力吐槽了……) 然后就造成了我们做第一题的时候用第二题去对拍,做第二题的时候用第一题去造数据的尴尬场面…… 做了第一题我发现了这个结构有“奇偶各半”的特性,于是我把这个性

Chester King 425

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[线段树+哈希] Codeforces 452F. Permutation

要注意到这是一个排列,1~n每个数都出现一次,不用上这个条件就做不了。对于一个数 xx , 所有的x−k, x+kx-k,\ x+k 一定在 xx 的同一侧,否则就输出YESYES 。所以就有了这样的解法:从左到右扫描序列,设当前到ii , 已经把 11 到 i−1i-1 的数都丢到权值线段树中了。若此时x−k, x+kx-k,\ x+k 有一个是1,有一个是0,则说明找到了。也就是只要比较一下权值

Lynstery's blog 417

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【线段树+Hash】Codeforces 452F Permutation

题面在这里按顺序枚举i,则ai±ka_i\pm k必须在同一侧(即同时出现或同时不出现)维护权值线段树其实就是[ai−k,ai][a_i-k,a_i]和[ai,ai+k][a_i,a_i+k]对称线段树维护正反两个hash值就好了示例程序:

linkfqy 730

【线段树+Hash】Codeforces452F[Permutation]题解

题目概述一个序列 {an}\{a_n\} 是反等差数列当且仅当: 是 nn 的排列。 不存在一个长度 >2>2 的子序列使得该子序列是等差数列。 给出一个序列,判断该序列是不是反等差数列。解题报告记录 pos(a)pos(a) 表示 aa 在序列中的位置,对于任意 ii ,只要存在任意 kk 使得 pos(ai−k)<i<pos(ai+k)pos(a_i-k)<i<pos(a_i+k) ,就说明该序

ZigZagK的博客 879

Codeforces452F Permutation -- 线段树 + Hash

假如不存在长度大于等于 33 的等差数列,那么对于第 ii 个数 aia_i , ai−ka_i-k 和 ai+ka_i+k 都在一定在 ii 的左边或右边。那么建一棵权值线段树,从左往右扫一次,判断一下 [x−maxk,x−1][x-max_k,x-1] 与 [x+1,x+maxk][x+1,x+max_k] 反转后 HashHash 值是否相等。#include<cstdio> #include

gjghfd 336

Codeforces452F(MemSQL Start[c]UP 2.0)[Permutation]--线段树+Hash

codeforces452F

Greninja的博客 859

Codeforces452F Permutation

Problem Codeforces 给你一个长度为n(n≤3∗105)n(n\leq 3*10^5)n(n≤3∗105)的排列,问你存不存在i&amp;amp;lt;j&amp;amp;lt;ki&amp;amp;lt;j&amp;amp;lt;ki&amp;lt;j&amp;lt;k使得aj−ai=ak−aia_j-a_i=a_k-a_iaj​−ai​=ak​−ai​。 Solution 一道很有意思的题目。。我做的时候思路从fft到线段树...

Rayment的博客 556

[Hash] Codeforces 452F MemSQL Start[c]UP 2.0 - Round 1 F. Permutation

从左往右扫 对于当前的某个aia_i 我们只判断ai+ka_i+k和ai−ka_i-k是不是都出现过或都没出现过 要是只有一个出现 那么肯定另一个在后面 不合法 对于出现情况我们hash下 可以用线段树或树状数组维护 为什么我这么长#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typede

雯舞 858

【算法竞赛学习笔记】用不着的图论之树哈希

title : 树Hash date : 2021-10-6 tags : ACM,图论 author : Linno 树哈希 应用 判断树是否同构 思想 判断无根树同构的时候,可以比较重心为根的Hash值或者比较每个点为根的Hash值。 树哈希的表示方法 fx=1+∑y∈sonxfy×prime(sizey)f_x=1+\sum_{y\in son_x}f_y×prime(size_y)fx​=1+∑y∈sonx​​fy​×prime(sizey​) [NOIP2018 普及组] 对称二叉树 题目.

SC_Linno的博客 439

E. Preorder(树哈希)

传送门 题意 思路 所以问题主要在于如何确定两颗树是否本质不同; 这里使用树哈希,哈希函数如下; 当前节点的值为A,那么就取P0P_0P0​;为B,则取P1P_1P1​ 其中P0,P1P_0,P_1P0​,P1​为两个大的素数,depth为深度; Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = (1<<19) + 10; const int MO

weixin_45724872的博客 809

24.8.18(线段树维护字符串哈希,警钟长鸣,百度之星打铁)

注意到最后一个数是可以最先得知的,即 a【i】+1,这题样例很好造,多造俩样例再观察下规律,就发现可以给已经填过的数加上1的权值,p【i】 不能一下得到答案,需要枚举check,若枚举到 j,查询在 p【i】后填过多少比 j小的数 (树状数组,a【i】代表在 p【i】前有多少小于等于 j的数 (经过++处理,若加起来后等于 j即满足,那么此数一定就是 j,复杂度感觉有点极限。二分时,如果枚举 i顺着放,冲突关系没有经过排序处理,会导致前面放的很随意,以至于后面遇到无法避免的大冲突,但其实是可以避免的。

breath_of_yuan的博客 1264

树同构/树哈希

题目 P5043 【模板】树同构([BJOI2015]树的同构) 树的同构与哈希 判断两棵树是否同构,可以用树哈希实现,两颗树的哈希值一样时,我们可以判定他们同构。树的哈希只在有根树中有意义。当要判定两棵树是否同构时,我们可以选择它们的重心为根进行哈希。时间复杂度为O(nlogn)O(nlogn)O(nlogn)。 关于树哈希,用的比较多的方法是将子树从小到大排序,对于第iii个子树,乘上第iii个质数。 val[y]=∑x∈sonyval[x]∗prime[size(x)]val[y]=\sum_{x\i

陈颜的博客 823
上一篇: [双联通分量 并查集] CEOI 2017. One-Way Streets
下一篇: [动态网络 网络流] LOJ#6068.「2017 山东一轮集训 Day4」棋盘
LowestJN
博客等级 码龄10年 76粉丝 422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值