Codeforces Round 316 (Div. 2) D题 Tree Requests(二分,dfs,在线,前缀异或)

题目链接

Codeforces Round 316 (Div. 2) D题 Tree Requests

思路

26 26 26个字母全部当作一个二进制数。

将每个深度的结点按照dfs序放到一个vector里,同时记录每个vector对应的前缀异或。

对于每一个询问x,只需在给定深度里找到 ≥ \ge L[x]和 ≤ \le R[x]的两个端点,取区间异或和即可。

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e5 + 5;
int n, m;
int depth[N], L[N], R[N], ID[N], tim;
char s[N];
vector<int>mp[N], XOR[N], dep[N];
int lowbit(int x) {return (x) & (-x);}
void dfs(int u, int deep)
{tim++;depth[u] = deep;L[u] = tim;ID[tim] = u;dep[deep].push_back(L[u]);for (int j : mp[u]){dfs(j, deep + 1);}R[u] = tim;
}
void solve()
{cin >> n >> m;for (int i = 2, p; i <= n; i++){cin >> p;mp[p].push_back(i);}for (int i = 1; i <= n; i++){cin >> s[i];}dfs(1, 1);int maxdeep = *max_element(depth + 1, depth + 1 + n);for (int i = 1; i <= maxdeep; i++){XOR[i].push_back(1ll << (s[ID[dep[i][0]]] - 'a'));for (int j = 1; j < dep[i].size(); j++){XOR[i].push_back(XOR[i][j - 1] ^ (1ll << (s[ID[dep[i][j]]] - 'a')));}}while (m--){int x, d, ans = 0;cin >> x >> d;int l = lower_bound(dep[d].begin(), dep[d].end(), L[x]) - dep[d].begin();int r = upper_bound(dep[d].begin(), dep[d].end(), R[x]) - dep[d].begin();r--;if (r < 0){cout << "Yes" << endl;}else{if (l == 0) ans = XOR[d][r];else ans = XOR[d][l - 1] ^ XOR[d][r];if (ans == lowbit(ans)){cout << "Yes" << endl;}else cout << "No" << endl;}}
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int test = 1;// cin >> test;for (int i = 1; i <= test; i++){solve();}return 0;
}

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

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

相关文章

中断系统的原理

一、介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。中断是指‌CPU在正常运行程序时&#xff0c;由于内部或外部事件的发生&#xff0c;导致CPU中断当前运行的程序&#xff0c;转而去执行其他程序的过程。‌ 中断可以是硬件产生的&#xff0c;也可以是…

安全运营中心 (SOC) 团队对其安全工具感到失望

Vectra AI 表示&#xff0c;安全运营中心 (SOC) 从业人员认为&#xff0c;由于太多孤立的工具和缺乏准确的攻击信号&#xff0c;他们在检测和确定真实威胁的优先级方面正在失败。 人们对供应商的不信任感日益加深&#xff0c;认为供应商的工具在发现真正的攻击方面起的阻碍作用…

OpenCV视频I/O(16)视频写入类VideoWriter之获取当前使用的视频编解码器后端的名称函数getBackendName()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 getBackendName() 是一个成员函数&#xff0c;用于获取当前使用的视频编解码器后端的名称。这个函数可以帮助开发者了解正在使用的编解码器是什么…

金纳米星“融入”水凝胶,原位生长的奥秘,应用前景的探索

大家好&#xff01;今天来了解一项在三维水凝胶表面生长金纳米星的研究——《Growing Gold Nanostars on 3D Hydrogel Surfaces》发表于《Chemistry of Materials》。水凝胶在生物医学等诸多领域有着重要应用&#xff0c;而金纳米星具有独特的光学性质。这项研究通过原位合成的…

【Linux】线程与线程安全知识总结

向外张望的人在做梦&#xff0c; 向内审视的人才是清醒的。 --- 荣格 --- 我最近复习了线程安全这部分知识&#xff0c;将不明白的问题总结出来&#xff0c;并通过AI进行问答帮助我进行学习巩固。本人能力有限 &#xff0c;可能有些内容不准确&#xff0c;望各位大佬海涵&am…

Leetcode 3312. Sorted GCD Pair Queries

Leetcode 3312. Sorted GCD Pair Queries 1. 解题思路2. 代码实现 题目链接&#xff1a;3312. Sorted GCD Pair Queries 1. 解题思路 这一题的话坦率来说没有搞定&#xff0c;后来是找的大佬的代码抄了一下…… 整体来说这道题思路上还是比较暴力的&#xff0c;还是一个二重…

【前端开发入门】css快速入门

目录 引言一、css盒模型1. 盒模型概念2. 盒模型案例 二、css编写1. html文件内部编写1.1 标签style属性编写1.2 css选择器关联1.2.1 id选择器1.2.2 class选择器1.2.3 标签选择器1.2.4 css选择器作用域1.2.5 其他选择器1.2.6 各css选择器优先级 2. 单独维护css文件2.1 创建css文…

伙伴算法的概念

