bzoj2152 聰聰可可

題目描述

聰聰和可可是兄弟倆,他們倆經常為了一些瑣事打起來,例如家中只剩下最后一根冰棍而兩人都想吃、兩個人都想玩兒電腦(可是他們家只有一臺電腦)……遇到這種問題,一般情況下石頭剪刀布就好了,可是他們已經玩兒膩了這種低智商的游戲。

他們的爸爸快被他們的爭吵煩死了,所以他發明了一個新游戲:由爸爸在紙上畫n個“點”,并用n-1條“邊”把這n個“點”恰好連通(其實這就是一棵樹)。并且每條“邊”上都有一個數。接下來由聰聰和可可分別隨即選一個點(當然他們選點時是看不到這棵樹的),如果兩個點之間所有邊上數的和加起來恰好是3的倍數,則判聰聰贏,否則可可贏。

聰聰非常愛思考問題,在每次游戲后都會仔細研究這棵樹,希望知道對于這張圖自己的獲勝概率是多少。現請你幫忙求出這個值以驗證聰聰的答案是否正確。

輸入輸出格式

輸入格式:

?

輸入的第1行包含1個正整數n。后面n-1行,每行3個整數x、y、w,表示x號點和y號點之間有一條邊,上面的數是w。

?

輸出格式:

?

以即約分數形式輸出這個概率(即“a/b”的形式,其中a和b必須互質。如果概率為1,輸出“1/1”)。

?

輸入輸出樣例

輸入樣例#1:?復制
5
1 2 1
1 3 2
1 4 1
2 5 3
輸出樣例#1:?復制
13/25

說明

【樣例說明】

13組點對分別是(1,1) (2,2) (2,3) (2,5) (3,2) (3,3) (3,4) (3,5) (4,3) (4,4) (5,2) (5,3) (5,5)。

【數據規模】

對于100%的數據,n<=20000。

題解

  然后從今天開始學習點分

  這應該算是個板子?

  先用點分計算出路徑長度,把路徑長度對$%3$,然后用$sum[1],sum[2],sum[0]$表示模數是$1,2,3$的情況的總數,那么就是$ans+=sum[1]*sum[2]*2+sum[0]*sum[0]$,最后答案就是$ans/(n*n)$

  

 1 //minamoto
 2 #include<iostream>
 3 #include<cstdio>
 4 #define ll long long
 5 #define inf 0x3f3f3f3f
 6 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
 7 char buf[1<<21],*p1=buf,*p2=buf;
 8 template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
 9 inline int read(){
10     #define num ch-'0'
11     char ch;bool flag=0;int res;
12     while(!isdigit(ch=getc()))
13     (ch=='-')&&(flag=true);
14     for(res=num;isdigit(ch=getc());res=res*10+num);
15     (flag)&&(res=-res);
16     #undef num
17     return res;
18 }
19 char sr[1<<21],z[20];int C=-1,Z;
20 inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}
21 inline void print(int x){
22     if(C>1<<20)Ot();if(x<0)sr[++C]=45,x=-x;
23     while(z[++Z]=x%10+48,x/=10);
24     while(sr[++C]=z[Z],--Z);
25 }
26 const int N=20005,mod=3;
27 int head[N],Next[N<<1],edge[N<<1],ver[N<<1];ll ans=0;
28 int sz[N],son[N],sum[4],vis[N];
29 int size,mx,rt,n,tot;
30 inline void add(int u,int v,int e){
31     ver[++tot]=v,Next[tot]=head[u],head[u]=tot,edge[tot]=e;
32     ver[++tot]=u,Next[tot]=head[v],head[v]=tot,edge[tot]=e;
33 }
34 void getrt(int u,int fa){
35     sz[u]=1,son[u]=0;
36     for(int i=head[u];i;i=Next[i]){
37         int v=ver[i];
38         if(vis[v]||v==fa) continue;
39         getrt(v,u);
40         sz[u]+=sz[v];
41         cmax(son[u],sz[v]);
42     }
43     cmax(son[u],size-sz[u]);
44     if(son[u]<mx) mx=son[u],rt=u;
45 }
46 void query(int u,int fa,int d){
47     ++sum[d%mod];
48     for(int i=head[u];i;i=Next[i]){
49         int v=ver[i];
50         if(vis[v]||v==fa) continue;
51         query(v,u,(d+edge[i])%mod);
52     }
53 }
54 ll solve(int rt,int d){
55     sum[0]=sum[1]=sum[2]=0;
56     query(rt,0,d);
57     ll res=1ll*sum[1]*sum[2]*2+1ll*sum[0]*sum[0];
58     return res;
59 }
60 void divide(int u){
61     ans+=solve(u,0);
62     vis[u]=1;
63     for(int i=head[u];i;i=Next[i]){
64         int v=ver[i];
65         if(vis[v]) continue;
66         ans-=solve(v,edge[i]);
67         mx=inf,rt=0,size=sz[v];
68         getrt(v,0);
69         divide(rt);
70     }
71 }
72 inline ll gcd(ll a,ll b){
73     while(b^=a^=b^=a%=b);
74     return a;
75 }
76 int main(){
77     n=read();
78     for(int i=1;i<n;++i){
79         int u=read(),v=read(),e=read();
80         add(u,v,e%3);
81     }
82     mx=inf,size=n,ans=0,rt=0;
83     getrt(1,0),divide(rt);
84     ll p=n*n,GCD=gcd(ans,p);
85     print(ans/GCD),sr[++C]='/',print(p/GCD);
86     Ot();
87     return 0;
88 }

