首页 > 其他分享 >NOI 2023 题解

NOI 2023 题解

时间:2023-09-15 09:57:13浏览次数:42  
标签:le NOI 删除 加入 题解 times 2023 考虑 节点

Copper Loser 的题解……

Day1 T1 方格染色

有一个 \(n\times m\) 的网格,有 \(Q\) 次操作,每次形如有三种:将 \((x_i+j,y_i)\)/\((x_i,y_i+j)\)/\((x_i+j,y_i+j)\) 染色,其中 \(j=0,1\dots L_i-1\)。 第三种操作至多只有 \(5\) 次,问之中有多少个格子被染过色。

扫描线板子题,首先令 \(ans=\sum\limits_{i=1}^QL_i\),然后考虑如何去掉被重复染色的部分。
对于横线与竖线的,离散化之后使用扫描线求值即可。
由于斜线之后 \(O(1)\) 条,可以将每条斜线和所有其他线的交点算出来,然后去重即可。
时间复杂度 \(O(Q\log n)\)。

Day1 T2 桂花树

给定一棵有 \(n\) 个节点的树 \(T\),保证一个节点的父亲编号小于它的编号。问有多少个有 \(n+m\) 的节点的树 \(T'\),满足对于所有 \(1\le i<j\le n\) \(i,j\) 在 \(T\) 和 \(T'\) 上的最近公共祖先相同,对于所有 \(1\le i<j\le n+m\),\(i\) 和 \(j\) 的最近公共祖先编号 \(\le \max(i,j)+k\)。

