首页 > 其他分享 >[lnsyoj2234/luoguP9323]玩具设计

[lnsyoj2234/luoguP9323]玩具设计

时间:2024-08-02 16:30:04浏览次数:18  
标签:rt 连通 int luoguP9323 mid 玩具 版本 lnsyoj2234 sim

题意

原题链接
给定一个 \(n\) 个点的无向图,你可以进行不超过 \(max\_ops\) 次查询操作 \(\text{Connected}(x,a, b)\),每次操作可以查询在版本 \(x\) 中,\(a,b\) 两个点之间是否连通,若连通,则返回当前版本号,否则新建一个版本,在该新版本中将这两个点之间连一条边,并返回新版本的版本号。要求构造出一个无向图,使得对于任意两个点,这两个点之间的连通情况与原版本中这两个点之间的连通情况相同。

赛时 并查集 65PTS

最简单的算法即为 \(O(n^2)\) 的枚举。
事实上,如果两个点已经连通,就没有必要再次查询了;同理,如果一个的连通的任意一个点和另一个点不连通,也没有必要再次查询了。
因此,使用并查集维护连通性,并记录某一点不连通的所有点即可。

赛后

赛时的代码通过改变枚举顺序,可以 AC 此题。但仍有被卡可能。
类似于并查集的思想,我们可以记录与点 \(i\) 连通的最小的 \(f_i\),在输出时,我们只需要将 \(f_i\) 与 \(i\) 连边即可(\(f_i \ne i\))
显然,每个点有两种情况:

  1. 点 \(i\) 不与 \(1\sim i-1\) 的任意点相连通,单独成为一个连通块
  2. 点 \(i\) 与 \(1\sim i-1\) 中的至少一点相连通

我们可以记录点 \(1 \sim i\) 连通的最小的版本号 \(rt_i\),显然,\(rt_i = \text{Connected}(rt_{i-1}, 1, i)\)。
若 \(rt_i \ne rt_{i-1}\),由于版本 \(rt_{i-1}\) 中,\(1\sim i-1\) 已经连接,因此 \(i\) 单独成为一个连通块,即情况 \(1\)。
否则,\(i\) 不会单独成为一个连通块,即情况 \(2\)。

对于情况 \(1\),由定义,显然可得 \(f_i = i\);
对于情况 \(2\),在 \(rt\) 构成的版本序列中,可以分为两段,前一段中,\(i\) 不与 \(1\sim i-1\) 连通,此时任取这一段中的一个 \(rt_j\),都有 \(\text{Connected}(rt_j, j, i) \ne rt_j\);后一段中, \(i\) 与 \(1 \sim i-1\) 连通,此时任取这一段中的一个 \(rt_j\),都有 \(\text{Connected}(rt_j, j, i) = rt_j\)。
由此可得,在后一段中的第一个 \(rt_j\) 即为 \(i\) 与 \(1\sim i-1\) 连通的第一个版本,因此,\(f_i = j\)。显然我们可以使用二分通过 \(\log n\) 次查询找到这个 \(j\);

不过如果这样直接二分的话,对于特殊数据,可能会略微超出一点。因此,我们还需要进行一点优化:因为 \(f_i\) 是与 \(i\) 连通的编号最小点,因此,对于任意两点 \(i,j\),其中 \(f_i=i,f_j\ne j\),若 \(f_i=f_j\),则一定存在 \(i<j\)。因此,我们不需要二分整个 \(rt\),只需要二分其中所有下标 \(i\) 满足 \(f_i = i\) 的版本即可。

代码

#include "akai.h"

using namespace std;

const int N = 205;

int f[N], rt[N];
int s[N], idx = 0;

void ToyDesign(int n, int max_ops){
    rt[1] = 0;
    f[1] = 1;
    s[ ++ idx] = 1;
    for (int i = 2; i <= n; i ++ ){
        rt[i] = Connected(rt[i - 1], i - 1, i);
        if (rt[i - 1] != rt[i]) f[i] = i, s[ ++ idx] = i;
        else {
            int l = 1, r = idx;
            while (l < r){
                int mid = (l + r) >> 1;
                if (Connected(rt[s[mid]], s[mid], i) == rt[s[mid]]) r = mid;
                else l = mid + 1;
            }
            f[i] = s[l];
        }
    }

    vector<pair<int, int>> result;
    for (int i = 1; i <= n; i ++ ) 
        if (f[i] != i) result.push_back({i, f[i]});
    DescribeDesign(result);
}

