3522: [Poi2014]Hotel( 樹形dp )

枚舉中點x( 即選出的三個點 a , b , c 滿足 dist( x , a ) = dist( x , b ) = dist( x , c ) ) , 然后以 x 為 root 做 dfs , 顯然兩個位于 x 的同一顆子樹內的點是不可能被同時選到的 . 我們對 x 的每一顆子樹進行 dfs , 記錄下當前子樹中的點到 x 距離為 d ( 1 <= d <= n ) 有多少個 , 記為 cnt[ 0 ][ i ] . 然后 cnt[ 1 ][ i ] 記錄之前 dfs 過的子樹的 cnt[ 0 ][ i ] 之和 , cnt[ 2 ][ i ] 記錄之前 dfs 過的子樹中任意兩顆不同子樹中的cnt[ 0 ][ i ] * cnt[ 0 ][ i ] 之和 . cnt[ ?][ i ] 的計算看代碼

----------------------------------------------------------------------------

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#define clr( x , c ) memset( x , c , sizeof( x ) )
#define rep( i , n ) for( int i = 0 ; i < n ; ++i )
#define REP( x ) for( edge* e = head[ x ] ; e ; e = e -> next )
using namespace std;
typedef long long ll;
const int maxn = 5000 + 5;
ll cnt[ 3 ][ maxn ];
int n;
struct edge {
int to;
edge* next;
} E[ maxn << 1 ] , *pt = E , *head[ maxn ];
inline void add_edge( int u , int v ) {
pt -> to = v;
pt -> next = head[ u ];
head[ u ] = pt++;
pt -> to = u;
pt -> next = head[ v ];
head[ v ] = pt++;
}
int dfs( int x , int fa , int d ) {
cnt[ 0 ][ d++ ]++;
REP( x ) if( e -> to != fa )?
? ?dfs( e -> to , x , d );
}
void work() {
ll ans = 0;
rep( i , n ) {
clr( cnt[ 1 ] , 0 );
clr( cnt[ 2 ] , 0 );
REP( i ) {
clr( cnt[ 0 ] , 0 );
dfs( e -> to , i , 1 );
rep( i , n ) {
ans += cnt[ 0 ][ i ] * cnt[ 2 ][ i ];
cnt[ 2 ][ i ] += cnt[ 0 ][ i ] * cnt[ 1 ][ i ];
cnt[ 1 ][ i ] += cnt[ 0 ][ i ];
}
}
}
printf( "%lld\n" , ans );
}
void init() {
clr( head , 0 );
cin >> n;
rep( i , n - 1 ) {
int u , v , d;
scanf( "%d%d" , &u , &v );
add_edge( --u , --v );
}
}
int main() {
freopen( "test.in" , "r" , stdin );
init();
work();
? ? return 0;?
}?

??

----------------------------------------------------------------------------?

3522: [Poi2014]Hotel

Time Limit:?20 Sec??Memory Limit:?128 MB
Submit:?273??Solved:?132
[Submit][Status][Discuss]

Description

有一個樹形結構的賓館,n個房間,n-1條無向邊,每條邊的長度相同,任意兩個房間可以相互到達。吉麗要給他的三個妹子各開(一個)房(間)。三個妹子住的房間要互不相同(否則要打起來了),為了讓吉麗滿意,你需要讓三個房間兩兩距離相同。
有多少種方案能讓吉麗滿意?

Input

第一行一個數n。
接下來n-1行,每行兩個數x,y,表示x和y之間有一條邊相連。

Output

讓吉麗滿意的方案數。

Sample Input

7
1 2
5 7
2 5
2 3
5 6
4 5

Sample Output

5

HINT

【樣例解釋】

{1,3,5},{2,4,6},{2,4,7},{2,6,7},{4,6,7}




【數據范圍】

n≤5000

Source

By Dzy

?

轉載于:https://www.cnblogs.com/JSZX11556/p/4643812.html

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

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

相關文章

