Circular Spanning Tree(樹的性質)

Circular Spanning Tree

本道題目加深理解樹的性質:

思路:

????????首先考慮什么情況是NO,那么不難想當字符串全是0的時候一定是不行的,因為這樣就構成環了,還有一種情況是1的個數為奇數的時候是不行的,一棵樹中為奇數度的點的個數一定是偶數,可以自己畫幾棵樹證明一下。因為樹的所有點的總度數一定是偶數。

? ? ? ? 那么假設接下來的情況一定可以滿足,首先如果字符串全是1,那么我們可以構造類似菊花圖的方法去解決,剩下的就是包含0的字符串,我們可以選擇一個為0的點作為根,因為此時1的個數一定是偶數個。

我們將根移除后的字符串以如下方式斷開(將字符串認為是循環的)

[0,0,…,1][0,0,…,1]?[0,0,…,1]

共?k?組

從根連出?k?條鏈(偶數),每條鏈順次連接上面一對方括號內的點,這樣就能保證題目的條件滿足。

代碼:

#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define int long long
#define fi first 
#define se second
#define YES cout<<"YES\n"
#define NO cout<<"NO\n"
#define all(v) v.begin(),v.end()
using namespace std;
const int inf = 0x3f3f3f3f3f3f3f;
const int N = 2e5+5;
int n;
string s;
int a[N];void solve(){cin>>n;cin>>s;s = " " + s;for(int i=1;i<=n;i++)a[i] = s[i] - '0';a[0] = a[n];a[n+1] = a[1];int k = 0;bool flag = false;for(int i=1;i<=n;i++){k += a[i];if(a[i] == 1)flag = true;}if(!flag || k % 2 == 1){NO;return;}YES;if(k == n){for(int i=2;i<=n;i++)cout<<1<<" "<<i<<"\n";return;}int root = 0;for(int i=1;i<=n;i++){if(a[i] == 0 && a[i-1] == 1){root = i;break;}}int nw = root % n + 1;while(nw != root){cout<<root<<" "<<nw<<"\n";while(a[nw] != 1){cout<<nw<<" "<<nw%n+1<<"\n";nw = nw % n + 1;}nw = nw % n + 1;}return;
}signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;cin>>T;while(T--){solve();}return 0;
}

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

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

相關文章

linux安裝nginxs報錯:openssl not found

系統&#xff1a; linux 版本&#xff1a;centOS7 nginx版本&#xff1a;nginx-1.20.2 linux安裝nginx時 執行下面命令時報錯&#xff1a; ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【論文筆記】Contrastive Learning for Sign Language Recognition and Translation

&#x1f34e;個人主頁&#xff1a;小嗷犬的個人主頁 &#x1f34a;個人網站&#xff1a;小嗷犬的技術小站 &#x1f96d;個人信條&#xff1a;為天地立心&#xff0c;為生民立命&#xff0c;為往圣繼絕學&#xff0c;為萬世開太平。 基本信息 標題: Contrastive Learning for…

docker redis安裝

一.鏡像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精譯_096】16.4:CSS 中的三維變換 + 16.5:本章小結

當前內容所在位置&#xff08;可進入專欄查看其他譯好的章節內容&#xff09; 第五部分 添加動效 ??【第 16 章 變換】 ?? 16.1 旋轉、平移、縮放與傾斜 16.1.1 變換原點的更改16.1.2 多重變換的設置16.1.3 單個變換屬性的設置 16.2 變換在動效中的應用 16.2.1 放大圖標&am…

小程序租賃系統開發的優勢與實踐探索

內容概要 小程序租賃系統開發正在引起廣泛關注&#xff0c;特別是在數字化快速發展的今天。很多企業開始意識到&#xff0c;小程序不僅能為他們帶來更多的客戶&#xff0c;還能極大地提高管理效率。借助小程序&#xff0c;用戶在租賃時可以更加方便地瀏覽和選擇產品&#xff0…

機器人C++開源庫The Robotics Library (RL)使用手冊(二)

由于RL庫采用跨平臺CMake源碼,可以輕松在win、ubantu等平臺部署、編譯,win通常用VS編譯器,為了便于使用、閱讀,需要將CMake編譯成VS工程。 1、準備三個工具:CMake、VS、QT 為了在Windows上編譯RL和依賴項,您需要安裝一個編譯器(例如。,Visual Studio 2017)和跨平臺構…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中&#xff0c;ActiveX控件可以幫助實現與其他應用程序或第三方組件的集成&#xff08;例如Microsoft Excel、Word、Internet Explorer等&#xff09;。以下是一些建議&#xff0c;幫助您更好地在LabVIEW中使用ActiveX控件&#xff1a; ? 1. 理解ActiveX控件的基本原…

如何使用Python從SACS結構數據文件中提取節點數據信息并導出到EXCEL

在現代工程設計中&#xff0c;結構分析和數據處理是不可或缺的一部分。特別是在海洋工程、橋梁建設等領域&#xff0c;SACS文件被廣泛應用。這種文件格式包含了結構模型的各種重要信息&#xff0c;包括節點&#xff08;JOINT&#xff09;、構件&#xff08;ELEMENT&#xff09;…

