首页 > 其他分享 >Public CTT Round #2 Day 1

Public CTT Round #2 Day 1

时间:2024-11-27 19:45:34浏览次数:6  
标签:CTT leq Public 构造 Day 上界 象限 theta 节点

赤橙黄绿

不妨假设 \(n\leq m\)。

不妨先考虑 \(n\not=m\) 的情况,此时 \(X\in [1,n+m-1]\)。

对于 \(X\leq m\),下界为 \(X\),上界为 \((X-1)n+1\),下界的取到的构造是在一行填 \(X\) 个,上界的取到的构造是对于每个数 \(i< X\),选择一个之前没有出现过的 \(k\),填 \((j,j+k)\) 对于所有 \(1\leq j\leq n\),容易发现填进去的数恰好为 \(i\),横坐标如果超过 \(m\) 视作循环,然后随便找一个位置填 \(X\)。中间的取值可以在上界删掉一些位置取到。

对于 \(X>m\) 的情况,下界是 \((X-m)n+1\),上界是 \(nm\)。下界的构造是空出一列剩下循环,因为 \(n\not =m\) 一定能取到,上界的构造是在下界后面随便填,但是每行要先填之前空出的一列以防值 \(=X\)。

然后考虑 \(n=m\) 的情况,\(X\leq m\) 是一样的,但是现在 \(X\) 取不到 \(n+m-1\) 了,只能取 \(n+m-2\)。同时下界的构造也是一样的,但是上界会有问题。

经过一定的手玩可以发现, \(X=n+1\) 与 \(X=n+m-2\) 的情况的上界是 \(nm-1\),其余情况上界是 \(nm\)。\(nm-1\) 的构造与之前构造类似,\(nm\) 的构造比较复杂,但是可以通过一个 \(n=5,X=7\) 例子描述:

1 2 3 4 5
4 1 2 3 6
3 4 1 2 7
5 6 4 1 2
2 3 5 6 1

大概就是前面正常填,最后两行交换特殊处理一下。然后就做完了。

submission

青与兰

感觉是很牛的题啊!

假设我们找到了最后的那个点 \(P\),然后找了一个方向 \(\vec{t}\) 作为 \(x\) 轴,其垂直方向作为 \(y\) 轴,则将第一象限和第三象限匹配,第二象限和第四象限匹配一定满足条件。

我们就钦定一定要这么匹配。假设确定了这个方向 \(\vec{t}\),则 \(x\) 轴会将所有点分成相等的两边,\(y\) 轴也是,于是 \(P\) 就确定了,整个划分方案也就确定了。

现在第一象限的点数等于第三象限的点数,第二象限的点数等于第四象限的点数。定义一个方向 \(\theta\) 的权值 \(c(\theta)\) 为第一象限的兰点减去第三象限的青点,这等于第四象限的兰点减去第二象限的青点,也即 \(c(\theta)=-c(\theta+\frac{\pi}{2})\)。

我们的目标是找一个 \(c(\theta)=0\) 的 \(\theta\),考虑在 \([0,\frac{\pi}{2}]\) 中二分找到这个角度,因为一端权值是正的一端是负的,并且对于点随机扰动之后函数值的变化是连续的,因此一定存在一个零点,01 二分即可。

求出 \(P\) 点的过程只需要找中位数,时间复杂度 \(O(\sum n\log \frac{1}{\epsilon})\)。

submission

黑与紫

首先考虑确定根节点怎么构造。从根节点开始 BFS,要求每个点一定有一条指向深度更小的点,这条边就是 fail 树上的边,剩下的就是 Trie 树上的边。这样就可以根据 Trie 树边和 fail 树边找到所有边的等价关系,标定权值以后用主席树重新建立 AC 自动机看看是否一致即可,以及还要判一大堆细节。

这个判定方法实在过于复杂,于是我们希望只判定 \(O(1)\) 个可能的根节点。

考虑根节点和根节点的儿子,其之间会是两条互相指向的有向边。将所有这样的有向边拉出来建立一个图,不妨令图上全是无向边,则一条无向边连接的两个点如果均不是根节点,则这两个点代表的字符串应该是全部一样的。那么所有这样的边应该会构成形如一个菊花每个儿子替换成一条链的形态。