第一沖刺階段工作總結02

1.昨天&#xff1a; 實驗簡單的安卓程序&#xff0c;開始具體的設計軟件界面。 2.今天&#xff1a; 繼續設計軟件頁面&#xff0c;由于安卓虛擬機過于遲緩&#xff0c;配置真機&#xff0c;學習如何在真機上運行程序。 3.遇到的困難&#xff1a; 真機配置不知道怎樣配置&#x…

JBoss 4.2.x Spring 3 JPA Hibernate教程第2部分

我們將繼續有關Spring 3 &#xff0c; Hibernate &#xff0c; JPA和JBoss 4.2.x – 4.3集成的教程 。 最后一步是創建一個Spring服務&#xff0c;以向最終用戶公開功能。 我們必須創建一個接口類和相關的實現類。 首先是接口類&#xff1a; package com.mycomp.myproject.se…

洛谷P1035 [NOIP2002 普及組] 級數求和

代碼 import java.util.Scanner;public class Main {public static void main(String args[]){Scanner sc new Scanner(System.in);int k sc.nextInt();int n 0;double Sn 0;while(Sn<k){n;Sn Sn 1.0/n;}System.out.println(n);} }這樣寫while循環體這需要每次加上1/…

『Luogu OJ』『C++』Level 1-1

關卡1-1&#xff0c;3道題 洛谷的第一個任務 任務說明&#xff1a;勇敢的邁出第一步&#xff0c;了解下語言和洛谷。跟著書本和老師走&#xff0c;不會難的。 要完成這個任務&#xff0c;請將以下的題目都AC掉&#xff08;即通過這道題目&#xff09;&#xff1a; 1.AB Problem…

Java中的Google ClientLogin實用程序

Google API的身份驗證和授權是當今需要與Google服務集成和信息交換的應用程序中的常見功能。 盡管大多數Google身份驗證過程是針對Web應用程序量身定制的&#xff0c;但它也可用于桌面和已安裝的應用程序。 對于桌面應用程序&#xff0c;Google建議使用稱為ClientLogin的身份驗…

九度OJ1486 /POJ 1029/2012北京大學研究生復試上機

wa到死&#xff01;wa到死&#xff01;這是一個看著簡單&#xff0c;坑及其多的題&#xff01; 坑一&#xff1a;POJ上是單組輸入&#xff0c;九度上是多組輸入&#xff0c;媽蛋要是研究生復試遇到這種大坑肯定死掉啊&#xff01;而且對于codeforces比較習慣的 同學肯定會覺得巨…

P1046 [NOIP2005 普及組] 陶陶摘蘋果

題目描述 陶陶家的院子里有一棵蘋果樹&#xff0c;每到秋天樹上就會結出 1010 個蘋果。蘋果成熟的時候&#xff0c;陶陶就會跑去摘蘋果。陶陶有個 3030 厘米高的板凳&#xff0c;當她不能直接用手摘到蘋果的時候&#xff0c;就會踩到板凳上再試試。 現在已知 1010 個蘋果到地面…

新手不了解Xcode和mac系統可能犯得錯誤和我的建議

我是學iOS剛入門的新手&#xff0c;本人裝的時黑蘋果&#xff0c;我是喜歡完美的人&#xff0c;但黑蘋果又是不完美的系統&#xff0c;比如關不了機啊&#xff0c;和顯卡驅動不了啊&#xff0c;當自己的電腦出現白屏和卡頓的時候氣的沒脾氣。我是一個新手。開始學的時java但我喜…

改善Java應用程序性能的快速技巧

曾經遇到過性能問題嗎&#xff1f; 我也是。 如果我的經理再喊一次“ faaaaster”&#xff0c;我一生都會有聽力障礙。 順便說一句&#xff0c;我能聽到所有聲音中的德語發音嗎&#xff1f; ;-) 您可以相信仍然有人無知地在談論垃圾收集器&#xff08;得到它嗎&#xff1f;&…

