【学习笔记】「北大集训 2021」经典游戏
我觉得很厉害。要是考场上能把这道题切了的话数据结构的水平肯定是不低的。
考虑简化版问题:如果只询问一个点的答案怎么做。
注意,我这么做是有风险的。我把战线拉长了。不过当然,如果连简化版的问题都做不了,那何谈正解?幸运的是,这确实是一道数据结构多合一的题。
考虑 长链剖分 。那么在 x x x节点上加入棋子时,子树外的点就异或上 x x x子树的最大深度,如果以 x x x为根的最长链在重儿子上面,那么就给除了重儿子外的子树打标记,注意到 其 dfn \text{dfn} dfn序是连续的 ,可以直接打标;对于重儿子也可以直接对整颗树打标,只需处理出 x x x去掉重儿子后的最长链长度即可;如果最长链在父亲上,那么直接对 x x x整颗子树修改即可。
发现了吗?经过细致分析,我们发现这道题其实并不复杂。当然要建立在想到长链剖分的基础上。
这题更神奇的地方在于,让我们求 dist(x,v) ≤ 1 \text{dist(x,v)}\le 1 dist(x,v)≤1的所有根的答案。这是个非常恼人的限制,因为你知道会被菊花图卡,但是不知道会被卡成多少分。
有没有严格的做法呢?答案是有的。但是我一定想不到。 但是需要用到非常高级的技巧。其实说白了,询问可以拆分成 x x x, x x x的父亲, x x x的重儿子以及 x x x的所有轻儿子。如果一次插入影响到点的数目是 O ( 1 ) O(1) O(1)那么我们的目的就达到了。
考虑这样一个问题,如何用字典树维护 c i ⊕ x > d i c_i\oplus x>d_i ci⊕x>di的所有点对?这个问题也非常具有迷惑性。因为 d i d_i di是定值, x x x又是每次询问给定的,那么维护 c i c_i ci然后在 trie \text{trie} trie树上查不就完了?并且 trie \text{trie} trie树查询的复杂度也是 log n \log n logn的。这样分析下来觉得越来越有道理了,但是考场上完全想不到这里来啊???
初始化的时候 c i c_i ci都是定值。手动分讨一波,如果最长链在重儿子上面那么 x x x的所有轻儿子都异或上同一个数,直接在 x x x上打标就完了;如果最长链在父亲上面那么轻儿子还是异或上同一个数。事实上可以发现,任意时刻轻儿子的标都和这个点上的标是一样的,唯一的例外是当插入的点就是这个轻儿子的情况。但是正如前所说,修改影响到的节点数目是 O ( 1 ) O(1) O(1)的,所以直接在 trie \text{trie} trie树上暴力修改就行。然后就做完了。
所以发现了吗?这种题逻辑链条太长了。其实思维难度并不大。
复杂度 O ( n log n ) O(n\log n) O(nlogn)。
要考虑的细节挺多了。所以代码先咕了。
相关文章:
【学习笔记】「北大集训 2021」经典游戏
我觉得很厉害。要是考场上能把这道题切了的话数据结构的水平肯定是不低的。 考虑简化版问题:如果只询问一个点的答案怎么做。 注意,我这么做是有风险的。我把战线拉长了。不过当然,如果连简化版的问题都做不了,那何谈正解&#…...
优惠卷秒杀功能、全局唯一ID、乐观锁解决超卖问题、悲观锁实现一人一单、集群下锁失效问题
文章目录 1 全局唯一ID的需求分析2 Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 乐观锁解决超卖问题6 悲观锁实现一人一单7 集群环境下的并发问题 1 全局唯一ID的需求分析 每个店铺都可以发布优惠券: 当用户抢购时,就会生成订单…...
Nest的基本概念,以及如何使用Nest CLI来构建一个简单的Web应用程序
Nest是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。它是基于Express.js构建的,并且提供了多种新特性和抽象层,可以让开发者更加轻松地构建复杂的应用程序。 本文将介绍Nest的基本概念,以及如何使用Nest CLI来构建一个简单的W…...
15个创新世界119座城:1~10章音频
感恩每一个喜欢我文字的朋友,感恩每一次遇见。 最近后台总有朋友留言,能不能每一章配上音频,这样平时开车或挤地铁时也能听听。 谢谢你们在开车和挤地铁的时候都会产生听这本书的冲动。 五一抽空先把前十章的音频转录出来,希望你们…...
AI面试必刷算法题 附答案和解析 --持续更新中
面试中发现很多同学一股脑优化、润色项目经历,但聊到基本的算法,反而会一脸懵X,得空整理下算法题给大家,希望对你有帮助。 1. tail(head(tail(C))) ( ) 已知广义表: A(a,b), B(A,A), C(a,(b,A),B), 求下列运算的结果:(…...
聊一聊 GDB 调试程序时的几个实用命令
一:背景 1. 讲故事 用惯了宇宙第一的 Visual Studio 再用其他的开发工具还是有一点不习惯,不习惯在于想用的命令或者面板找不到,总的来说还是各有千秋吧,今天我们来聊一下几个在调试中比较实用的命令: 查看内存硬件…...
MySQL驱动对MYSQL进行update操作时返回值注意UseAffectedRows
数据库upate更新表时经常要用,update的结果进行一些逻辑判断,如返回值大于1表示更新成功,为0表示更新失败。 但是使用Mysql驱动连接数据库并进行update操作时,返回值可能不在预期。 update iwrs_drug_order set status2 where …...
OpenCV-Python图像几何变换
概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…...
国民技术N32G430开发笔记(15)- IAP升级 树莓派串口发送数据
IAP升级 树莓派串口发送数据 1、树莓派接入usb转串口模块后,会生成/dev/ttyUSB0节点,因为树莓派内核已经编译usb_serial以及各模块的驱动。 我们直接对ttyUSB0节点编程即可。 2、协议同上一节 cmd data_lenght data0 … datax checksum 1、获取版本…...
svo论文解读
SVO: Semi-Direct Visual Odometry for Monocular and Multi-Camera Systems 2016TRO MOTION ESTIMATION 1 Sparse Image Alignment 从上一帧的特征投影到当前帧,最小化重投影误差计算帧间位姿(patch44) 2 Relaxation Through Feature Alig…...
DolphinScheduler海豚调度教程
DolphinScheduler 教程 (一)入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系,不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式…...
ubuntu脚本解释器踩坑:#!/bin/bash 与 #!/bin/sh
前言: 博主正在写linux的脚本的时候遇到:xx.sh: 3: Syntax error: "(" unexpected 查看shell脚本语法没有问题,后面发现是解释器的原因。 一、不同的解释器 #!是特殊的表示符,其后面根的是此解释此脚本的shell的路径…...
小松鼠踩一踩游戏
文章目录 一、 介绍和知识点九、UnityFacade 门面设计模式二、 声音全局管理器测试音频代码UI全局管理器父类抽象类 BaseManager子类 UIManager 四、 UI按钮的引用父类 BasePanel子类主面板 MainPanel子类 游戏中 GamePanel子类 游戏结果 ResultPanel 角色动画器、控制角色移动…...
使用crontab命令同步时间
crontab命令可以用于在Linux系统中定期同步时间。常用的时间同步方法有: 1. 使用ntpdate同步时间 可以添加如下crontab任务: */5 * * * * /usr/sbin/ntpdate time.nist.gov http://xn–5time-rg2hnkqin4vhsb6x8meq6d7yxa.nist.gov/ NTP服务器同步一次时间。 2. 使用ntpd作为…...
TortoiseGit提示No supported authentication methods available异常
TortoiseGit他属于git的客户端,可有可无,说白了就是将git命令给我们整理成了可直接操作的按钮。 本地代码是使用了SSH的方式去拉取的代码,但是通过TortoiseGit pull代码的时候发生了如下异常,而GitBash却可以正常使用。 TortoiseG…...
基于哈希表的用户管理系统
三大模块: - 哈希表模块 哈希函数 哈希表创建 哈希表销毁 - 用户管理模块 显示 增 删 改 查 - 文件模块 从文件导入用户信息 将用户信息导出至文件 1.哈希函数 //hash函数(质数除余法) int Hash_Fun1(data_type key){int pos key%P;…...
GO数组切片-线性数据结构
数据结构 类型 什么是类型 ? 内存中的二进制数据本身没有什么区别,就是一串0或1的组合。 内存中有一个字节内容是0x63,他究竟是深恶 字符串?字符?还是整数? 本来0x63表示数字 但是文字必须编码成为0和1的组合 才能记…...
C++ STL学习之【优先级队列】
✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 🌇前言🏙️正文1、优先级队列的使用1.1、基本功能1.2、优先级模式切换1.3、相关题目 2、模拟…...
keepalived脑裂现象
Keepealived最常见的问题是会出现脑裂现象: Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占mas…...
[stable-diffusion-art] 指北-1
https://stable-diffusion-art.com/beginners-guide/https://stable-diffusion-art.com/beginners-guide/ Stable Diffusion教程目录 - 知乎按: 这个外国教程站中的文章太好了,数量适当,质量很高可惜博文只能按时间浏览,所以整理…...
输入流避坑全指南:从 Read() 编码溢出到 ReadLine() 缓冲区残留
1. 灵异事件:为什么我的循环跑了 52 次? 在编写基础逻辑题时,我曾遇到一个极其诡异的Bug:要求用户输入边长nnn打印正方形,我输入4,结果程序打印了 52行符号。 问题代码: int n Console.Read();…...
【STM32F407启动探秘】从复位向量到main():深入剖析启动文件与BOOT模式
1. STM32F407启动过程全景图 当你按下STM32F407开发板的电源按钮时,芯片内部就像被施了魔法一样开始运转。这个看似简单的上电过程,实际上隐藏着一套精密的启动机制。作为开发者,理解这个过程就像掌握了一把打开STM32内核奥秘的钥匙。 我刚开…...
AI安全审计工具:降低Web应用安全门槛的九步自动化实践
1. 从零到一:为什么我们需要一个“小白友好”的Web应用安全审计工具?在今天的开发环境里,安全审计这件事,对很多中小团队或者独立开发者来说,一直是个挺尴尬的存在。一方面,大家都知道它至关重要࿰…...
抖音内容高效采集实战:5个提升工作效率的开源方案
抖音内容高效采集实战:5个提升工作效率的开源方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...
2026年小程序多少钱对比:精选5大权威推荐帮你选对平台
小程序开发方案的选择直接影响功能匹配度与成本效益,2026年主流服务商主要分为模板化与定制化两类路径。本文将从开发费用构成、五大平台核心方案及选择策略三方面展开分析,帮助您快速定位适合自身业务阶段与预算的选项。内容涵盖基础功能解析、价格对比…...
Gemini3.1Pro如何实现视觉平移不变性
“视觉 Transformer 的平移不变性(translation invariance)是否能在 Gemini 3.1 Pro 中实现?”这个问题的难点在于:平移不变性是视觉模型的归纳偏置,而 Gemini 3.1 Pro 是多模态大模型(LLM视觉/多模态能力&…...
SingleFile:为什么你需要的不仅是网页保存,而是数字记忆的永恒守护?
SingleFile:为什么你需要的不仅是网页保存,而是数字记忆的永恒守护? 【免费下载链接】SingleFile Web Extension for saving a faithful copy of a complete web page in a single HTML file 项目地址: https://gitcode.com/gh_mirrors/si/…...
企业微信打卡数据拉取实战:Spring Boot + FastJSON 完整配置流程(含AccessToken获取避坑指南)
企业微信打卡数据集成实战:Spring Boot工程化解决方案 最近两年,越来越多的企业开始将考勤管理从传统硬件设备迁移到企业微信这样的数字化平台。但真正把打卡数据用起来,往往需要与企业内部系统深度集成。上周刚帮一家零售企业解决了这个问题…...
S32K144 Lin组件实战:告别官方LinStack,手把手教你用底层驱动搞定超声波雷达
S32K144 Lin组件实战:从高级封装到底层驱动的技术跃迁 在嵌入式开发领域,协议栈选择往往决定了项目的灵活性与开发效率。当我们使用NXP S32K144微控制器进行LIN总线通信时,官方提供的LinStack组件确实能快速搭建基础通信框架。但真正投入工业…...
LinkSwift:九大网盘直链下载终极解决方案,三步告别限速困扰
LinkSwift:九大网盘直链下载终极解决方案,三步告别限速困扰 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...
