Educational Codeforces Round 65 (Rated for Div. 2)E. Range Deleting(区间修改线段树)

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

想了个思路不敢交,发现 luogu 没有我的题解的思路,就麻利码出来交了,开水,逃

所在比赛传送门

假如完全非降,直接随便删就行

a n s = ∑ i = 1 n ( n − i + 1 ) ans=\sum_{i=1}^{n}(n-i+1) ans=i=1∑n​(n−i+1)

考虑只有一个下降的地方,答案并不改变

考虑有一个沟

n u m [ l ] < = n u m [ r ]   a n d   n u m [ l ] > max ⁡ l < i < r ( n u m [ i ] ) num[l]<=num[r]\ and\ num[l]>\max_{l<i<r}(num[i]) num[l]<=num[r] and num[l]>l<i<rmax​(num[i])

我们发现要维护这序列的单调性,只需要关注两个区间就行,

[ min ⁡ l < i < r ( n u m [ i ] ) , max ⁡ l < i < r ( n u m [ i ] ) ] [\min_{l<i<r}(num[i]),\max_{l<i<r}(num[i])] [l<i<rmin​(num[i]),l<i<rmax​(num[i])]

和

[ l < i < r ( i f ( n u m [ i − 1 ] > n u m [ i ] ) ) ( min ⁡ 1 < j < i ( n u m [ j ] )   a n d   n u m [ j ] > n u m [ i ] ) , n u m [ l ] ] [_{l<i<r}(if(num[i-1]>num[i]))(\min_{1<j<i}(num[j])\ and \ num[j]>num[i]),num[l]] [l<i<r​(if(num[i−1]>num[i]))(1<j<imin​(num[j]) and num[j]>num[i]),num[l]]

我们至少要删掉其中一个区间,因为只要包含这两个区间就行,我们可以在计算答案时枚举左端点,第二个区间我们命名为 [ l 1 , r 1 ] [l1,r1] [l1,r1],第一个是 [ l 2 , r 2 ] [l2,r2] [l2,r2],可以发现 l 1 < l 2 l1<l2 l1<l2的,细分为 3 3 3个区间, [ 1 , l 1 ] [1,l1] [1,l1]、 [ l 1 + 1 , l 2 ] [l1+1,l2] [l1+1,l2]、 [ l 2 + 1 , x ] [l2+1,x] [l2+1,x]左端点在第一个区间的,删除区间的右端点至少是r1,同理其它区间的左端点删除区间分别是 r 2 r2 r2、无解(因为一定不能删掉其中一个区间,我们用一个值 i n f inf inf表示它),区间修改当然是线段树辣,来个懒标暴力线段树

当考虑多个沟时,每个沟都得删除至少一个区间,注意到对应每一个左端点,它要删除的最小区间的右端点不能在经过一个沟之后变小,取个 max ⁡ \max max就行,我们用线段树的懒标也是取个 max ⁡ \max max

ac 代码

# include  <bits/stdc++.h>
using  namespace  std ;

using ll = long long ;
namespace predefine {
const long long inf = 0x3f3f3f3f3f3f3f3f ;
using ll = long long ;

# define  IOS  iostream::sync_with_stdio ( 0 ) ; cin.tie ( 0 ) ;

# define af( i , a , b ) for ( ll i = a ; i <= b ; ++ i )
# define df( i , a , b ) for ( ll i = a ; i >= b ; -- i )
}
using namespace predefine ;


template <typename T>
class SegtreeLazyRangeSet {
	vector<T> tree , lazy ;
	vector<T> *arr ;
	ll n , root , n4 , end ;

	void maintain ( ll cl , ll cr , ll p ){
		ll cm = cl + ( ( cr - cl ) >> 1 ) ;
		if ( cl != cr && lazy [ p ] ) {
			lazy [ p << 1 ] = max ( lazy [ p << 1 ] , lazy [ p ] ) ;
		    lazy [ p << 1 | 1 ] = max ( lazy [ p << 1 | 1 ] , lazy [ p ] ) ;
		}
	}
    void set_all ( ll l , ll r , ll p ) {
        if ( l == r ) {
            ( *arr ) [ l ] = max ( ( *arr ) [ l ] , (ll) lazy [ p ] ) ;\
            return ;
        }
        maintain ( l , r , p ) ;
        ll m = ( l + r ) >> 1 ;
        set_all ( l , m , p << 1 ) ; set_all ( m + 1 , r , p << 1 | 1 ) ;
    }
	void range_set ( ll l , ll r , T val , ll cl , ll cr , ll p ) {
		if ( l <= cl && r >= cr ) {
			lazy [ p ] = max ( lazy [ p ] , val ) ;
			return ;
		}
		ll m = cl + ( ( cr - cl ) >> 1 ) ;
		maintain ( cl , cr , p ) ;
		if ( l <= m ) range_set ( l , r , val , cl , m , p << 1 ) ;
		if ( r > m ) range_set ( l , r , val , m + 1 , cr , p << 1 | 1 ) ;
	}
public : 
	explicit SegtreeLazyRangeSet < T > ( vector < T >& v ) {
		n = v.size () ;
		n4 = n * 4 ;
		lazy = vector < T > ( n4 , 0 ) ;
		arr = &v ;
		end = n - 1 ;
		root = 1 ;
	}
	void show ( ll p , ll depth = 0 ) {
		if ( p > n4 || tree [ p ] == 0 ) return ;
		show ( p << 1 , depth + 1 ) ;
		for ( ll i = 0 ; i < depth ; ++ i ) putchar ( '\t' ) ;
		printf ( "%d:%d\n", tree [ p ] , lazy [ p ] ) ;
		show ( p << 1 | 1 , depth + 1 ) ;
	}