如果一个点的度数 \(\geq 3\),则只能是这个点是根节点,如果没有这样的边是无解的,那么现在只剩下一条链的情况。考虑找一个链上的点 \(u\) 指向了另一个不在链上的点 \(v\),则 \(v\) 会有一条出边指向另一个链上的点,则根节点只能在这个点以及链上的前驱和后继中选取,这样就只需要判定 \(O(1)\) 个点。如果不存在这样的点那么链上的每个点都是可以作为根节点的。

时间复杂度 \(O(n\log n)\),如果你有兴趣的话其实是可以做到 \(O(n)\) 的(

submission

标签:CTT,leq,Public,构造,Day,上界,象限,theta,节点
From: https://www.cnblogs.com/275307894a/p/18572962

相关文章

  • Day1.了解MarkDown
    Markdown学习标题三级四级+空格+文字=标题几个#就是几级标题字体HelloWorld!两边各一个*,斜体HelloWorld!两边各两个*,加粗HelloWorld!两边各三个*,斜体+加粗HelloWorld!两边各两个~~,划去引用每天学一点,早晚成大佬。一个箭头符号<或>分割线三个-或三......
  • Day41--练习--选择题错题
    Day41--练习--选择题错题若要在Java中表示一个空引用,应该使用什么?正确答案:AA.nullB.0C.""D.false解析:在Java中,用null来表示空引用,即一个对象引用不指向任何有效的对象实例。0一般用于表示数字类型的初始值或特定数值含义;""用于表示空字符串,它是一个有效的String对象......
  • 【开源系列】Faraday : 渗透测试 IDE 和漏洞管理平台
    什么是Faraday?Faraday是一个开源的漏洞管理平台,它旨在帮助安全团队有效地管理和协作处理漏洞。Faraday提供了一个集中的平台,用于收集、分析和报告漏洞信息。它支持多种集成,可以与各种安全工具和扫描器无缝对接,从而提高漏洞管理的效率和准确性。Faraday的功能特点多功能集......
  • Day41--什么时候需要初始化对象
    Day41--什么时候需要初始化对象需要初始化对象的情况使用对象的成员变量或方法时当你需要访问对象的成员变量或者调用对象的方法时,必须先初始化对象。例如:classMyClass{intvalue;voidprintValue(){System.out.println("Valueis:"+value);......
  • Java DAY8
        用Lambda函数替代匿名内部类对象(在匿名内部类的基础上再简化)Lambda省略更优雅,但是非必须方法引用(可遇而不可求,以看得懂为主)    静态方法引用        类名::静态方法名        实例方法引用    特定类的方法引用......
  • java学习03day
    Java的一些特性变量java的变量相对于c语言而言不能重复定义会爆错inte,f=30;上述的代码相当于f为30,e没有进行复制强类型语言:每个变量都必须声明其类型数据类型数据类型分为:1、基本数据类型:数值型(整数类型(byte、short、int、long)浮点类型(float、double))、字符型(char)、布......
  • PythonDay4Advance
    PythonDay4Advance函数引言:比如植物大战僵尸,这个游戏本身也是由代码编写,现在假设有一种豌豆射手,每发射一次炮弹会执行100行逻辑代码如果我在程序,每当需要发射炮弹的时候,都要编写100行逻辑代码,就会觉得该程序过于冗余,代码重复度较高。解决方案:如果我将这100行代码放到一个......
  • 代码随想录算法训练营day58| 117.软件构建 47.参加科学大会
    学习资料:https://www.programmercarl.com/kamacoder/0117.软件构建.html#拓扑排序的背景图论拓扑排序:收集入度为0的节点,删掉该节点后其他节点的入度可能变化,记得更新,然后继续删除入度为0的点,直到没有。整个过程的顺序就对应了有向图dijkstra算法:类似prim,也是贪心,找距离源点最近......
  • Python基础 day2 变量 数据类型
    一:变量1.什么是变量    计算机中的变量,按字面理解同样也是一个会变的变量,因为它可能表示一个字符串,一个数字,或者是一个小数。    变量就相当与数据的容器-->作用是用来存数据,因为计算机的本质就是和各种数据打交道。2.变量的组成1.数据类型(type)2.内......
  • 新手村Day1
    据上次发flag依旧快两个月了,然而我还是能拖则拖,不得不说拖延症是一种很危险的疾病,今天终于打算静下心来把之前看的零零散散的Java教程总结一下,试着回忆一下学到的基础知识点,我学的Java教程是b站的狂神说,这是我大学老师推荐我学的,听了一丢丢的我就觉得受益匪浅,因为秦老师真的是会把......