首页 > 其他分享 >Solution Set 2

Solution Set 2

时间:2024-09-06 22:13:34浏览次数:10  
标签:Set log text 复杂度 Solution 双端 mathcal 节点

\(\text{「CF1037H」Security}\)

有关字典序可以依次考虑 \(T\) 的每一位转化为询问 \(\mathcal O(|\Sigma||T|)\) 个字符串在区间 \([l,r]\) 的存在性判断。因为可以用线段树合并维护 \(\text{SAM}\) 上每个等价类的 \(\text{endpos}\) 集合,所以将存在性判断离线放在 \(\text{SAM}\) 的每个节点上在通过一次线段树合并依次回答即可,复杂度为 \(\mathcal O(|S|\log |S|+|\Sigma||T|\log|S|)\).

\(\text{「CF1017G」The Tree}\)

直接暴力,发现修改涉及到规模为 \(\mathcal O(n)\),而查询却只有 \(\mathcal O(1)\),所以考虑将修改复杂度摊到查询上。发现一条链上 \(1\) 操作的顺序并不影响最终染黑的节点,所以定义 \(w_u\) 为 \(u\) 向下扩展的层数,如果 \(w_u=-1\) 表示不扩展,初始时 \(w\) 全为 \(-1\)。这样 一段链的和表示从链头扩展到链尾的层数,如果 \(\sum w_u\ge0\) 则表示链尾被染黑。所以修改只需单点加,而查询只需查询 \((\text{root},u)\) 的最大后缀和是否大于等于 \(0\) 即可。而 \(2\) 我们只需将子树全清空为 \(-1\),再将 \(w_u\) 赋为到根链最大后缀和值减 \(1\),复杂度为 \(\mathcal O(n\log^2 n)\).

\(\text{「AGC018C」Coins}\)

先钦定所有人对选择金币,我们令 \(u_i=b_i-a_i,v_i=c_i-a_i\),若是 \(v_i+u_j<u_i+v_j\) 则 \(j\) 选择银币时 \(i\) 必定选择银币,所以我们可以按 \(u_i-v_i\) 排序,则序列分为两段,前一段选择铜币,后一段选择银币,直接优先队列维护即可,复杂度为 \(\mathcal O(n\log n)\).

\(\text{「AGC093F」Dark Horse}\)

发现 \(1\) 无论在哪个位置方案数都是一样的,不妨将其放在 \(1\) 号位统计答案在乘上 \((2^n)!\),答案符合即是 \([2,2],[3,4],[5,8],...,[2^{n-2}+1,2^n]\) 这 \(n\) 个区间最小

\(\text{「雅礼集训 2018 Day10」} 贪玩蓝月\)

考虑如果物品槽是一个栈,可以用 \(\mathcal O(mp)\) 的 \(\text{dp}\) 做,删除时直接回到上个状态即可,考虑如何扩展到双端队列。

有个经典 \(\text{trick}\) 就是双栈维护双端插入删除元素。该 \(\text{trick}\) 可以双端插入删除,维护半群运算,做到均摊 \(\mathcal O(n)\) 次运算。

用两个栈分别维护前后端的插入删除。

如果一个栈空了,考虑将另一个栈的元素按中点划分开,分别装入两个栈。

复杂度考虑势能函数 \(\Phi(t)=|\text{size}_1-\text{size}_2|\),即两个栈的大小之差。每次 \(\Phi(t)\) 最多增加 \(1\),重构时 \(\Phi(t)\leftarrow 0\),所以复杂度是均摊 \(\mathcal O(1)\)。

用这个 \(\text{trick}\) 即可做到 \(\mathcal O(mp)\).

\(\text{「SDOI2017」} 苹果树\)

首先转换题意,发现 \(t-h\le k\) 可以看成原树上免费选一条从根出发的任意路径,再在此基础上选择 \(k\) 个苹果。

观察到每个节点必须先选一个苹果才能再选苹果是类似一种树形依赖关系,可以将 \(a_i>1\) 的节点 \(i\) 拆为两个点,分别有 \(1\) 和 \(a_i-1\) 个苹果且后一个节点依赖前一个节点。

