CodeForces 543D 樹形DP Road Improvement

題意:

有一顆樹,每條邊是好邊或者是壞邊,對于一個節點為x,如果任意一個點到x的路徑上的壞邊不超過1條,那么這樣的方案是合法的,求所有合法的方案數。

對于n個所有可能的x,輸出n個答案。

分析:

題解

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <vector>
 6 using namespace std;
 7 
 8 const int maxn = 200000 + 10;
 9 const int MOD = 1000000007;
10 int n;
11 
12 vector<int> G[maxn], pre[maxn], suf[maxn];
13 
14 void scan(int& x)
15 {
16     x = 0;
17     char c = ' ';
18     while(c < '0' || c > '9') c = getchar();
19     while(c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); }
20 }
21 
22 int d[maxn], f[maxn];
23 
24 void mul(int& x, int y) { x = 1LL * x * y % MOD; }
25 
26 void dfs(int u)
27 {
28     d[u] = 1;
29     int sz = G[u].size();
30     for(int i = 0; i < sz; i++)
31     {
32         int v = G[u][i];
33         dfs(v);
34         mul(d[u], d[v] + 1);
35     }
36 
37     int p = 1, s = 1;
38     for(int i = 0; i < sz; i++)
39     {
40         mul(p, d[G[u][i]] + 1);
41         mul(s, d[G[u][sz-1-i]] + 1);
42         pre[u].push_back(p);
43         suf[u].push_back(s);
44     }
45 
46     reverse(suf[u].begin(), suf[u].end());
47 }
48 
49 void dfs2(int u)
50 {
51     int sz = G[u].size();
52     for(int i = 0; i < sz; i++)
53     {
54         int v = G[u][i];
55         f[v] = f[u];
56         if(i > 0) mul(f[v], pre[u][i - 1]);
57         if(i < sz - 1) mul(f[v], suf[u][i + 1]);
58         f[v]++;
59         if(f[v] >= MOD) f[v] -= MOD;
60         dfs2(v);
61     }
62 }
63 
64 int main()
65 {
66     scanf("%d", &n);
67     for(int x, i = 2; i <= n; i++)
68     {
69         scan(x);
70         G[x].push_back(i);
71     }
72 
73     dfs(1);
74     f[1] = 1;
75     dfs2(1);
76 
77     for(int i = 1; i <= n; i++) printf("%I64d ", 1LL * d[i] * f[i] % MOD);
78 
79     return 0;
80 }
代碼君

?

轉載于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4755263.html

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

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

相關文章

理解Javascritp中的引用

Author: bugall Wechat: bugallF Email: 769088641qq.com Github: https://github.com/bugall一&#xff1a; 函數中的引用傳遞 我們看下下面的代碼的正確輸出是什么 function changeStuff(a, b, c) {a a * 10;b.item "changed";c {item: "changed"}; …

通過擴展改善ASP.NET MVC的驗證機制[實現篇]

通過擴展改善ASP.NET MVC的驗證機制[實現篇] 原文:通過擴展改善ASP.NET MVC的驗證機制[實現篇]在《使用篇》中我們談到擴展的驗證編程方式&#xff0c;并且演示了本解決方案的三大特性&#xff1a;消息提供機制的分離、多語言的支持和多驗證規則的支持&#xff0c;我們現在來看…

canopen和1939區別_CAN 和 CANopen的區別和聯系

1、CAN與CANopen的共同點與不同點&#xff1a;CAN只定義了物理層與鏈路層&#xff0c;而沒有定義用戶層&#xff0c;用戶可根據自己的需要定義一些網絡上的通信約定&#xff1b; CANopen是在CAN的基礎上定義了用戶層&#xff0c;即規定了用戶、軟件、網絡終端等之間用來進行信…

ONOS系統架構演進,實現高可用性解決方案

上一篇文章《ONOS高可用性和可擴展性實現初探》講到了ONOS系統架構在高可用、可擴展方面技術概況&#xff0c;提到了系統在分布式集群中怎樣保證數據的一致性。在數據終于一致性方面&#xff0c;ONOS採用了Gossip協議。這一部分的變化不大&#xff0c;而在強一致性方案的選擇方…

Struts2_day01

Java Web開發常用框架 SSH(Struts2 Spring Hibernate)SSM(Struts2 Spring MyBatis)SSI(Struts2 Spring iBatis) 多種框架協同工作 Web層 -- Service層 -- Dao層 Struts2框架: Struts2是一個基于MVC設計模式的Web應用框架&#xff0c;它本質上相當于一個servlet&#xff0c;在MV…

使用 python 開發 Web Service

使用 python 開發 Web Service Python 是一種強大的面向對象腳本語言&#xff0c;用 python 開發應用程序往往十分快捷&#xff0c;非常適用于開發時間要求苛刻的原型產品。使用 python 開發 web service 同樣有語言本身的簡捷高速的特點&#xff0c;能使您快速地提供新的網絡服…

python中輸出n開始的5個奇數_送你99道Python經典練習題,練完直接上手做項目,免費送了來拿吧...

學python沒練習題怎么行、今天&#xff0c;給大家準備一個項目&#xff1a; 99道編程練習&#xff0c;這些題如果能堅持每天至少完成一道&#xff0c;一定可以幫大家輕松 get Python 的編程技能。目前&#xff0c;這個項目已經獲得了 2924 Stars&#xff0c;2468 Forks。首先&a…