	T range_sum ( ll l , ll r ) { return range_sum ( l , r , 0 , end , root ) ; } 

	void range_set ( ll l , ll r , ll val ) { if ( l <= r ) range_set ( l , r , val , 0 , end , root ) ; } 

    void set_all () { set_all ( 0ll , end , root ) ; }
};

void solve ()
{
    ll n , x ; cin >> n >> x ;
    vector < ll > v ( n ) ;
    af ( i , 0 ,n - 1 ) cin >> v [ i ] , -- v [ i ] ;
    vector < ll > ans ( x ) ;
    iota ( ans.begin () , ans.end () , 0 ) ;
    SegtreeLazyRangeSet < ll > tree ( ans ) ;
    set < ll > s ; s.emplace ( v [ 0 ] ) ;
    af ( i , 1 , n - 1 ) {
    	s.emplace ( v [ i ] ) ;
        if ( v [ i ] < v [ i - 1 ] ) {
            ll l1 = v [ i ] , r1 = v [ i ] , l2 = * ( s.upper_bound ( v [ i ] ) ) , r2 = *( s.rbegin () ) ;
            ++ i ;
            while ( i <= n - 1 && v [ i ] < r2 ) {
                l1 = min ( l1 , v [ i ] ) ;
                r1 = max ( r1 , v [ i ] ) ;
                s.emplace ( v [ i ] ) ;
                if ( v [ i ] < v [ i - 1 ] ) {
                    auto tmp = s.upper_bound ( v [ i ] ) ; 
                    l2 = min ( *tmp , l2 ) ; 
                }
                ++ i ;
            }
            s.emplace ( v [ i ] ) ;
            tree.range_set ( 0      , l1    , r1     ) ;
            tree.range_set ( l1 + 1 , l2    , r2     ) ;
            tree.range_set ( l2 + 1 , x - 1 , inf    ) ;
        }
    }
    tree.set_all () ;
	ll ys = 0 ;
    af ( i , 0 , x - 1 ) {
        if ( ans [ i ] != inf ) {
            ys += ( x - 1 - ans [ i ] + 1 ) ;
        }
    }
    cout << ys << endl ;
}

int  main () {
	// IOS
	ll _ = 1 ;
//	cin >> _ ;
	while ( _ -- ) {
		solve () ;
	} 
	return 0 ;
}
Cadence Virtuoso IC617:从零构建传输门与反相器的Schematic设计实战 本文详细介绍了使用Cadence Virtuoso IC617进行传输门与反相器Schematic设计的完整流程,包括环境准备、原理图绘制、Symbol创建、仿真验证及实用技巧。通过分步指导和实战经验分享,帮助初学者快速掌握集成电路设计基础,提升EDA工具应用能力。 阅读详情

相关推荐

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

Educational Codeforces Round 65 (Div. 2) 题解(A~F)

题目地址:https://codeforces.com/contest/1167 同时发布在本人的洛谷博客:https://www.luogu.org/blog/996-icu/ 明天线代期末考然而不怕死的我还是打算写一发题解,求线代考试RP++ G题确实没空看没空想就鸽了 A. Telephone Number 没啥好说的(虽然我第一发提交看错题目还wa了orz) B. Lost Numb...

I1I1I11I1I1的博客 207

ESP8266+Mixly+MIXIO物联网实战:用色盘控制WS2812 RGB灯(附完整代码)

本文详细介绍了如何利用ESP8266微控制器、Mixly图形化编程工具与MIXIO物联网平台,快速构建一个可通过网页色盘远程控制WS2812 RGB智能灯带的实战项目。内容涵盖硬件接线、平台配置、代码编写与调试全流程,旨在帮助物联网爱好者与初学者轻松实现创意灯光应用,掌握智能硬件开发的核心技能。

gin88的博客 262

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 229

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 946

【WRFDA教程第一期】运行观测预处理程序(OBSPROC)

运行观测预处理程序(OBSPROC)