?

轉載于:https://www.cnblogs.com/bztMinamoto/p/9476329.html

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

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

相關文章

七、 面向對象(二)

匿名類對象 創建的類的對象是匿名的。當我們只需要一次調用類的對象時&#xff0c;我們就可以考慮使用匿名的方式創建類的對象。特點是創建的匿名類的對象只能夠調用一次&#xff01; package day007;//圓的面積 class circle {double radius;public double getArea() {// TODO…

機器學習 客戶流失_通過機器學習預測流失

機器學習 客戶流失介紹 (Introduction) This article is part of a project for Udacity “Become a Data Scientist Nano Degree”. The Jupyter Notebook with the code for this project can be downloaded from GitHub.本文是Udacity“成為數據科學家納米學位”項目的一部分…

2044. 統計按位或能得到最大值的子集數目

2044. 統計按位或能得到最大值的子集數目 給你一個整數數組 nums &#xff0c;請你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的數目 。 如果數組 a 可以由數組 b 刪除一些元素&#xff08;或不刪除&#xff09;得到&…

redis系列:分布式鎖

1 介紹 這篇博文講介紹如何一步步構建一個基于Redis的分布式鎖。會從最原始的版本開始&#xff0c;然后根據問題進行調整&#xff0c;最后完成一個較為合理的分布式鎖。 本篇文章會將分布式鎖的實現分為兩部分&#xff0c;一個是單機環境&#xff0c;另一個是集群環境下的Redis…

Qt中的坐標系統

轉載&#xff1a;原野追逐 Qt使用統一的坐標系統來定位窗口部件的位置和大小。 以屏幕的左上角為原點即(0, 0)點&#xff0c;從左向右為x軸正向&#xff0c;從上向下為y軸正向&#xff0c;這整個屏幕的坐標系統就用來定位頂層窗口&#xff1b; 此外&#xff0c;窗口內部也有自己…

預測股票價格 模型_建立有馬模型來預測股票價格

預測股票價格 模型前言 (Preface) If you are reading this, it’s most likely because you love to solve puzzles. I’m a very competitive person by nature. The Mt. Everest of puzzles, in my opinion, is trying to find excess returns through active trading in th…

Python 模塊 timedatetime

time & datetime 模塊 在平常的代碼中&#xff0c;我們常常需要與時間打交道。在Python中&#xff0c;與時間處理有關的模塊就包括&#xff1a;time&#xff0c;datetime,calendar(很少用&#xff0c;不講)&#xff0c;下面分別來介紹。 在開始之前&#xff0c;首先要說明幾…

大數模板Java

