首页 > 其他分享 >2024.8.11 鲜花

2024.8.11 鲜花

时间:2024-08-11 21:39:50浏览次数:12  
标签:11 prod 鲜花 2024.8 long int out dp MOD

花の塔
君が持ってきた漫画
くれた知らない名前のお花
今日はまだ来ないかな?
初めての感情知ってしまった
窓に飾った絵画をなぞってひとりで宇宙を旅して
それだけでいいはずだったのに
君の手を握ってしまったら
孤独を知らないこの街には
もう二度と帰ってくることはできないのでしょう
君が手を差し伸べた 光で影が生まれる
歌って聞かせて この話の続き
連れて行って見たことない星まで
誰の手も声も届かない
高く聳え立った塔の上へ
飛ばすフウセンカズラ
僕は君に笑って欲しいんだ
満たされない穴は惰性の会話や澄ましたポーズで
これまでは埋めてきたけど
退屈な日々を蹴散らして
君と二人でこの街中を泳げたら
それはどれだけ素敵なことでしょう?
出したことないほど大きな声でやっと君に伝わる
歪なくらいがさ きっとちょうどいいね
世界の端と端を結んで
窓に飾った絵画をなぞってひとりで宇宙を旅して
それだけでも不自由ないけど
僕は選んでみたいの
高鳴る心 謎だらけの空を
安全なループを今、書き換えて!
君の手を握ってしまったら
孤独を知らないこの街にはもう二度と
帰ってくることはできないのでしょう
いくらでも迷いながら光も影も見に行こう
歌って聞かせてこの話の続き
連れて行って見たことない星まで
世界の端と端を結んで

生活在hzoi上

原:P5206 [WC2019] 数树

当然只有 \(op=1\)

有容斥做法,下次说,这里主要讲 jijidawang 的好做法。

一下称第一棵树(已知树)为 A,第二棵(未知树)为 B。

首先发现 B 的贡献只和其是否对应 A 的边有关,所以根据其是否是 A 的边将 B 划分成连通块。

设连通块数为 \(k\),则一种树贡献为 \(y^k\)

考虑将 \(k\) 个连通块拼成树的方案为 \(n^{k-2}\prod s_i\) 其中 \(s_i\) 为连通块大小。

但是这样如果用树边连接有拼重的,考虑新设一个贡献 \(v\) 使答案正确。

枚举树边的连接个数,对于一种树贡献是 \(\sum\limits_{i=0}^{n-k}\dbinom{n-k}{i}v^{k+i}\)。通过二项式定理得 \(v^k(1+v)^{n-k}\)

将 \((1+v)^n\) 提出来,最后在除上,联立 \(v^k(1+v)^{n-k}=y^k\) 解得 \(v=\frac{y}{1-y}\)

所以现在就是求:

\[\frac{\sum v^kn^{k-2}\prod s_i}{(1+v)^n} \]

简单化简一下就是:

\[\frac{(1-y)^n}{n^2}\sum v^kn^k\prod s_i \]

前面的显然整,后面已经可以 \(n^2\) dp 做了。

考虑继续推:

\[\frac{(1-y)^n}{n^2}\sum \prod s_inv \]

发现后面相当于在每个联通块里选个点做出 \(nv\) 的贡献,最后求和,设 \(dp_{i,0/1}\) 表示 \(i\) 为根是否已经选了点,可以省掉枚举 \(k\),做到 \(O(n)\)。

Code
#include<bits/stdc++.h>
using namespace std;
using llt=long long;
using llf=long double;
using ull=unsigned long long;
#define endl '\n'
#ifdef LOCAL
	FILE *InFile=freopen("in_out/in.in","r",stdin),*OutFile=freopen("in_out/out.out","w",stdout);
#else
	FILE *InFile=stdin,*OutFile=stdout;
#endif

const int N=1e5+3,MOD=998244353;
struct Gph{
    int hd[N],nt[N<<1],to[N<<1],tot=1;
    void Add(int u,int v){to[++tot]=v,nt[tot]=hd[u],hd[u]=tot;}
	void ADD(int u,int v){Add(u,v),Add(v,u);}
#define For_to(i,u,v,g) for(int i=g.hd[u],v=g.to[i];i;i=g.nt[i],v=g.to[i])
}g;
int Fpw(int a,int b){
	int ans=1;
	while(b){
		if(b&1) ans=1ll*ans*a%MOD;
		a=1ll*a*a%MOD,b>>=1;
	}
	return ans;
}
int Inv(int a){return Fpw(a,MOD-2);}
int n,y,v; ull dp[N][2];
void Dp(int u,int f){
	dp[u][0]=1,dp[u][1]=1ll*v*n%MOD;
	For_to(i,u,v,g) if(v!=f){
		Dp(v,u);
		dp[u][1]=dp[v][0]*dp[u][1]%MOD+dp[v][1]*dp[u][0]%MOD+dp[v][1]*dp[u][1]%MOD;
		dp[u][0]=dp[v][0]*dp[u][0]%MOD+dp[v][1]*dp[u][0]%MOD;
	}
}

