首页 > 其他分享 >9.11CF1819 题解

9.11CF1819 题解

时间:2023-09-14 19:12:39浏览次数:33  
标签:CF1819 cl 题解 元素 9.11 leq 清空 mx

9.11CF1819 题解

A. Constructive Problem

简单题,上链接:

链接

B. The Butcher

题意

有一张 \(h \times w\) 的纸片,现在对这张纸片进行 \(n−1\) 次裁剪。每次裁剪后会将其中一半收归(即这一半不会再被裁剪)。

保证纸片不会被旋转。

告诉你最终裁剪后的 \(n\) 张纸片长宽,问初始有多少 \(h\times w\) 的纸片可以裁剪成这 \(n\) 张纸片,输出所有可行解。

题解

考虑第一次剪的那一刀一定会保留下来一个 \(h\) 或者 \(w\)。

\(h_i\) 和 \(w_i\) 分别求最大,然后有可能 \(h = h_{max}\) 或者 \(w = w_{max}\)。

用面积先判断一次可不可以除尽。

之后 check 再模拟把一块块拼回去,看看有没有不合法的。

check 总的来说就是反复取 \(w,h\) 最大的,然后减去这一块,若发现取出来的和当前 \(w\) 或 \(w\) 不相等,那么无解。

set 维护即可。

check 部分手模一下应该就知道怎么搞。

C. The Fox and the Complete Tree Traversal

题意

给定整数 \(n\) 和一棵包含 \(n\) 个节点的树。 记 \(\operatorname{Dist}(x, y)\) 表示树上节点 \(x, y\) 之间最短路径的边数。 你需要判断是否存在一个 \(1 \sim n\) 的排列 \(p\) ,满足:

  • \(\operatorname{Dist}\left(p_{i}, p_{i+1}\right) \leq 2\) 对任意整数 \(i(1 \leq i<n)\) 成立。
  • \(\operatorname{Dist}\left(p_{1}, p_{n}\right) \leq 2\) 。
    存在则输出 Yes 然后输出任意一个满足要求的 \(p\) ,不存在则输出 No

例如下面的图,顺着黑色带箭头线填入排列就是一个合法解。

题解

不知道是怎么想出毛毛虫的,好厉害。

我们把一棵树旋转成一棵毛毛虫。

我们发现如果这个毛毛虫有长度 \(\ge2\) 的支链就无解(具体可以自己手玩尝试一下)。

然后就可以做了。

D. Misha and Apples

题意

给定 \(n\) 个集合 \(S_i\),第 \(i\) 个集合的大小为 \(k_i\),集合元素为 \(1\sim m\) 的正整数。特别地,若 \(k_i = 0\),则 \(S_i\) 可以是正整数 \(1\sim m\) 的任意可空子集,由你确定

可重集 \(S\),初始为空。按编号从小到大依次遍历每个集合,往 \(S\) 中加入 \(S_i\) 所有元素。每次加入当前集合的所有元素后,若 \(S\) 包含重复元素,则清空 \(S\)。注意,一个集合内的元素 同时 被加入 \(S\)。

你需要确定 \(k_i = 0\) 的 \(S_i\) 具体包含哪些数,使得最终的 \(|S|\) 最大。求出这个最大值。

多组数据。

\(1\leq T, \sum n, m\leq 2\times 10 ^ 5\),\(0\leq \sum k_i\leq 2\times 10 ^ 5\),\(S_i\) 的元素互不相同。

注意不保证 \(\sum m\) 的数量级。

题解

我们考虑最晚一次清空尽量早,这样清空之后的的处理就很简单了。

我们定义 \(cl_i\) 表示枚举到当前的 \(i\) 最晚一次清空尽量早,在 \(cl_i\) 处。

我们定义 \(f_i\) 表示在 \(i\) 时候是否可以被清空。

我们定义 \(mx\) 表示 \(S_i\) 所有元素上一次出现位置最晚一次在哪里。

当前在 \(i\),先来求 \(f_i\):

  • 如果 \(cl_{i} < mx\) ,显然当前一定出现重复元素,\(f_i = 1\)。

  • 如果 \(cl_i \ge mx\),并且 \([cl_i+1, mx]\) 之前存在一个空集,那么这个空集一定可以为我所用,让我在 \(i\) 清空,\(f_i = 1\)。

  • 否则 \(f_i = 0\)。

注意我们的 \(f_i\) 表示能否被清空,而不是一定被清空。

然后来更新 \(cl_{i + 1}\) :

