构造+bfs,CF 761E - Dasha and Puzzle

news2024/9/28 9:54:57

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

761E - Dasha and Puzzle


二、解题报告

1、思路分析

如果一个点的度 > 4,那么无解

注意到 平面很大——1e18,而点数 & 边数很小

我们像玩贪吃蛇那样蛇形顺时针内卷的走,如何保证走n - 1次得到的边都不交叉?

我们可以让第一根很长,后面依次减半

基于上面的策略,我们可以这样构造:

从0开始bfs 往外向邻接点伸边,每条边长度为 2^28

第二层的点分别向临界点伸边,每条边长度为 2^27,只要方向不往回走,就不会交叉

……

这样就完成了构造

2、复杂度

时间复杂度: O(N)空间复杂度:O(N)

3、代码详解

 ​
#include <bits/stdc++.h>

// #define DEBUG

using u32 = unsigned;
using i64 = long long;
using u64 = unsigned long long;

constexpr int P = 1E9 + 7;
constexpr int inf32 = 1E9 + 7;
constexpr i64 inf64 = 1E18 + 7;

constexpr int N = 2E5;

void solve() {
    int n;
    std::cin >> n;

    std::vector<std::vector<int>> adj(n);
    for (int i = 1, u, v; i < n; ++ i) {
        std::cin >> u >> v;
        -- u, -- v;
        adj[u].push_back(v);
        adj[v].push_back(u);
        if (adj[u].size() == 5 || adj[v].size() == 5) {
            std::cout << "NO\n";
            return;
        }
    }

    std::vector<bool> vis(n);
    std::vector<std::pair<int, int>> ans(n);
    ans[0] = {0, 0};
    vis[0] = true;
    constexpr int dir[]{ -1, 0, 1, 0, -1 };
    std::queue<std::tuple<int, int, int>> q;
    q.emplace(0, -1, 1 << 29);


    while (q.size()) {
        auto [u, d, len] = q.front();
        q.pop();

        len /= 2;
        int curd = 0;

        for (int v : adj[u]) {
            if (vis[v]) continue;

            if (curd == d)
                ++ curd;
            int x = ans[u].first + dir[curd] * len, y = ans[u].second + dir[curd + 1] * len;
            
            ans[v] = {x, y};
            
            vis[v] = true;
            q.emplace(v, curd ^ 2, len);
            ++ curd;
        }
    }

    std::cout << "YES\n";
    for (auto &[x, y] : ans)
        std::cout << x << ' ' << y << '\n';

}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

#ifdef DEBUG
    int cur = clock();
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    int t = 1;
    // std::cin >> t;

    while (t--) {
        solve();
    }
#ifdef DEBUG
    std::cerr << "run-time: " << clock() - cur << '\n';
#endif
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别

重要说明&#xff1a;数据集图片里面都是一个辣椒&#xff0c;请仔细查看图片预览&#xff0c;确认符合要求下载 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文…

时间安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞

漏洞描述 登录--时间&安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞&#xff0c;黑客可以未授权等级员工信息对平台造成影响 FOFA&#xff1a; body"登录--时间&amp;安全精细化管理平台" 漏洞复现 IP/iapp/mobile/facereg…

SIMETRIX 探头和测量

来源:公众号 xuyuntong 随着工作的调整仿真那是越用越多了,在做仿真的时候我们对结果往往都需要做一些测量,怎么样让我们的测量更加的高效呢? 我们也从做中学,从学中做,仿真主要还是培养对电路的直觉虽说讲的是工具还是从电路做起,在做电路过程中把工具学了。 现在我…

[Python学习日记-30] Python中数据类型与文件操作的补充(Bytes 类型、字符编码的转换、深浅 Copy)

[Python学习日记-30] Python中数据类型与文件操作的补充 Bytes 类型 字符编码的转换 深浅 Copy Bytes 类型 一、定义 Bytes 类型是指一堆字节的集合&#xff0c;在 Python 中以 b 开头的字符串都是 Bytes 类型。从前面学习的字符编码当中知道&#xff0c;数据存到硬盘当中都…

C++ day07

C笔试题合集&#xff1a; 1、什么是虚函数&#xff1f;什么是纯虚函数&#xff1f; 1>在类中定义函数时&#xff0c;在函数名前加上virtual关键字&#xff0c;该函数就是虚函数&#xff0c;虚函数可以保证在父子类中只有一个该函数。 2>当虚函数头 0&#xff1b;时该函…

Killing LeetCode [416] 分割等和子集