import java.util.*; import java.math.BigInteger; public class Main{public static void main(String args[]){Scanner cinnew Scanner(System.in);BigInteger a,b;acin.nextBigInteger();bcin.nextBigInteger();System.out.println(a.add(b));//加法System.out.println(a.…

檸檬工會_工會經營者

檸檬工會Hey guys! This week we’ll be going over some ways to work with result sets in MySQL. These result sets are the outputs of your everyday queries, such as:大家好&#xff01; 本周&#xff0c;我們將介紹一些在MySQL中處理結果集的方法。 這些結果集是您日常…

229. 求眾數 II

229. 求眾數 II 給定一個大小為 n 的整數數組&#xff0c;找出其中所有出現超過 ? n/3 ? 次的元素。 示例 1&#xff1a;輸入&#xff1a;[3,2,3] 輸出&#xff1a;[3]示例 2&#xff1a;輸入&#xff1a;nums [1] 輸出&#xff1a;[1]示例 3&#xff1a;輸入&#xff1a;…

寫給Java開發者看的JavaScript對象機制

幫助面向對象開發者理解關于JavaScript對象機制 本文是以一個熟悉OO語言的開發者視角&#xff0c;來解釋JavaScript中的對象。 對于不了解JavaScript 語言&#xff0c;尤其是習慣了OO語言的開發者來說&#xff0c;由于語法上些許的相似會讓人產生心理預期&#xff0c;JavaScrip…

Pythonic---------詳細講解

作者&#xff1a;半載流殤 鏈接&#xff1a;https://zhuanlan.zhihu.com/p/35219750 來源&#xff1a;知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。Pythonic&#xff0c;簡言之就是以Python這門語言獨特的方式寫出既簡潔又優美的代碼…

大數據ab 測試_在真實數據上進行AB測試應用程序

大數據ab 測試Hello Everyone!大家好&#xff01; I am back with another article about Data Science. In this article, I will write about what is A-B testing and how to use it on real life data-set to compare two advertisement methods.我回來了另一篇有關數據科…

492. 構造矩形

492. 構造矩形 作為一位web開發者&#xff0c; 懂得怎樣去規劃一個頁面的尺寸是很重要的。 現給定一個具體的矩形頁面面積&#xff0c;你的任務是設計一個長度為 L 和寬度為 W 且滿足以下要求的矩形的頁面。要求&#xff1a; 你設計的矩形頁面必須等于給定的目標面積。 寬度 …

node:爬蟲爬取網頁圖片

前言 周末自己在家閑著沒事&#xff0c;刷著微信&#xff0c;玩著手機&#xff0c;發現自己的微信頭像該換了&#xff0c;就去網上找了一下頭像&#xff0c;看著圖片&#xff0c;自己就想著作為一個碼農&#xff0c;可以把這些圖片都爬取下來做成一個微信小程序&#xff0c;說干…

如何更好的掌握一個知識點_如何成為一個更好的講故事的人3個關鍵點

如何更好的掌握一個知識點You’re launching a digital transformation initiative in the middle of the ongoing pandemic. You are pretty excited about this big-ticket investment, which has the potential to solve remote-work challenges that your organization fac…

centos 搭建jenkins+git+maven

gitmavenjenkins持續集成搭建發布人:[李源] 2017-12-08 04:33:37 一、搭建說明 系統&#xff1a;centos 6.5 jdk&#xff1a;1.8.0_144 jenkins&#xff1a;jenkins-2.93-1.1 git&#xff1a;git-2.9.0 maven&#xff1a;Maven 3.3.9 二、部署 2.1、jdk安裝 1&#xff09;下…

638. 大禮包

638. 大禮包 在 LeetCode 商店中&#xff0c; 有 n 件在售的物品。每件物品都有對應的價格。然而&#xff0c;也有一些大禮包&#xff0c;每個大禮包以優惠的價格捆綁銷售一組物品。 給你一個整數數組 price 表示物品價格&#xff0c;其中 price[i] 是第 i 件物品的價格。另有…

記錄一次spark連接mysql遇到的問題

在使用spark連接mysql的過程中報錯了&#xff0c;錯誤如下 08:51:32.495 [main] ERROR - Error loading factory org.apache.calcite.jdbc.CalciteJdbc41Factory java.lang.NoClassDefFoundError: org/apache/calcite/linq4j/QueryProviderat java.lang.ClassLoader.defineCla…

什么事數據科學_如果您想進入數據科學,則必須知道的7件事

什么事數據科學No way. No freaking way to enter data science any time soon…That is exactly what I thought a year back.沒門。 很快就不會出現進入數據科學的怪異方式 ……這正是我一年前的想法。 A little bit about my data science story: I am a complete beginner…