如何判斷一個學術論文是否具有真正的科研價值?ChatGPT如何提供幫助?

目錄 1.創新性與學術貢獻的超級加分? 2.科研過程中的各個環節—從0到1? 3.創新性與理論深度的完美結合? 4.論證與寫作的清晰性? 5.數據整理和文獻回顧——效率與精準并存? 6.創新性要求輔助? 總結 寶子們&#xff0c;學術論文寫作的旅程是不是感覺像是走進了迷霧森…

學習threejs,THREE.CircleGeometry 二維平面圓形幾何體

&#x1f468;??? 主頁&#xff1a; gis分享者 &#x1f468;??? 感謝各位大佬 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;??? 收錄于專欄&#xff1a;threejs gis工程師 文章目錄 一、&#x1f340;前言1.1 ??THREE.CircleGeometry 圓形…

【微服務】SpringBoot 自定義消息轉換器使用詳解

目錄 一、前言 二、SpringBoot 內容協商介紹 2.1 什么是內容協商 2.2 內容協商機制深入理解 2.2.1 內容協商產生的場景 2.3 內容協商實現的常用方式 2.3.1 前置準備 2.3.2 通過HTTP請求頭 2.3.2.1 操作示例 2.3.3 通過請求參數 三、SpringBoot 消息轉換器介紹 3.1 H…

深入理解Composer自動加載機制

Composer是PHP生態系統中最常用的依賴管理工具之一&#xff0c;它不僅能夠幫助開發者管理項目的依賴關系&#xff0c;還能夠自動加載這些依賴項。自動加載機制是Composer的核心功能之一&#xff0c;通過自動加載&#xff0c;開發者可以在運行時按需加載所需的類和文件&#xff…

【游戲設計原理】35 - 委員會設計

一、 分析并總結 核心內容 定義&#xff1a;委員會設計&#xff08;Design by Committee&#xff09;是指游戲開發團隊通過集體協作完成設計&#xff0c;這種模式結合了多樣化的創意和個體專長&#xff0c;但也可能因缺乏一致性而導致設計的混亂。優勢&#xff1a;多樣性帶來…

【Java】IO流練習

IO流練習 題干&#xff1a; 根據指定要求&#xff0c;完成電話記錄、 注冊、登錄 注冊 題干&#xff1a; 完成【注冊】功能&#xff1a; 要求&#xff1a; 用戶輸入用戶名、密碼存入users.txt文件中 若users.txt文件不存在&#xff0c;創建該文件若users.txt文件存在 輸入…

內網學習:工作組用戶與權限

目錄 一、本地用戶組介紹本地工作組介紹用戶與組的關系 二、四種用戶類型及權限比較本地系統最高權限&#xff08;System賬戶&#xff09;特性Administrator與System賬戶的區別 本地最高管理員&#xff08;Administrator用戶&#xff09;特性 本地普通管理員特性 本地普通用戶特…

SpringMVC核心、兩種視圖解析方法、過濾器攔截器 “ / “ 的意義

SpringMVC的執行流程 1. Spring MVC 的視圖解析機制 Spring MVC 的核心職責之一是將數據綁定到視圖并呈現給用戶。它通過 視圖解析器&#xff08;View Resolver&#xff09; 來將邏輯視圖名稱解析為具體的視圖文件&#xff08;如 HTML、JSP&#xff09;。 核心流程 Controlle…

抽象類和接口的區別是什么?

抽象類和接口在編程中都是用來定義對象的公共行為的重要概念&#xff0c;但兩者之間存在顯著的區別。以下是對抽象類和接口的詳細比較&#xff1a; 一、定義與關鍵字 抽象類&#xff1a;使用abstract關鍵字定義&#xff0c;表示該類是抽象的&#xff0c;不能被實例化。抽象類…

html+css+js網頁設計 美食 美拾9個頁面

htmlcssjs網頁設計 美食 美拾9個頁面 網頁作品代碼簡單&#xff0c;可使用任意HTML輯軟件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html編輯軟件進行運行及修改編輯等操作&#xff09;。 獲取源碼 1&#xff0…

Linux下PostgreSQL-12.0安裝部署詳細步驟

一、安裝環境 postgresql-12.0 CentOS-7.6 注意&#xff1a;確認linux系統可以正常連接網絡&#xff0c;因為在后面需要添加依賴包。 二、pg數據庫安裝包下載 下載地址&#xff1a;PostgreSQL: File Browser 選擇要安裝的版本進行下載&#xff1a; 三、安裝依賴包 在要安…

『VUE』vue-quill-editor設置內容不可編輯(詳細圖文注釋)

目錄 預覽思路調用代碼借助Props添加isDisable屬性控制 是否內容可編輯總結 歡迎關注 『VUE』 專欄&#xff0c;持續更新中 歡迎關注 『VUE』 專欄&#xff0c;持續更新中 預覽 思路 禁用焦點事件和內容改變事件 調用代碼 <quillEditorclass"editor":class"…