java 基礎5

一、 什么是數組及其作用&#xff1f; 定義&#xff1a;具有相同數據類型的一個集合 作用&#xff1a;存儲連續的具有相同類型的數據 二、 java中如何聲明和定義數組 2.1 聲明和定義的語法&#xff1a; 數據類型[ ] 數組名&#xff1b;( int[ ] nums ; ) 或 數…

TFS(Team Foundation Server)介紹和入門

在本文的兩個部分中&#xff0c;我將介紹Team Foundation Server的一些核心特征&#xff0c;重點介紹在本產品的日常應用中是怎樣將這些特性結合在一起使用的。 作為一名軟件開發者&#xff0c;在我的職業生涯中&#xff0c;我常常會用到支持軟件開發過程的大量開發工具&#x…

逆函數求導公式_反函數求導法則

反函數的求導法則是&#xff1a;反函數的導數是原函數導數的倒數。例題&#xff1a;求yarcsinx的導函數。首先&#xff0c;函數yarcsinx的反函數為xsiny&#xff0c;所以&#xff1a;y‘1/sin’y1/cosy&#xff0c;因為xsiny&#xff0c;所以cosy√1-x2&#xff0c;所以y‘1/√…

SpringXML方式配置bean的懶加載lazy-init

lazy-init&#xff08;懶加載&#xff09;&#xff0c;表示該bean在容器初始化的時候不進行初始化。例如&#xff1a;<bean name"role1" class"com.fz.entity.Role" lazy-init"true">以上配置表示&#xff1a;spring容器在初始化的時候不會…

windows下system函數的使用

system函數 是可以調用一些DOS命令,比如system("cls");//清屏,等于在DOS上使用cls命令寫可執行文件路徑&#xff0c;可以運行它 下面列出常用的DOS命令,都可以用system函數調用: ASSOC 顯示或修改文件擴展名關聯。AT 計劃在計算機上運行的命令和程序。ATTRIB 顯示或更…

WWDC2017 筆記 - Cocoa Touch 中的新特性

這篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理。【基于OC】 轉自我的 Blog: Dannys Dream Drag Drop 新的交互方式 拖拽 Drag 需要 Drag 的對象要 add 一個 UIDragInteraction &#xff0c;用法類似于 UIGestureRecognizer 。UIDragInteraction 有一個…

[Hadoop] - 自定義Mapreduce InputFormatOutputFormat

在MR程序的開發過程中&#xff0c;經常會遇到輸入數據不是HDFS或者數據輸出目的地不是HDFS的&#xff0c;MapReduce的設計已經考慮到這種情況&#xff0c;它為我們提供了兩個組建&#xff0c;只需要我們自定義適合的InputFormat和OutputFormat&#xff0c;就可以完成這個需求&a…

PS 色調——老照片效果

這就是通過調色使照片顯得發黃。 R_new0.393*R0.769*G0.189*B; G_new0.349*R0.686*G0.168*B; B_new0.272*R0.534*G0.131*B; clc; clear all; Imageimread(9.jpg); Imagedouble(Image); Image_newImage; Image_new(:,:,1)0.393*Image(:,:,1)0.769*Image(:,:,2)0.189*Image(:,:,3…

jsp出現錯誤

昨天在調試頁面時發生了如圖顯示的異常&#xff0c;它出現的原因是當<jsp:forward>或<jsp:include>標簽沒有參數時&#xff0c;開始標簽和結束標簽</jsp:forward>或</jsp:include>之間不能有空格&#xff0c;不能換行。解決辦法&#xff1a;刪除標簽之…

門限回歸模型的思想_Stata+R:門檻回歸教程

來源 | 數量經濟學綜合整理轉載請聯系進行回歸分析&#xff0c;一般需要研究系數的估計值是否穩定。很多經濟變量都存在結構突變問題&#xff0c;使用普通回歸的做法就是確定結構突變點&#xff0c;進行分段回歸。這就像我們高中學習的分段函數。但是對于大樣本、面板數據如何尋…

【數論】[CF258C]Little elephant and LCM

題目 分析&#xff1a;枚舉最大數&#xff0c;然后找出它所有因數p1…….pk&#xff0c; 從中任意選取一些數&#xff0c;這些數的LCM|這個數且&#xff0c;這些數的最大LCM就是枚舉的這個數&#xff0c;且若pi<aj<pi1則前i個數可以放在j這個位置&#xff0c;即j這個位置…

為普通Object添加類似AttachedProperty的屬性

為普通Object添加類似AttachedProperty的屬性 周銀輝 我們知道&#xff0c;在WPF中對應一個DependencyObject&#xff0c;我們很容易通過AttachedProperty來為類型附加一個屬性。但對于普通的Object而言&#xff0c;這就不可行了。 我現在遇到這樣一個問題&#xff0c;下面有一…

python 操作RabbitMQ

pip install pika使用API操作RabbitMQ基于Queue實現生產者消費者模型View Code 對于RabbitMQ來說&#xff0c;生產和消費不再針對內存里的一個Queue對象&#xff0c;而是某臺服務器上的RabbitMQ Server實現的消息隊列。#!/usr/bin/env python import pika# ###################…