P1047 [NOIP2005 普及組] 校門外的樹

某校大門外長度為 ll 的馬路上有一排樹&#xff0c;每兩棵相鄰的樹之間的間隔都是 11 米。我們可以把馬路看成一個數軸&#xff0c;馬路的一端在數軸 00 的位置&#xff0c;另一端在 ll 的位置&#xff1b;數軸上的每個整數點&#xff0c;即 0,1,2,\dots,l0,1,2,…,l&#xff0…

團隊開發——個人工作總結04

昨天對要用到的SQL語句進行了研究&#xff0c;分別得到了以下結果&#xff1a; 1.這段語句是為用戶登錄服務的&#xff0c;通過JSP的到的用戶名username和密碼passdword作為條件查詢數據庫&#xff0c;如果有查詢結果&#xff0c;則返回true select * from [login] where usern…

Nginx的幾種常見的幾種啟動方式

1.默認方式啟動 直接執行Nginx的二進制文件即可 /usr/local/nginx/sbin/nginx 這時默認讀取配置文件&#xff0c;配置文件目錄 /usr/local/nginx/conf/nginx.conf 2.指定配置文件的啟動方式 /usr/local/nginx/sbin/nginx -c /tmp/nginx.conf轉載于:https://www.cnblogs.com/Leo…

yii2閱讀隨筆14

繼續來看Event.php /*** Triggers a class-level event.* 觸發類級別事件。* This method will cause invocation of event handlers that are attached to the named event* for the specified class and all its parent classes.* 觸發某個類或者對象的某個事件* param strin…

P1059 [NOIP2006 普及組] 明明的隨機數

題目描述 明明想在學校中請一些同學一起做一項問卷調查&#xff0c;為了實驗的客觀性&#xff0c;他先用計算機生成了N個1到1000之間的隨機整數(N≤100)&#xff0c;對于其中重復的數字&#xff0c;只保留一個&#xff0c;把其余相同的數去掉&#xff0c;不同的數對應著不同的學…

基本的EJB參考,注入和查找

在本系列的第一部分中 &#xff0c;我們介紹了Enterprise JavaBeans v。3.0規范提供的機制&#xff0c;用于定義EJB組件&#xff0c;聲明對EJB的引用并通過依賴項注入或程序化JNDI查找將它們連接起來。 在此博客文章中&#xff0c;我們將研究一些基本示例以了解如何使用EJB API…

ViewPager使用筆記

1.ViewPager.setCurrentItem(position)&#xff0c;即使已設置動畫&#xff0c;但是沒有動畫效果 原因&#xff1a;因為ViewPager滑動之前的時間間隔太短&#xff0c;可以通過反射&#xff0c;去修改ViewPager自動滑動時間&#xff0c;代碼實現如下 1 public class ViewPagerSc…

IOS開發之Swift學習筆記

1.因為存儲屬性要求初始化&#xff0c;我們可以使用lazy修飾符來延遲初始化。轉載于:https://www.cnblogs.com/luntai/p/5430223.html

力扣1兩數之和

給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中同一個元素在答案里不能重復出現。 你可以按任意順序返回…

C ++或Java,高頻交易哪個更快?

總覽 關于什么是高頻交易的最佳解決方案&#xff0c;存在不同意見。 問題的一部分是高頻交易的變化超出您的預期&#xff0c;另一部分是更快的含義。 我的看法 如果您有一個典型的Java程序員和一個典型的C 程序員&#xff0c;并且每個人都有幾年編寫典型的面向對象程序的經驗…

iOS 8 Xcode6 設置Launch Image 啟動圖片

本人apem http://www.mamicode.com/info-detail-494411.html 如何設置App的啟動圖,也就是Launch Image? Step1 1.點擊Image.xcassets 進入圖片管理,然后右擊,彈出"New Launch Image"2.如圖,右側的勾選可以讓你選擇是否要對ipad,橫屏,豎屏,以及低版本的ios系統做支持…