HDU-4705 Y(思維+dfs樹)

来源:https://www.cnblogs.com/Cherry93/archive/2018/11/14/9960248.html
-Advertisement-
Play Games

Input Output 題意:給你一顆樹,選擇一個三個點構成的集合,使得這三個點不在一條直線上(意思就是 從一個點出發,用一條不回頭的線不能將這三個點連起來)問一共有多少個這樣的集合 思路 :先求出一共有多少個集合,就是Cn3 (n-2)*(n-1)*n/6 ; 然後再求不符合條件的個數 求不符合 ...


Input

4
1 2
1 3
1 4

Output

1

題意:給你一顆樹,選擇一個三個點構成的集合,使得這三個點不在一條直線上(意思就是 從一個點出發,用一條不回頭的線不能將這三個點連起來)問一共有多少個這樣的集合

 

思路 :先求出一共有多少個集合,就是Cn3    (n-2)*(n-1)*n/6   ;      然後再求不符合條件的個數

 

求不符合條件的集合時   比如上圖:先以2為中心然後在3中選一個,在4,5,1,6,7,8,9中選一個種類數就是1×7

然後在4中選一個,在5,1,6,7,8,9中選一個種類數是1×6;

依此遞歸求解;

代碼如下:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <algorithm>
 6 #include <cstring>
 7 using namespace std;
 8 typedef long long ll;
 9 const int maxn=1e6+5;
10 ll n;
11 ll sizes[maxn],ans;
12 vector<int> v[maxn];
13 ll cal(ll n,ll m)
14 {
15     return n*(n-1)*(n-2)/6;
16 }
17 void dfs(int x,int fa)
18 {
19     sizes[x]=1;
20     for(int i=0;i<v[x].size();i++)
21     {
22         int y=v[x][i];
23         if(y!=fa)
24         {
25             dfs(y,x);
26             sizes[x]+=sizes[y];
27             ans+=(sizes[y]*(n-sizes[x]));
28         } 
30     }
31 }
32 int main()
33 {
34     int T;
35 
36     while(~scanf("%lld",&n))
37     {
38         ans=0;
39         memset(sizes,0,sizeof(sizes));
40         for(int i=1;i<=n;i++)v[i].clear();
41         for(int i=1;i<n;i++)
42         {
43             int L,K;
44             scanf("%d%d",&L,&K);
45             v[K].push_back(L);
46             v[L].push_back(K);
47         }
48         dfs(1,-1);
49         printf("%lld\n",cal(n,3)-ans);
50     }
51 
52 
53     return 0;
54 }

 


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

-Advertisement-
Play Games
更多相關文章
  • 在做項目的時候,發現後臺把Date類型的屬性以json字元串的形式返回,前臺拿不到轉換後的日期格式,始終響應回去的都是long類型時間戳。 查閱資料之後找到解決方法(在springmvc的xml配置文件下): 修改之後運行結果: 還有就是前端提交日期的json,格式為2018-07-26,日期欄位希 ...
  • 1 from collections import Counter 2 3 s = "狗咬我一口,難道我還要去咬狗?" 4 # dic = {} 5 # for el in s: 6 # dic[el] = dic.setdefault(el,0) + 1 7 # print(dic) 8 9 c ...
  • ·字典(dict) 筆記: 字典(映射)成對出現,由鍵及其相應的值組成,鍵-值對稱作項(item),字典是python中唯一內置映射類型。字典中的鍵必須是獨一無二的。 在python 2中進行拷貝需要調用copy模塊;而在python 3 中可以直接使用淺拷貝copy(),當使用深拷貝deepcop ...
  • 反射reflection 可以大大提高程式的靈活性,使得interface{}有更大的發揮餘地 反射可以使用TypeOf和ValueOf函數從介面中獲取目標對象信息 反射會將匿名欄位作為獨立欄位(匿名欄位的本質) 想要利用反射修改對象狀態,前提是interface.data是settable,即po ...
  • 建立composer.json 執行 建立server.php 建立client.php 執行 結果 ...
  • 不定期更新使用到的比較好用的快捷鍵 全局修改 ctrl + alt + shift + J 局部修改 用法:alt + 滑鼠左鍵(拖動要修改的代碼) 註:游標停留在要修改內容範圍內,滑鼠左鍵按住再按alt,然後才拖動要修改的代碼,順序不能錯 查看源碼 ctrl + 滑鼠左鍵 刪除一行代碼 ctrl ...
  • 一、collections collections模塊主要封裝了一些關於集合類的相關操作。比如,iterable,Iteratort等等,除此之外,collections還提供了一些除基本數據類型以外的數據集合類型。Counter,deque,OrderDict,defaultdict以及named ...
  • 本節主要內容: 1.模塊的簡單認識 2.collections模塊 3.time時間模塊 4.random模塊 5.os模塊 6.sys模塊 一.模塊的簡單認識 模塊:就是我們把裝有特定功能的代碼進行歸類的結果. 引入模塊的方式 1.import 模塊 2.from xxx import 模塊 二. ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...