int main(){
	ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
	cin>>n>>y;
	if(y==1) return cout<<Fpw(n,n-2),0;
	for(int i=1;i<n;++i){int u,v; cin>>u>>v; g.ADD(u,v);}
	v=1ll*y*Inv(1-y+MOD)%MOD; Dp(1,0);
	cout<<dp[1][1]*(Fpw(1-y,n)+MOD)%MOD*Inv(1ll*n*n%MOD)%MOD;
}
提前祝贺木子米酱赢得本届挺王宝座(怎么上贴吧啊!)

标签:11,prod,鲜花,2024.8,long,int,out,dp,MOD
From: https://www.cnblogs.com/xrlong/p/18353920

相关文章

  • 2024.8.11 总结(集训 考试)
    之前听说今天的考试难度是NOIP-。T1赛时只会暴力。甚至还想出了比时间复杂度\(O(n^2)\)的暴力更慢的时间\(O(n^3)\)(可能不是,可能要\(/\omega\))的bitset做法。正解之一是xorhashing。前年(T3)、去年(T2?)的CSP-S我都没想出hash做法。感觉自己缺乏想hash的意识。......
  • 8.11考试总结(未改完)
    感受总结考的是2022牛客提高组的第四场。第一眼难度偏高,第一遍读完题后,四道题都没什么思路,只有一些简单的暴力。后来仔细想第一题,乱搞了接近80分,写第三,四题的暴力。第四题40分暴力挂了30分,第三题几乎想出了正解,没有时间写,乱搞了接近20分。总体结果还行,但在第一题消耗2个半小......
  • Windows11 24H2 + MSSQL 2022 Developer安装匹配
    时间一晃好久没折腾这个了,因LenovoG500太老破旧(Windows7+MSSQL2014Developer,不想折腾更换),直到6月份挂掉再维修也没价值了,只好临时用了另外一个AcerASpire4750(8G+120GSSD),当时其实也没打算更换到Windows10,只是之前的U盘启动盘坏掉,临时做了个其他U盘启动盘(非老毛桃、大白菜......
  • Selenium + Python 自动化测试11(unittest组织用例)
            我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。上一篇我们讨论了unittest基本使用方法。        本篇文章我们接着讲。一些概念和一些常用的构造测试集的方法。1、基本概念1)TestCase        一个TestCase的......
  • sonarqube-9.9.6.92038 安装与启动 , Windows11
    使用JDK17,并且9000端口没有被占用使用默认H2数据库,那么conf/sonar.properties不需要修改,一句都不要改;启动启动成功 访问:http://localhost:9000/,用户名/密码:admin/admin  教程: ......
  • 0811day04
    使用格式化输出的三种方式实现以下输出(name换成自己的名字,既得修改身高体重,不要厚颜无耻)name='Nick'height=180weight=140#"Mynameis'Nick',myheightis180,myweightis140"name='Nick'height=180weight=140print(f"Mynameis{na......
  • 注册无需窗口全局常用热键快捷键 2024年8月11日
    注册无需窗口全局常用热键快捷键2024年8月11日 注册无需窗口全局常用热键快捷键2024年8月11日REMC:\Prog\_一键打包成exe\一键打包成exe.batREM此批处理脚本文件最后编辑日期2022年9月23日set/ay=%date:~,4%,mo=1%date:~5,2%%%100,d=1%date:~8,2%%%100,h=%time:......
  • 在线仿真平台+C语言实现:STM32驱动0.96寸OLED屏幕显示DHT11温湿度传感器测量值
    这里推荐一款由深圳航天科技创新研究院推出的在线电路仿真软件,该软件不仅具备原理图绘制与代码编写功能,还支持在线编译代码、上传自定义代码以及进行仿真模拟,此外还能在线生成并允许下载.bin和.hex文件。官网地址如下:Document进入网页后先注册一个账号。  注册完账号后即可......
  • 2024/08/11 每日一题
    LeetCode1035不相交的线方法1:动态规划classSolution{publicintmaxUncrossedLines(int[]nums1,int[]nums2){intn=nums1.length,m=nums2.length;int[][]dp=newint[n+1][m+1];for(inti=1;i<=n;i++){......
  • Windows11系统PerceptionDevice.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个PerceptionDevice.dll文件(挑选合适的版本文......