WW、forever的博客 1896

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 316

第八章 Vite4+Vue3+Vtkjs 完整demo演示

vtk.js是一个基于WebGL的开源3D可视化库,它可以在Web浏览器中呈现高质量的3D图形。vtk.js提供了一个易于使用的API,可以用于创建各种类型的3D可视化,包括科学、医学、工程和地球科学等领域。vtk.js支持多种数据格式,包括VTK、DICOM、STL等,可以轻松地将数据导入到可视化中。此外,vtk.js还支持交互式可视化,用户可以通过鼠标和键盘进行交互,探索和分析数据。采用的vite4+pinia搭建的Vue3项目。

Wait.End的博客 2234

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 593

基于大模型最大化电力交易收益(策略与代码实践)

新一代电力交易系统正借助大型语言模型(LLM)实现智能化转型。面对可再生能源占比提升带来的市场波动性加剧,传统交易策略已难以应对。LLM通过多模态能力,能够实时处理海量异构数据,包括政策公告、设备检修信息、天气报告等非结构化数据,构建更精准的电力市场预测模型。智能交易系统主要包含三大核心模块:市场情报感知与理解器、融合LLM的短期电价预测模型和自适应交易策略生成器。这些模块协同工作,可在几分钟内完成事件分析、价格预测和策略生成,显著提升交易效率。系统还能实现跨市场套利和动态风险管理,但需注意数据质量、模型验

专注AI大模型,软件混淆,授权 1257

ABAP Cloud 里的高性能日志:CL_BALI_LOG、XCO_CP_BAL 与 AML 的性能对比与选型指南

ABAP日志框架性能对比与选型建议 本文对比了ABAP Cloud中三种主流日志框架的性能表现与适用场景: 标准BALI:适合明确需要保存日志的场景,保存路径短,性能较好 XCO_CP_BAL:API更现代但性能较低,适合需要即时可见性的场景 AML:开源框架,擅长消息缓冲,适合批量处理时暂存消息 测试结果表明: 纯记录不落库时AML最快 需要保存时BALI性能最优 second connection不提升性能但能确保日志留存 选型建议: 高频批处理优先AML+BALI组合 故障诊断考虑XCO的即时可见性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 215

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 22

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 750

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 371

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 414

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 172

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 87

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 219

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 359

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 45

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 400

贪心题目:可以到达的最远建筑

为了到达尽可能远的建筑物,在将砖块替换成梯子时,应将高度差最大位置的砖块替换成梯子,此时剩余的砖块数量最多,如果将高度差较小位置的砖块替换成梯子,则剩余的砖块数量较少,能到达的最远建筑物下标不可能更大。开始向后面的建筑物移动,移动过程中维护优先队列存储正高度差,优先队列的队首元素是最大元素,每次遇到正高度差时优先考虑使用砖块,如果砖块数量不够则使用梯子替换最大高度差位置的砖块,直到砖块和梯子都使用完毕时,到达的建筑物即为最远建筑物。如果以最佳方式使用给定的梯子和砖块,返回可以到达的最远建筑物的下标。

stormsunshine的博客 292

从曲线到储层:Techlog/KAPPA 全流程算法、UltraLAB 选型与本地 AI 部署实战

以高频 CPU 保证交互,以充足内存承载多井与多任务,以 NVMe 打通项目和知识库 I/O,再按本地模型、上下文与并发配置 GPU。对 UltraLAB 用户而言,更合理的采购方式是带着真实项目做选型:一组典型井、一套完整解释模板、一个目标大模型、一次多人并发测试。用实测结果确定配置,才能把预算转化为解释效率,而不是闲置算力。软件模块、操作系统与许可条件以厂商当前正式说明为准;硬件建议需结合项目实测。AI 输出只能作为辅助证据,不能替代岩石物理与油藏工程专业审核。

wdf8088的博客 184

强化学习第十一课:完整 Q-Learning 算法

表示有:\[ 5 \]0 1 2 3 40:向左1:向右目标位置:\[ 4 \]

qq_56657939的博客 306

【Deep-OC-SORT 01】多轨迹算法Deep-OC-SORT源码分析

本工程基于Deep-OC-SORT核心模块,重构并适配了EmbeddingComputer(外观特征提取)、CMCComputer(相机运动补偿)与OCSort(主跟踪器)三类。前者实现整框/网格模式的特征提取与L2归一化;后者通过稀疏光流或SIFT匹配估计仿射变换,补偿相机运动;主跟踪器融合IoU、外观相似度与方向一致性,支持模块开关与自定义组件,实现高效多目标跟踪。

Jayson 博客 337
上一篇: T103481 【模板】割边 洛谷
下一篇: Educational Codeforces Round 65 (Rated for Div. 2)D. Bicolored RBS
atzk
博客等级 码龄4年 87粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值