Description 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 Intro Ref Link&#xff1a;https://leetcode.cn/problems/partition-equal-subset-sum/description/ Difficulty&#xff1a;Med…

【C++报错已解决】std::ios_base::sync_with_stdio

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

CSS——边框线条动画效果

CSS——边框线条动画效果 上次我们实现了边框的线条缩放效果&#xff0c;今天我们来用三种方式完成边框的线条旋转动态效果。 方法一&#xff1a;使用伪元素 这是最普遍、最常用的方法&#xff0c;我们需要为边框所在的元素添加伪元素&#xff0c;然后旋转这个伪元素即可。本…

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

【蓝桥杯省赛真题55】Scratch找不同游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

scratch找不同游戏 第十五届青少年蓝桥杯scratch编程选拔赛真题解析 PS&#xff1a;其实这题在选拔赛里面就出现过类似的题目&#xff0c;只是难度提升了一点&#xff0c;具体可以见【蓝桥杯选拔赛真题84】Scratch找不同游戏 第十五届蓝桥杯scratch图形化编程 少儿编程创意编…

newbie难度——暴力枚举

newbie难度——暴力枚举 740 - 1743A 给出的样例能够理解&#xff0c;如果有n个数字不能选&#xff0c;要排四个数字&#xff0c;这四个数字只有两个不同&#xff0c;并且这两个相同的会各自出现两次&#xff0c;有6种排列方式&#xff0c;那如果给出小于样例n的数字&#xff…

电子电路智能设计课程内容是什么?

电子电路智能设计课程通常包括一系列内容&#xff0c;旨在教授学生如何使用现代电子设计自动化&#xff08;EDA&#xff09;工具和技术来设计和分析电子电路。 1. 电子设计自动化&#xff08;EDA&#xff09;概述&#xff1a; - EDA的历史和发展 - EDA在电子设计中的作用 - …

excel统计分析(2):描述统计工具

1.什么是【描述统计】工具 Excel中的描述性统计是指用于汇总和分析数据以更好地了解其特征的工具&#xff0c;方便快速了解数据集的中心趋势、离散程度和形状。 2.excel中添加【数据分析】功能 点击【文件>选项>加载项】&#xff0c;【管理>Excel加载项>转到】&…

SAP B1 认证考试习题 - 解析版(二)

前一篇&#xff1a;《SAP B1 认证考试习题 - 解析版&#xff08;一&#xff09;》 题目纯享版合集&#xff1a;《SAP B1 认证考试习题 - 纯享版》 三、采购流程 30. 下列哪个凭证在采购流程中是必须要完成的 A. 采购订单 B. 收货采购订单 C. 应付发票 D. 退货 E. 应付贷…

Vue项目快速整合WangEditor富文本编辑器

Vue项目快速整合WangEditor富文本编辑器 一、安装依赖 npm i wangeditor --save //富文本编辑器 npm install highlight.js -S //代码高亮 npm install dompurify vue-dompurify-html // 防xss 库二、app.vue代码案例 已对接图片、视频接口 &#xff0c;具体看如下代码…

【Spring Cloud】Spring Cloud 概述

Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…

Linux部署RabbitMQ

目录 一、环境 二、开始安装 1、安装Erlang 2、安装RabbitMQ 3、修改配置文件 先复制覆盖配置文件&#xff0c;根据自己的版本进行路径更改 打开配置文件&#xff0c;53行 去掉注释%%和逗号 4、安装插件并启动服务 web管理界面工具 重新启动 RabbitMQ 服务 查看节点…

java日志门面之JCL和SLF4J

文章目录 前言一、JCL1、JCL简介2、快速入门3、 JCL原理 二、SLF4J1、SLF4J简介2、快速入门2.1、输出动态信息2.2、异常信息的处理 3、绑定日志的实现3.1、slf4j实现slf4j-simple和logback3.2、slf4j绑定适配器实现log4j3.2、Slf4j注解 4、桥接旧的日志框架4.1、log4j日志重构为…

什么是原生IP?

代理IP的各个类型称呼有很多&#xff0c;且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别&#xff0c;帮助大家更好地理解这两者的概念和实际应用&#xff0c;并选择适合自己的IP类型。 一、什么是原生IP&#xff1f; 原…

流程、程序和政策之间的差异

流程、程序和政策是公司遵循的指导方针&#xff0c;以确保公司以有效和安全的方式运营。 每个企业都需要它们&#xff0c;但有时可能会让人搞不清一个从哪里开始&#xff0c;另一个从哪里结束。 企业经常混淆它们的用法&#xff0c;或者在真正含义上指错一个。 从高层次来看…