給定有n個結點的樹和長度為n的排列,q次詢問:l, r, x, 若p[l, r]中存在至少一個結點是x的后代,輸出yes,否則輸出no

題目

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n, q;
vector<int> G[maxn];
int L[maxn], R[maxn];//L[i]表示結點i的時間戳,R[i]表示結點i的后代中時間戳的最大值
int p[maxn];
int t[maxn];
struct Node{int id, flag, x;//id:第幾次詢問,flag:0為左端點,1為右端點,x:詢問結點
};
vector<Node> Q[maxn];//Q[i]存詢問區間左端點-1為i或右端點為i的詢問
int tot;
int ans[maxn][2];//ans[i][0]:第i次詢問,設詢問區間為[l, r], 詢問結點為x,只考慮p[1, l - 1], 有多少個結點的時間戳在[L[x], R[x]]范圍內, ans[i][1]:考慮p[1, r],有多少個結點時間戳在[L[x], R[x]]內
void dfs(int u, int fa){L[u] = ++tot;for(auto v : G[u]){if(v == fa) continue;dfs(v, u);}R[u] = tot;
}
int lowbit(int x){return x & (-x);
}
void add(int x, int k){for(int i = x; i <= n; i += lowbit(i)){t[i] += k;}
}
int ask(int x){int res = 0;for(int i = x; i >= 1; i -= lowbit(i)){res += t[i];}return res;
}
void init(){for(int i = 1; i <= n; i++){G[i].clear();t[i] = 0;}tot = 0;for(int i = 1; i <= q; i++){Q[i].clear();ans[i][0] = ans[i][1] = 0;}
}
void solve(){//int n, q;cin >> n >> q;init();for(int i = 1; i < n; i++){int u, v;cin >> u >> v;G[u].push_back(v);G[v].push_back(u);}for(int i = 1; i <= n; i++){cin >> p[i];}for(int i = 1; i <= q; i++){int l, r, x;cin >> l >> r >> x;l--;//!!!!Q[l].push_back({i, 0, x});Q[r].push_back({i, 1, x});}dfs(1, 0);for(int i = 1; i <= n; i++){// for(auto [id, flag, x] : Q[i]){// 	if(flag == 1) continue;// 	ans[id][flag] = ask(R[x]) - ask(L[x] - 1);// }int u = p[i];int pos = L[u];add(pos, 1);for(auto [id, flag, x] : Q[i]){//if(flag == 0) continue;ans[id][flag] = ask(R[x]) - ask(L[x] - 1);}}for(int i = 1; i <= q; i++){if(ans[i][0] == ans[i][1]) cout << "No\n";else cout << "Yes\n";}cout << '\n';
}
int main(){ios::sync_with_stdio(0);cin.tie(0);int T;cin >> T;while(T--){solve();}// map<int, int> mp;// mp[1] = 1;// mp[2] = 2;// for(auto [x, y] : mp){// 	cout << x << ' ' << y;// }return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211149.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211149.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211149.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MapReduce

1. 請解釋MapReduce的工作原理。 MapReduce是一種編程模型&#xff0c;主要用于大規模數據集&#xff08;特別是非結構化數據&#xff09;的并行處理。這個模型的核心思想是將大數據處理任務分解為兩個主要步驟&#xff1a;Map和Reduce。 在Map階段&#xff0c;輸入數據被分解…

ssm的健身房預約系統(有報告)。Javaee項目。ssm項目。

演示視頻&#xff1a; ssm的健身房預約系統&#xff08;有報告&#xff09;。Javaee項目。ssm項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系結構&#xff0c;通過Spring Spring…

AI模型平臺Hugging Face存在API令牌漏洞;大型語言模型與任務模型

&#x1f989; AI新聞 &#x1f680; AI模型平臺Hugging Face存在API令牌漏洞&#xff0c;黑客可竊取、修改模型 摘要&#xff1a;安全公司Lasso Security發現AI模型平臺Hugging Face上存在API令牌漏洞&#xff0c;黑客可獲取微軟、谷歌等公司的令牌&#xff0c;并能夠訪問模…

c++中的內聯函數和編譯器

內聯函數和編譯器&#xff1a; 內聯函數并不是何時何地都有效&#xff0c;為了理解內聯函數何時有效&#xff0c;應該要知道編譯器碰到內聯 函數會怎么處理&#xff1f; 對于任何類型的函數&#xff0c;編譯器會將函數類型(包括函數名字&#xff0c;參數類型&#xff0c;返回值…

Unknown parameter in InstanceGroups[0]: “Configurations“, must be ... 解決方法

使用 aws emr modify-instance-groups 更新集群配置時可能會遇到如下錯誤信息&#xff1a; Unknown parameter in InstanceGroups[0]: “Configurations”, must be one of: InstanceGroupId, InstanceCount, EC2InstanceIdsToTerminate, ShrinkPolicy 這一報錯其實和提供的j…

C語言進階之路之頂峰相見篇

目錄 一、學習目標 二、宏定義 預處理 宏的概念 帶參宏 無值宏定義 三、條件編譯 條件編譯 條件編譯的使用場景 四、頭文件 頭文件的作用 頭文件的內容 頭文件的基礎語句&#xff1a; GCC編譯器的4個編譯步驟&#xff1a; 總結 一、學習目標 掌握宏定義含義和用…

【Linux】系統初識之馮諾依曼體系結構與操作系統

&#x1f440;樊梓慕&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》 &#x1f31d;每一個不曾起舞的日子&#xff0c;都是對生命的辜負 目錄 前言 1.馮諾依曼體系結構 2.操作…

Springboot項目實現簡單的文件服務器,實現文件上傳+圖片及文件回顯

文章目錄 寫在前面一、配置1、application.properties2、webMvc配置3、查看效果 二、文件上傳 寫在前面 平常工作中的項目&#xff0c;上傳的文件一般都會傳到對象存儲云服務中。當接手一個小項目&#xff0c;如何自己動手搭建一個文件服務器&#xff0c;實現圖片、文件的回顯…

一篇文章帶你了解并使用mybatis框架

mybatis簡介&#xff1a; MyBatis 是一款優秀的持久層框架&#xff0c;它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO&#xff08;P…

JavaScript中的發布訂閱和觀察者模式:如何優雅地處理事件和數據更新

?&#x1f308;個人主頁&#xff1a;前端青山 &#x1f525;系列專欄&#xff1a;JavaScript篇 &#x1f516;人終將被年少不可得之物困其一生 依舊青山,本期給大家帶來JavaScript篇專欄內容:JavaScript-訂閱觀察者模式 目錄 說說你對發布訂閱、觀察者模式的理解&#xff1f;…

用生命做事,無人能超越

今天看了《藝術人生——紅樓夢劇組20年再聚首》&#xff0c;然后搜索了一下里面的核心人物及其經歷。實話說&#xff0c;看完后我內心無法平靜&#xff0c;涌動著各種思緒。一是20多年前這群青澀演員的人生際遇&#xff0c;讓我感慨。很多人&#xff0c;用這樣的機會&#xff0…

‘ChatGLMTokenizer‘ object has no attribute ‘tokenizer‘解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

Linux系統---簡易伙伴系統

顧得泉&#xff1a;個人主頁 個人專欄&#xff1a;《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛&#xff0c;年薪百萬&#xff01; 一、題目要求 1.采用C語言實現 2.伙伴系統采用free_area[11]數組來組織。要求伙伴內存最小為一個頁面&#xff0c;頁面大小為4KB…

我在Vscode學OpenCV 圖像處理二(濾除噪聲干擾)

圖像處理二 濾除噪聲干擾三、噪聲3.1圖像噪聲3.2 濾波3.2.1均值濾波&#xff08;1&#xff09;錨點&#xff08;2&#xff09;中心點&#xff08;下面第3小點會詳細解釋&#xff09;&#xff08;3&#xff09;核的大小奇偶數的區別&#xff08;1&#xff09;舉例奇偶的例子&…

【工具使用-JFlash】如何使用Jflash擦除和讀取MCU內部指定扇區的數據

一&#xff0c;簡介 在調試的過程中&#xff0c;特別是在調試向MCU內部flash寫數據的時候&#xff0c;我們常常要擦除數據區的內容&#xff0c;而不想擦除程序取。那這種情況就需要擦除指定的扇區數據即可。本文介紹一種方法&#xff0c;可以擦除MCU內部Flash中指定扇區的數據…

六級高頻詞匯1

目錄 高頻詞匯 參考連接 高頻詞匯 1. alter v. 改變&#xff0c;改動&#xff0c;變更 2. burst vi. n. 突然發生&#xff0c;爆裂 3. dispose vi. 除掉&#xff1b;處置&#xff1b;解決&#xff1b;處理(of) 4. blast n. 爆炸&#xff1b;氣流 vi. 炸&#xff0c;炸掉 …

【win10用vim開發stm32】二、vimspector的單片機調試

▲ 我的vim配置倉庫: gitee&#xff0c;vim相關優先在gitee更新&#xff0c;博客vim專欄作為部分補充和使用說明 ▲ 本文提供vimspector調試的一個示例&#xff0c;和keil的調試功能比當然還是有很大差距&#xff0c;不過簡單的調試功能如單步、復位、運行這些都跑通了&#xf…

Unity打包到Webgl平臺以及遇到的問題

Unity打包到Webgl平臺以及遇到的問題 參考網站 Unity打包WebGL的全過程及在打包和使用過程中會遇到的問題(本地測試)-CSDN博客 unity打包到Webgl 并配置能正常運行 這里我用的是Unity2022.3.3f1c1版本 有兩種方法 1、配置本地web服務 2、安裝vsCode>添加插件LiveServe…

AI仿寫軟件大全,當然熱門的仿寫軟件

在創作過程中&#xff0c;往往需要大量的靈感和原創性&#xff0c;而AI仿寫軟件便提供了一種高效、智能的解決方案。本文旨在專心分享AI仿寫軟件有哪些&#xff0c;并為大家解析哪幾款好用的AI仿寫軟件。 AI仿寫的使用 隨著互聯網的快速發展&#xff0c;內容創作需求不斷增長&…

Rellax.js,一款超酷的 JavaScript 滾動效果庫

嗨&#xff0c;大家好&#xff0c;歡迎來到猿鎮&#xff0c;我是鎮長&#xff0c;lee。 又到了和大家見面的時間&#xff0c;今天和大家分享一款輕松實現視差滾動效果的 JavaScript 庫——Rellax.js。無需大量的配置&#xff0c;即可為你的網站增色不少。 什么是Rellax.js&am…