伙伴算法 (Buddy System) 是一种内存分配算法&#xff0c;用于动态分配和释放内存块。它通过将内存空间划分成大小为 2 的幂次的块&#xff0c;并采用特殊的合并策略来提高内存利用率和减少内存碎片。 核心思想: 伙伴算法的核心思想是将内存划分为大小为 2 k 2^k 2k 字节的块…

macOS .bash_profile配置文件优化记录

文章目录 说明原文件内容优化思路优化操作测试验证1. 验证JAVA_HOME2. 验证MAVEN_HOME3. 验证MONGODB_HOME4. 验证CLASSPATH5. 验证PATH 说明 展示的代码中&#xff0c;关于具体的文件路径位置&#xff0c;请灵活修改为自己的真实文件目录&#xff01; 原文件内容 从macOS C…

HDLBits中文版,标准参考答案 | 3.1.4 Karnaugh Map to Circuit | 卡诺图到电路

关注 望森FPGA 查看更多FPGA资讯 这是望森的第 11 期分享 作者 | 望森 来源 | 望森FPGA 目录 1 3 变量 2 4 变量 3 4 变量 4 4 变量 5 最小 SOP 和 POS 6 卡诺图 7 卡诺图 8 使用多路复用器实现的卡诺图 本文中的代码都能够正常运行&#xff0c;请放心食用&#x1f…

CSP-S复赛真题解析

2023年CSP-S复赛真题 密码锁 题意&#xff1a; 分析&#xff1a; 代码&#xff1a; 正解代码 #include<bits/stdc.h>using namespace std;int n; int va[10][10]; int vb[10]; int sum;int check() {for(int i1;i<n;i){vector<int > v;for(int j1;j<5;j…

最强AI绘画大模型Flux可以在SDWebUI 上使用了!超便捷的Flux模型使用教程!AI绘画零基础入门到实战教程

大家好&#xff0c;我是画画的小强 目前最强的AI绘画大模型Flux.1 横空出世有段时间了&#xff0c;模型效果也得到了广泛的认可&#xff0c;但是 Stable Diffusion WebUI 官方迟迟没有跟进&#xff0c;据说是因为要修改很多底层的处理机制&#xff0c;加之ComfyUI如火如荼&…

Nginx的基础讲解之重写conf文件

一、Nginx 1、什么是nginx&#xff1f; Nginx&#xff08;engine x&#xff09;是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。 2、用于什么场景 Nginx适用于各种规模的网站和应用程序&#xff0c;特别是需要高并发处理和负载均衡的场…

计算机组成原理之浮点数的表示和运算

浮点数的表示 浮点数的表示通常遵循类似科学计数法的规则&#xff0c;可以表示为N M r^E&#xff0c;其中&#xff1a; 1、N是浮点数。 2、表示符号位&#xff0c;用来表示浮点数的正负。 3、M是尾数&#xff08;有效数字&#xff09;&#xff0c;是一个纯小数&#xff0c;其…

【React】事件机制

事件机制 react 基于浏览器的事件机制自身实现了一套事件机制&#xff0c;称为合成事件。比如&#xff1a;onclick -> onClick 获取原生事件&#xff1a;e.nativeEvent onClick 并不会将事件代理函数绑定到真实的 DOM节点上&#xff0c;而是将所有的事件绑定到结构的最外层…

Pikachu-目录遍历

目录遍历&#xff0c;跟不安全文件上传下载有差不多&#xff1b; 访问 jarheads.php 、truman.php 都是通过 get 请求&#xff0c;往title 参数传参&#xff1b; 在后台&#xff0c;可以看到 jarheads.php 、truman.php所在目录&#xff1a; /var/www/html/vul/dir/soup 图片…

master节点k8s部署]33.ceph分布式存储(四)

总结ceph分布式存储&#xff08;三&#xff09;中提到的三种方法&#xff1a; 1.创建rbda&#xff0c;并且在创建pv的时候配置该rbda,以下代码仅展示关键信息。 [rootxianchaomaster1 ~]# cat pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: ceph-pv ...…

【每日一题 | 24.10.7】Fizz Buzz 经典问题

1. 题目2. 解题思路3. 代码实现&#xff08;AC_Code&#xff09; 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;每日一题 1. 题目 Fizz Buzz 经典问题 2. 解题思路 【法1】逻辑硬解&#xff1a;按照题目逻辑分四种情况&#xff0c;用if else 判断即可。 【法2】switc…

Win10鼠标总是频繁自动失去焦点-非常有效-重启之后立竿见影

针对Win10鼠标频繁自动失去焦点的问题&#xff0c;可以尝试以下解决方案&#xff1a; 一、修改注册表&#xff08;最有效的方法-重启之后立竿见影&#xff09; 打开注册表编辑器&#xff1a; 按下WindowsR组合键&#xff0c;打开运行窗口。在运行窗口中输入“regedit”&#x…

Python中的Enum

Python中的Enum Enum&#xff08;枚举&#xff09;在很多应用场景中都会出现&#xff0c;因此绝大部分编程语言都实现了Enum类型&#xff0c;Python也不列外&#xff0c;但列外的是Enum在Python3.4中才被正式支持&#xff0c;我们先来看看Python3中的Enum是怎么使用的。 枚举的…