然后这题可以

标签:Set,log,text,复杂度,Solution,双端,mathcal,节点
From: https://www.cnblogs.com/JIEGEHHHH/p/18171218

相关文章

  • 忘记PbootCMS后台用户账号密码时进行重置resetpw.php
    <?php/***@copyright(C)2016-2099HnaoyunInc.*@licenseThisisnotafreeware,useissubjecttolicenseterms*@authorXingMeng*@[email protected]*@date2018年11月17日*重置PbootCMS用户密码*///设置字符集编码、IE文档模式header('Co......
  • 【YashanDB知识库】修改字段长度后,jdbc驱动接口报YAS-04007 Message:result set metada
    问题现象yashandb修改表的字段长度后,客户的业务接口报YAS-04007异常,截图如下:问题的风险及影响客户的业务在访问yashandb时异常出错,影响使用问题影响的版本所有的yashandb版本问题发生原因使用jdbc接口获取PreparedStatement以后,修改表的字段长度,再用前面获取的PreparedStatement继......
  • android利用jni读取assets文件夹下的文件
    一、概述在jni的开发中,有时候会在c/c++层读取assets文件夹下的图片。有两种方式可以选择:方式一:在java/kotlin层把文件读取出来,然后以字符串的形式传递给jni层。方式二:java/kotlin层传递一个文件名,jni利用AAssetManager读取文件内容目前介绍的是第二种方......
  • idea安装GenerateAllSetter插件及使用方法
    一、背景使用set方法在遇到对象属性过多的时候,依次set相较麻烦费时不能一键调用一个对象所有的set方法二、解决方法安装GenerateAllSetter插件步骤如下1、选择File-Settings2、选择Plugins3、在输入框输入GenerateAllSetter进行搜索进入存储库搜索该插件GenerateAllSetter并安装......
  • AngularJS进阶(十五)Cookie ‘data‘ possibly not set or overflowed because it was
    Cookie ‘data’ possibly not set or overflowedbecause it was too large (5287 > 4096 bytes)!注:请点击此处进行充电!故事起源项目开发过程中遇到以上问题,刚开始以为只是个警告,没太在意。后来发现直接影响到了程序的执行效果。果断寻找解决方法。问题......
  • C++ STL set/multiset容器
    set/multiset容器简介Set的特性是,所有元素都会根据元素的值自动被排序。Set不允许两个元素有相同的值。Set的迭代器iterator是一种const_iterator,不能通过迭代器改变任意set元素的值。multiset的特性和用法和set相同,唯一的差别在于它允许值重复。set和multiset的底层实现是红......
  • GROUPING_SETS 用法
    在Hive中,`GROUPINGSETS`是一个用于生成多个分组聚合的SQL功能,它可以让你在一个查询中指定多个分组集,这样可以有效地生成多维度的汇总数据。下面我将通过一个例子来展示如何使用`GROUPINGSETS`,并创建一个Hive表以及插入十条数据进行演示。###步骤1:创建Hive表首先,我们创建......
  • 【Day06-集合-Collection&List&Set】
    集合        集合框架概述        Java集合框架(JavaCollectionFramework,JCF)是Java编程语言的一部分,它提供了一种存储和操作一组对象的方式。这个框架的设计目标是提供一组标准的数据结构来帮助开发者更有效地管理数据。        接口与实现接口......
  • 『功能项目』AssetBundle上传加载u3d模型【23】
    本章开始做游戏的登陆界面,运用热更新的AssetBundle上传加载u3d模型首先在22骑乘坐骑项目基础上重新创建一个场景重命名为RegistrationUI在资源商店下载一个场景选择一个免费资源场景导入进入新导入的场景完全解压缩后重命名为ResUIScene将颜色调成为蓝色调删......
  • 第四天 Pytset 测试框架
    一、Pytset介绍pytest是一个用于Python的开源测试框架,支持简单、灵活且功能强大的单元测试、功能测试和集成测试。它是目前最流行的Python测试工具之一,具有易用性和丰富的功能pytest使用简单的命名规则,测试函数的名称必须以test_开头,便于框架自动识别和执行pytest ......