首页 > 其他分享 >IOI 2019 题解

IOI 2019 题解

时间:2023-01-13 13:44:07浏览次数:52  
标签:le 题解 Day2 合法 矩形 2019 IOI size mathrm

Day1 A 排列鞋子

从前往后考虑每个位置 \(i\),并找到与它匹配的最靠前的元素,将这两个元素放在最靠前的空位置,最后算一下逆序对个数即可。

Day1 B 景点划分

假设 \(a\le b\le c\),于是有 \(a\le \frac{n}{3},b\le\frac{n}{2}\)。

任取图的一棵 DFS 树,设这棵树以 \(1\) 为根。假如能找到一个点 \(u\) 满足 \(\mathrm{size}_u\in [a,n-b]\) 或者 \(\mathrm{size}_u\in [b,n-a]\),那么就做完了。因为 \(a\le b\le n-b\le n-a\),所以其实就是要找一个 \(\mathrm{size}_u\in [a,n-a]\) 的 \(u\)。

如果没有这样的 \(u\),那么我们需要对生成树做调整。考虑那些 \(\mathrm{size}_u>n-a\) 的 \(u\),因为 \(a\le \frac{n}{3}\),所以这样的 \(u\) 一定分布在以 \(1\) 为端点的一条链上。找到这条链最底下的那个点 \(v\),我们需要将 \(v\) 调整成满足 \(\mathrm{size}_v\le n-a\) 的。此时只有那些一端在 \(v\) 的儿子的子树内,一端在 \(v\) 的祖先上的返祖边是有用的。每条这样的返祖边都可以让 \(\mathrm{size}_v\gets \mathrm{size}_v-\mathrm{size}_x\),其中 \(x\) 是 \(v\) 的某个儿子。

并且,这样调整不会让 \(\mathrm{size}_v<a\),因为 \(n-a-a\ge a\),而 \(v\) 的所有儿子的 \(\mathrm{size}\) 都 \(<a\),所以如果能让 \(\mathrm{size}_v\le n-a\),那么就一定有解,否则一定无解。

Day1 C 矩形区域

一个重要性质是:合法的矩形个数是 \(O(nm)\) 的。

我们统计出对于每个行 \(i\),其中有哪些满足 \(a_{i,l-1},a_{i,r+1}\) 均大于 \([l,r]\) 中的最大值的区间 \([l,r]\)。感性理解,对于每一行,这样的区间个数是 \(O(m)\) 的。

然后枚举矩形的列边界 \([l,r]\)。考虑那些合法区间中有 \([l,r]\) 的行,这样的行会形成若干值域连续段。只需要对于每个值域连续段分别计算即可,因为段间矩形一定不合法。

考虑一个值域连续段,设它在行这一维上包含了 \([L,R]\)。考察一个矩形 \((x_1,L),(x_2,R)\),因为我们已经能保证每行都是合法的了,所以只需要预处理 \(u_{i,j},d_{i,j}\) 表示 \((i,j)\) 顶上/底下那部分中第一个大于等于 \(a_{i,j}\) 的位置,那么这个矩形合法的充要条件就是 \(\min_{L\le j\le R} \{d_{x_1-1,j}\}>x_2\land \max_{L\le j\le R} \{u_{x_2+1,j}\}<x_1\)。于是做一遍二维数点即可统计。

总时间复杂度 \(O(nm\log n)\)。

Day2 A 折线

呃。

Day2 B 视觉程序

\(|r_1-r_2|+|c_1-c_2|=K\) 是不好做的,考虑转成切比雪夫距离,\(\max(|r_1-r_2|,|c_1-c_2|)=K\)。这样只需要实现对于 \(k\in \{K-1,K\}\),算出 \(|r_1-r_2|\) 是否 \(\le k\),以及 \(|c_1-c_2|\) 是否 \(\le k\)。这两个都是好实现的。

Day2 C

以后补。

标签:le,题解,Day2,合法,矩形,2019,IOI,size,mathrm
From: https://www.cnblogs.com/alan-zhao-2007/p/ioi-2019-problems.html

相关文章

  • 【题解】CF893F Subtree Minimum Query
    那个……令姐……能以成亲为前提……和我交往吗(娇羞)集训完刚好开方舟春活,并且我刚好攒够了给令姐买衣服的石头,这真的是巧合吗?思路各种做法,但是有强化版。首先是naive......
  • 题解 P8294 [省选联考 2022] 最大权独立集问题
    Solution根据一些逝去的记忆可以得到一个DP状态:\(f_{u,x,y}\)表示\(u\)这棵子树,\(x\)从子树出去,\(y\)进来这棵子树。然后讨论一下状态转移,可以暴力枚举状态,暴力枚......
  • CF244A Dividing Orange 题解
    Description有\(n\timesk\)个橘子,\(k\)个小朋友每人拿\(n\)个,但是每个人都指定了一个橘子\(a_i\),分配时必须要把\(a_i\)给第\(i\)个小朋友,求任一分配方案。So......
  • js加法精度问题解决
    //加法exportconstnumAdd=(num1,num2)=>{letbaseNum,baseNum1,baseNum2try{baseNum1=num1.toString().split('.')[1].length}cat......
  • vs2022中打开vs2019的WPF项目的坑:XDG0005、XDG0066
    之前在vs2019中建立的WPF项目,在VS2022中打开时,XAML设计器界面显示不正常底下报的错是XDG0005与XDG0066编译和运行都没问题最后发现问题所在:原先在窗体中有一项目设定:VisualB......
  • maven引入本地jar不能打入部署包的问题解决
    引入的三方依赖 jar 包, scope 为 system 的包 maven 默认是不打包进去的,需要加这个配置在pom.xml文件中找到spring-boot-maven-plugin插件,添加如下配置<configu......
  • 【题解】P4126 [AHOI2009]最小割
    题意求最小割和可行边和必须边。思路清真,清真,还是**的清真。考虑可行边的充要条件:满流不存在另一条\(u,v\)间的最短路,即在残量网络上不存在包含\(u,v\)......
  • 【题解】P6071 『MdOI R1』Treequery
    海浪尽头的你啊,到底何时归来?额滴就木异象啊……思路清真树论。树论地考虑祖先后代关系,分讨一下。用ST表处理一下\(lca(l,r)=u\):\(u,p\)无祖先后代关系,答案......
  • 洛谷P7792 KRIZA 题解 C++
    洛谷P7792KRIZA题解C++题目概述:题目传送门Sisyphus在一个圆形的房间里,房间内有n扇锁着的门,他有n把钥匙,其中第i把钥匙对应第$v_i$扇门,遇到不匹配的钥匙就放......
  • 剑指offer代码 vs2019执行
    方法:代码文件夹名称为:CodingInterviewChinese2-master1.用vs2019加载解决方案.sln文件  2.一个解决方案下面有多个项目,通过右键解决方案->属性->通用属性->启动......