对于第一条限制,就确定了 \(T'\) 上 \(1,2\dots n\) 形成的虚树就是 \(T\)。

我们考虑从 \(T'\) 中逐个删除节点得到 \(T\) 的过程。

考虑特殊情况 \(k=0\),则对于当前最大的节点 \(u\),不存在 \(1\le i,j<u\),\(i,j\) 的最近公共祖先为 \(u\)。这也就意味着 \(u\) 至多只有一棵子树,所以可以直接将这个点删去。
反转这个过程,也就意味这我们可以从小到大把节点插在一条树边上,或者挂在一个节点下面,成为它的儿子。假设当前大小为 \(siz\),则一共有 \(2\times siz-1\) 种方案,所以这种情况的答案就是 \(\prod\limits_{i=1}^m(2n+2i-3)\),可以直接 \(O(m)\) 计算。

这给了我们一个想法,对于当前要插入的节点其他的节点会是完全相同的,这也就意味着答案可能和 \(T\) 的形态无关,实际上确实是这样的。

考虑回到一般情况 \(k=10\),仍然考虑从大到小删除,考虑当前最大的节点 \(u\),由于限制被放宽了,所以它可能会存在若干个儿子。但是,由于公共祖先编号要 \(\le \max(i,j)+k\),也就意味着它至多只有一个儿子的子树中存在编号 \(<u-k\) 的节点。那么,我们先跳过这个节点的删除,接着删除比它小的节点,由于上面的那一条限制,在删除到某一个编号 \(v \ge u-k\) 的节点时,\(u\) 只剩下一个儿子了,也就可以把 \(u\) 删除了。所以我们考虑在删除 \(v\) 的过程中同时删除掉 \(u\)。

不难发现 \(u\) 都会对应唯一的 \(v\),\(v\) 也至多只能对应一个 \(u\)。

考虑反过来加入的过程,加入一个节点 \(u\) 时,可能会将一个 \(\le u+k\) 的节点作为父亲捆绑加入,而这种情况下,这一对点只能是放在一条树边上的。

设计 DP 状态 \(f_{i,S}\) 表示当前要加入 \(n+i\) 号节点,在 \(n+i\sim n+i+k-1\) 中已经被加入了的节点集合为 \(S\)。则最终的答案就是 \(f_{m+1,\varnothing}\)。
考虑转移:
如果 \(n+i\in S\),说明 \(n+i\) 号节点已经被加入了,所以直接跳过,\(f_{i+1,S\setminus \{i\}}\gets f_{i,S}\)。
否则,我们可以按照正常的方式转移 \(n+i\),也就是 \(f_{i+1,S}\gets f_{i,S}\times [2\times (n+i-1+|S|)-1]\)。
或者可以捆绑一个 \(v\in ([n+i+1,n+i+k]\cap \mathbb{N})\setminus S\) 的节点一起加入,转移为 \(f_{i+1,S\cup {v}}\gets f_{i,S}\times (n+i-1+|S|-1)\)。

时间复杂度 \(O(mk2^k)\)。

Day1 T3 深搜

一棵生成树 \(T\),以及一个非树边边集 \(E\),给定若干个关键点,问有多少个 \(E\) 的子集 \(E'\),使得存在关键点 \(u\),使得在 \(T\) 中加入 \(E'\) 中的所有边得到的图,\(T\) 可以是一个以 \(u\) 为根的 dfs 树。

是 dfs 树,也就意味着 \(E'\) 中所有的边都是返祖边

标签:le,NOI,删除,加入,题解,times,2023,考虑,节点
From: https://www.cnblogs.com/Xun-Xiaoyao/p/17704154.html

相关文章

  • 宏景HCM SQL注入漏洞复现(CNVD-2023-08743)
    漏洞概述宏景HCM存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃取数据库敏感信息。影响范围宏景HCM<8.2漏洞复现fofa语法:FOFA:body='<divclass="hj-hy-all-one-logo"'鹰图语法:app.name="宏景HCM"POC:(注入点是categories字段)/servlet/codes......
  • 2023秋Java开学考试代码优化
    publicclassWarehouseInformation{privateStringitemno;privateStringitemname;privateStringsuppliername;privateStringwarehousingtime;privateStringwarehousenumber;privateStringshipmenttime;privateStringwareho......
  • 20230914
    今天是满课。早上UML课,感觉收获真的很多,了解到了很多软件开发中的知识。然后上体育课,排球好难,学不会,呜呜呜。下午算法与数据结构课,很抱歉的是,讲的单链表双链表之前就学过一点点,上课听的没意思,然后就摸鱼看JavaScript的很多知识,发现这玩意儿的语法确实很有趣,但是一些之前历史遗留......
  • 2023.09.14
        今天主要学习了继承,四种访问修饰符,方法重写,以及多态。同时上数据结构学习了关于单链表的创建,插入,删除,前插入,后插入的学习循环链表,双向链表的学习。在继承中用到extands来进行子类对父类的继承如:public classStudentextendsSE(){};表示学生对SE的继承。(继承可......
  • ES2023 Array new features All In One
    ES2023ArraynewfeaturesAllInOnechangeArraybycopyArray.toReversed()constnumbers=[1,2,3,4,5,6,7,8,9];constreversed=numbers.toReversed();console.log("reversed=",reversed);//reversed=[9,8,7,6,5,4,3,2,1]co......
  • 20230914打卡
    首先,我学习了UML的简要概念。UML是一种用于软件系统分析与设计的标准化语言,通过图形表示方法,可以清晰地描述软件系统的结构与行为。通过学习UML,我掌握了用例图、类图和时序图等基本图形的绘制方法,从而能够更好地理解和沟通软件系统的设计和实现。其次,我参加了篮球训练。篮球是一......
  • 2023.9.14 整数二分排序
    1#二分23##整数二分45~~~c++6//区间[l,r]被划分成[l,mid]和[mid+1,r]时使用7inttest01(intl,intr)8{9while(l<r)10{11intmid=(l+r)/2;12boolcheck(intmid);//check判断mid是否满足x性质13if(check(......
  • 2023/09/14
     classSolution{public:vector<int>twoSum(vector<int>&nums,inttarget){for(inti=0;i<nums.size();i++){for(intj=i+1;j<nums.size();j++){if(nums[i]+nums[j]==targe......
  • 【愚公系列】2023年09月 WPF控件专题 Expander控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 2023年9月14日
    效果图图1图2浮动显示信息、导航栏HTML<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>2023年9月14日</title> <linkrel="stylesheet"href="./css/index_style.css"> </head> <b......