【動態規劃】cf1034C. Region Separation

?質因數分解套路的復雜度分析的動態規劃

題目大意

有一顆$n$個節點有點權的樹,初始整棵樹為$1$號區域,要求滿足下列規則:

  • 除非$i$是最后一個等級,否則每一個$i$級區域都要被分成至少兩個$i+1$級區域
  • 對于每種等級,每個點必須恰好屬于一個區域
  • 一個區域的點集必須是連通的
  • 對于相同等級,每個區域必須擁有相同的點權和

問有多少種合法的劃分方案,$n \le 10^6,a_i \le 10^9$.


題目分析

首先考慮判斷把樹分為$k$個2級區域的合法性$f_k$,記點權和為$tot$。

一種樸素的想法就是對于每一個$k$,自底向上遍歷整棵樹,若剩余子樹大小恰好為$tot\over k$,就割去這顆子樹;如果整棵樹能夠被處理完,$k$就是合法的。每次判定復雜度為$O(n)$.

注意到這個想法里,每次割去子樹的大小$s_i$恰好是$tot\over k$的倍數;并且不難發現,$k$合法的充要條件就是恰有$k$個$s_i≡0(\text{mod }\frac{tot}{k})$。簡短解釋一下:對于一顆$s_i≡0(\text{mod }\frac{tot}{k})$的子樹,由于它的所有子樹都奉行割去$s_j≡0(\text{mod }\frac{tot}{k})$的原則,那么剩下的包括點$i$的連通塊就是$i$子樹內最小的$\ge {tot\over k}$的連通塊。因此,$\sum [s_k≡0(\text{mod }\frac{tot}{k})] \le k$;并且當且僅當$=k$時合法。

有了這個性質,考慮如何統計$f_k$。容易發現對于合法的$k$,$\frac{tot}{k}$的任意約數$k'$都是合法的。而對于子樹$s_i$,其最小有貢獻的$k=\frac{tot}{\text{gcd}(s_i,tot)}$。所以這里只需要對每個$s_i$存下最小的合法$k$,再以質因數分解題的套路處理一遍就能算出$[f_k=k]$了。因此處理$f_k$的復雜度是$O(n\ln n)$。

接下去考慮dp計算把整棵樹分為若干個$i$級區域的方案數$g_i$。

轉載于:https://www.cnblogs.com/antiquality/p/10692714.html

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

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

相關文章

阿里大魚短信介入demo分享