初始化 \(cl_{i+1} = cl_i\)

  • 如果 \(cl_{i + 1} < mx\),那么在 \(i\) 处会被清空,我们要让最晚一次清空尽量早,我们就要让 \(mx\) 被清空掉,所以 ++cl[i + 1],直到 \(cl_{i+1} \ge mx\),进入下面的流程。

  • 如果 \(cl_{i+1} \ge mx\) ,如果 \(f_{cl_{i+1}} = 0\),那么 ++cl[i + 1],直到 \(f_{cl_{i+1}} = 1\)

最后 \(cl_n\) 就是最晚一次清空位置了。

之后看 \(cl_n\sim n\) 有没有空集,若有答案就是 \(m\),若没有答案就是 \(cl_n \sim n\) 集合元素个数。

标签:CF1819,cl,题解,元素,9.11,leq,清空,mx
From: https://www.cnblogs.com/hfjh/p/17703211.html

相关文章

  • Flutter插件flutter_boost 在android模块中的报红问题解决.
    1,在开发Flutter插件时,打开插件的android项目,准备编写native端的代码时,发现各种报红,代码无法跳转,体验十分不好。就像我下面的截图一样:导入了FlutterBoostflutterBoost源码爆红。但是运行正常。。这说明本身是没有问题的。。分明是没有错误的类都存在。但是就是爆红。。。。可......
  • 拼多多面试题解析:Java实现继承的七种方式!
    大家好,我是小米!今天,我要和大家一起来深入探讨一下拼多多的面试题:Java实现继承有哪7种方式?这是一个相当有深度的问题,不过别担心,我会尽力以通俗易懂的方式给大家讲解清楚,让大家对Java继承有更深刻的理解。什么是继承在Java编程中,继承是一种非常重要的概念,它允许一个类(子类/派......
  • 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决
    最近在做项目整合这个问题,然后在项目整合的时候,遇到了好多问题,这是其中一个,在此留作记录吧,虽然关键点不是我处理好的。访问前端页面,我先描述一下具体出现的现象:我访问前端jsp页面的时候,jquery文件,js,css样式等都会失效,也就是没有引入到jsp页面当中。查看浏览器console的时候,发现${pa......
  • VMware Ubuntu18.04找不到网卡ens33问题解决
     查询网卡状态[root@localhost~]# nmcli devicestatusDEVICE   TYPE     STATE      CONNECTIONens33    ethernet unmanaged  --lo        loopback unmanaged  --上面状态提示未接管 开启网络[root@localhost~]#nmcli......
  • 【dfs基础题】洛谷P1219题解
    题目大意给定棋盘的规格为\(n×n\),现在要摆\(n\)个皇后,使得每个皇后不能互相攻击。题目解答由题意可知,如果两个皇后在同一行或同一列或同一对角线,那么就会互相攻击。那么就简单了,若当前要摆的是第\(i\)个皇后,那么只需要for循环一遍前面的\(i-1\)个皇后,判断前面的皇后......
  • AtCoder Beginner Contest 319 全部题解
    AtCoderBeginnerContest319全部题解ALegendaryPlayers该题只需使用判断来写出所有的答案,注意不要复制错。#include<bits/stdc++.h>usingnamespacestd;strings;intmain(){ cin>>s; if(s=="tourist")cout<<3858<<endl; if(s=="ksun4......
  • 云主机测试Flink磁盘满问题解决
    问题描述:使用云主机测试Flink时,根目录满了。经排查发现运行Flink任务后根目录空间一直在减少,最后定位持续增加的目录是/tmp目录解决方法:修改Flink配置使用一个相对较大的磁盘目录做为Flink运行时目录#Overridethedirectoriesfortemporaryfiles.Ifnotspecified,the#sy......
  • Codeforces 1868C/1869E Travel Plan 题解 | 巧妙思路与 dp
    题目链接:TravelPlan题目大意:\(n\)个点的完全二叉树,每个点可以分配\(1\simm\)的点权,定义路径价值为路径中最大的点权,求所有路径的价值和。对于任意长度(这里主要指包括几个节点)的路径\(t\),最大点权不超过\(k\)的方案数有\(k^t\)个,因此最大点权恰好为\(k\)的方案数有......
  • 9.11课堂问题
     1.java7以上版本允许使用下划线分割多个位数。 2.使用当前的区域语言特性格式化数字 3.枚举值的foreach迭代创建一个迭代器遍历MyEnum中的数据。 4.原码反码补码概念原码、反码和补码是计算机中用来表示整数的三种形式。对于正数,它的原码、反码和补码都相同。而对于......
  • 动手动脑9.11笔记整理2
    变量作用域的判定:  ......