BZOJ4919: [Lydsy1706月賽]大根堆(set啟髮式合併)

来源:https://www.cnblogs.com/zwfymqz/archive/2018/09/21/9688543.html
-Advertisement-
Play Games

題意 題目鏈接 Sol 如果給出的樹是鏈的話顯然就是LIS 不是鏈的時候直接當鏈做,每個節點維護一個multiset表示計算LIS過程中的單調棧 啟髮式合併即可 時間複雜度:$O(nlog^2n)$ ...


題意

題目鏈接

Sol

如果給出的樹是鏈的話顯然就是LIS

不是鏈的時候直接當鏈做,每個節點維護一個multiset表示計算LIS過程中的單調棧

啟髮式合併即可

時間複雜度:$O(nlog^2n)$

#include<bits/stdc++.h>
#define sit multiset<int>::iterator 
using namespace std;
const int MAXN = 2e5 + 10;
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
    return x * f;
}
vector<int> v[MAXN];
multiset<int> s[MAXN];
int N, val[MAXN];
void dfs(int x, int fa) {
    for(int i = 0; i < v[x].size(); i++) {
        int to = v[x][i];
        if(to == fa) continue;
        dfs(to, x);
        if(s[to].size() > s[x].size()) swap(s[to], s[x]);
        for(sit it = s[to].begin(); it != s[to].end(); it++)
            s[x].insert(*it);
        s[to].clear();
    }
    sit it = s[x].lower_bound(val[x]);
    if(it != s[x].end()) s[x].erase(it);
    s[x].insert(val[x]);
}
main() {
    N = read();
    for(int i = 1; i <= N; i++) {
        val[i] = read();
        int x = read();
        v[i].push_back(x); v[x].push_back(i);
    }
    dfs(1, 0);
    printf("%d", s[1].size());
    return 0;
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Numpy Numpy 是 Python 數據科學計算的核心庫,提供了高性能的多維數組對象及處理數組的工具 使用方式 數組 生成數組 簡單生成 dtype類型 copy參數 初始化占位符 輸入輸出 保存/讀取 數組信息 索引、切片、比較 切片 比較 數組計算 聚合函數 數組運算 數組操作 拷貝 ...
  • 你現在是棒球比賽記錄員。 給定一個字元串列表,每個字元串可以是以下四種類型之一:1.整數(一輪的得分):直接表示您在本輪中獲得的積分數。2. "+"(一輪的得分):表示本輪獲得的得分是前兩輪有效 回合得分的總和。3. "D"(一輪的得分):表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4. "C" ...
  • 前面提及的:OSI,TCP-IP,IP地址,埠,協議概念我都清楚,所以我直接跳過前面,來到使用這裡。 ...
  • set集合以{}保存一組可迭代對象,如列表,字元串,set集合本身。集合內的元素若有重覆的,將自動去除重覆元素 顯示結果 a.remove(2) print(a)輸出 {1,3} 小知識點: set集合可以看做是數學上的無序和無重覆元素的集合,因此兩個集合之間可以做數學意義上的交集和並集 ...
  • 話說,Java之路已經走的挺長的,本人也算入門級選手,既已上路,那就走的漂亮些。在路上,我會努力踏實地規範自己,完備自己,讓自己做一個社會主義合格用心好碼農。俗話說,事情要麼不做,要麼做就做得漂亮,Java這件事也是開始做了,只是之前沒有用心,所以呢,從現在做一個好碼農啦。 來,下麵讓我們切入正題, ...
  • 給定 S 和 T 兩個字元串,當它們分別被輸入到空白的文本編輯器後,判斷二者是否相等,並返回結果。 # 代表退格字元。 示例 1: 示例 2: 示例 3: 示例 4: 提示: 根據這一題,掌握數據結構中棧的使用 題目分析: 題目的意思是,在兩個字元串中,對於每一個字元串,如果存在'#'符號,並且它前 ...
  • 我想很多程式員應該記得 GitHub 上有一個 Awesome - XXX 系列的資源整理。awesome-ios 就是 vsouza 發起維護的 iOS 資源列表,內容包括:框架、組件、測試、Apple Store、SDK、XCode、網站、書籍等。Swift 語言寫成的項目會被標記為 ★ ,Ap ...
  • 前言:項目中經常要用到Maven,從來也沒有配置過,直到當人問到Maven是乾什麼的,是怎麼管理項目的?一頭霧水,所以寫了這篇博客,首先附上百度百科的詞條: Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文檔的軟體項目管理工具。 一、Maven的下載環境變數配置 下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...