下面是關于大魚短信平臺對接的例子,發短信的話,可以用這個,很好用 /*** 通過阿里短信接口發送短信驗證碼* ***/ public class SendSmsUtil {private static Logger logger Logger.getLogger(SendSmsUtil.class);/*** 生成驗證碼* return*/pu…

GraphAPI 1.0中新增加的Teams API

這篇繼續介紹BUILD大會里的內容:兩個新加入GraphAPI 1.0的關于Teams的API。 這兩個新增api是關于在頻道Channel里發送消息和回復消息的。實際上這兩個api在beta版本中早就已經加入,上個月build大會中公布的只是把這兩個api正式發布到1.0版本&#xff0c…

【數據結構】線性表(一):順序列表

線性表(linear_list)是最常用且最簡單的一種數據結構,簡言之,一個線性表是n個數據元素的有序序列。 例如:(a1 , ... , ai-1 , ai , ai1 , ... , an):ai-1 是 ai 的直接前驅,ai1 是 ai 的直接后驅。 并且&am…

Python_XlrdXlwt

1 import xlrd 2 # \U 開始的字符被編譯器認為是八進制 解決方法 r 3 objWB xlrd.open_workbook(rC:\Users\IBM\Desktop\S1\7月下旬入庫表.xlsx) 4 # 索引號 objTable objWB.sheet_by_index(0) 5 objTable objWB.sheet_by_name(7月下旬入庫表) 6 # 單元格3種讀取方式 7 print…

校招需要看的書 鞏固的知識

前言 感謝教練,學長們,隊友,lollipop,貓哥,李哥,表哥,雞哥,樣樣,咸糖,茗記,明沙,嘻,樹佬(排名不分先后)等等太多太多的人的…

新的Teams API權限控制

這篇繼續介紹BUILD大會里的內容:新的Teams API權限。這些新的權限讓開發者可以更加細粒度的設置權限。 之前有些開發人員有問過我,為什么Graph API的權限這么多,為什么不針對Teams弄一個總的權限,這樣不是更加簡單嗎?…

物料主數據(MM03)跳轉函數

CP_08_MATERIAL_SHOW 使用感覺能使自己的代碼顯得更改高端些。 其中參數MTSTA_IMP的選值參照表T132。轉載于:https://www.cnblogs.com/tangcy1110/p/9081380.html

二叉樹的蛇形遍歷 leetcode 103

給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 例如:給定二叉樹 [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回…

Teams Tab的Single Sign-On

在我寫這篇文章的時候,這個SSO機制還是在 Developer Preview 階段,可能在發布前還會有一些改進。不過我覺得這個功能很好,所以先和大家分享一下。 如果大家之前已經開發過Teams的tab應用,可能會發現如果你需要一個當前用戶的toke…

vim編輯器的使用--轉自MJ學長

一、引言 1. vim是一款功能強大的文本編輯器,如果使用熟練,將會有效幫助我們提高編輯文本、程序的效率。vim編輯器的上手使用門檻比較高,很多人怯于要記很多命令,往往在學習的初期階段就望而卻步。 2. vim的學習需要不斷的練習、使…

算法引入

算法的概念: 解決問題的思路。 時間復雜度: 定義: 基本運算的執行數量。是算法效率的衡量的量。 計算準則: 基本操作:即只有常數項。復雜度認為1順序,按照加法計算循環,按照乘法計算條件。按照最…

如何開發Teams Bot

很多朋友問我如何開發一個成功的Teams Bot,他們說Bot Framework SDK看起來簡單,但是真要的去開發一款成熟的bot,很多地方還是不知道如何使用。我從最早的bot framework還在beta的時候開始用,后來framework經歷了多次大的改動&…

[CF903G]Yet Another Maxflow Problem

[CF903G]Yet Another Maxflow Problem 題目大意: 有\(A\)類點和\(B\)類點各\(n(n\le2\times10^5)\)個,所有\(A_i\)到\(A_{i1}\)有一條權值為\(a_i\)的有向邊,所有\(B_i\)到\(B_{i1}\)有一條權值為\(b_i\)的有向邊,另有\(m(m\le2\t…

P1579哥德巴赫猜想

寫來自己學習用~ 題目內容: 1742年6月7日哥德巴赫寫信給當時的大數學家歐拉,正式提出了以下的猜想:任何一個大于9的奇數都可以表示成3個質數之和。質數是指除了1和本身之外沒有其他約數的數,如2和11都是質數,而6不是質…

在VSCode Remote環境下開發Teams Bot

我使用VS Code開發已經有蠻長一段時間了,時間長了,越來越喜歡VS Code,雖然有些時候會沒有傳統的VS方便,比如開發Azure Function時你需要編寫一下launch.json,而且你需要手動啟動StorageEmulator,但是也正是…

查看安卓APK源碼破解

原文:查看安卓APK源碼破解工具準備&#xff1a; <1>.android4me的AXMLPrinter2工具 <2>dex2jar <3>jd-gui 工具下載&#xff1a;http://download.csdn.net/detail/catshitone/8491347 開始&#xff1a; 第一步&#xff1a; 首先用解壓軟件&#xff08;如好…

實驗六:類的封裝

一、實驗代碼如下&#xff1a; 1 package 實驗6;2 3 import java.util.Scanner;4 5 6 public class Account {7 8 public int id;9 public String name;10 public long number;11 public long time;12 public int money;13 14 //方法Account()…

Teams Bot開發系列:初識Bot

上次我們講了Teams Bot開發的概述&#xff0c;講了Azure Bot Service&#xff0c;Bot Framework SDK和我們自己的bot服務的概念&#xff0c;這篇文章就帶大家看看Azure Bot Service和我們的bot是如何發生關系的。 我們自己開發的bot服務實際上就是一個api service&#xff0c;…

[環境搭建]SDN網絡感知服務與最短路徑應用

1.安裝python模塊networkxpip install networkx2.給Network_Awareness.py加修改權限chmod 777 Network_Awareness.py3.下載安裝ryugit clone git://github.com/osrg/ryu.gitcd ryu sudo python ./setup.py install#若已安裝ryu,刪了再裝&#xff0c; pip uninstall ryu4.修改“…

我需要別人承認才快樂嗎?

關于生命的感悟兩個故事第一個故事&#xff0c;一個尖子生考上了麻省理工學院&#xff0c;在那里所有同學都很優秀&#xff0c;競爭非常強烈&#xff0c;她發現再也不能出類拔萃&#xff0c;在各方面贏過別人&#xff0c;于是覺得生活看不到希望&#xff0c;郁郁寡歡&#xff0…