标签:rt,连通,int,luoguP9323,mid,玩具,版本,lnsyoj2234,sim
From: https://www.cnblogs.com/XiaoJuRuoUP/p/-/lnsyoj2234_luoguP9323

相关文章

  • 059java jsp ssm二手玩具交换商城网站系统(源码+数据库+文档)
    项目技术:Spring+SpringMVC+MyBatis等等组成,B/S模式管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/10......
  • 杰理语音芯片AC1042A,变声喇叭玩具方案—云信通讯
    变声喇叭玩具内置多种声音效果,例如机器人声、怪兽声、动物声以及各种搞笑声,让孩子能够在玩耍过程中体验不同的声音变化。有一些变声喇叭还可以模拟名人声音,让孩子们仿佛变身成为自己心目中的英雄或者明星。无论是自由的想象力游戏还是模仿他人的声音,变声喇叭玩具都能让孩子乐在......
  • 高抗干扰触摸芯片VK36N系列1/2/3/4/5/6/7/8/9/10按键/通道适用于家电/玩具【FAE技术支
     概述.VK36N1D具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。提供了1个1对1输出脚,可通过IO脚选择上电输出电平,有直接输出和锁存输出2个型号可选。芯片内部采用特殊的集成电路,具有高电源电压......
  • P4290 [HAOI2008] 玩具取名
    原题链接题解1.复杂问题简单化,把字符用数字代替2.每次替换都会减少一个字符,到最后一定是由两个字符合成一个字符,并且这两个字符的来源区间不相交3.相同区间不同的合并方式,最后生成的字符也不同,所以dp多加一个状态4.题目只问能否合成对应字符code#include<bits/stdc++.h>us......
  • 玩具销售数据可视化
    背景描述淘宝销售乐高商品的店铺及其乐高产品、销量的信息进行分析数据说明数据集包括销售乐高的店铺信息、乐高的种类产品、销售省份等数据来源淘宝、天猫1.导入模块2.乐高淘宝数据分析及其可视化2.1乐高淘宝数据概览2.2乐高淘宝数据处理2.3乐高销量排......
  • 四轴飞行器玩具软件技术服务
    广东四轴飞行器玩具软件技术服务。东莞市酷得智能科技有限公司成立于广东省东莞市松山湖高新产业园区,我们专注于电子类方案开发设计,提供多类型的IC采购服务。酷得的益智玩具软件方案定制服务旨在为客户提供一站式的解决方案,帮助其在竞争激烈的市场中脱颖而出。酷得将以专业......
  • java毕业设计玩具租借系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今社会,随着人们生活水平的提升和消费观念的变化,儿童教育和娱乐逐渐成为家庭支出的重要部分。玩具作为儿童日常生活中不可或缺的元素,伴随着孩子的成长,......
  • 洛谷之P1563 [NOIP2016 提高组] 玩具谜题
    题目 [NOIP2016提高组]玩具谜题题目背景NOIP2016提高组D1T1 题目描述小南有一套可爱的玩具小人,它们各有不同的职业。有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图: 这时singer告诉小南一个谜......
  • JWT(JSON WEB TOKEN)是玩具吗
    JWT当然不是玩具,理解其设计意图,和适用场景自然会发现存在的就是有价值的JWT:JSONWebToken起源和定义JWT(JSONWebToken)是由IETF(InternetEngineeringTaskForce)基于RFC7519规范定义的。它是一种用于在网络应用间传递信息的标准方法。JWT最初由无状态的分布式应用场......
  • 消费玩具产品版权保护芯片推荐—LCS4110R
    消费类玩具产品市场需求巨大,例如消费类无人机、儿童照相机等产品行业内盗版非常严重,产品的卖点优势等得不到有效的保护。造成的同质化问题,严重影响品牌推广和企业利益。保护产品卖点优势就是保护企业的竞争力,越来越多的企业都在研究如何最大限度的保护产品的安全。我司的LCS4110R......