首页 > 其他分享 >CF921 D. Good Trip

CF921 D. Good Trip

时间:2024-02-02 11:36:21浏览次数:45  
标签:om Good return ans1 ll define Trip CF921 mod

题面

image

代码

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)
#define first fi
#define seconf se 
#define push_back pb
#define endl "\n"
#define O(x) cout<<#x<<":"<<x<<endl;
using ll=long long;
using pii=pair<int,int>;
using pll=pair<ll,ll>;
#define N 200100
#define MOD int(1e9+7)
ll f[N],g[N];
ll ksm(ll a,ll b,ll mod=MOD){
	if(b==0) return 1;
	if(b==1) return a%mod;
	ll mid=ksm(a,b>>1,mod);
	if(b&1) return mid*mid%mod*a%mod;
	else return mid*mid%mod;
}
ll inv(ll a,ll mod=MOD){
	return ksm(a,mod-2,mod);
}
ll om(ll a,ll mod=MOD){
	return (a%mod+mod)%mod;
}
void Init(){
	f[0]=1;
	rep(i,1,200000) f[i]=om(f[i-1]*i);
	//rep(i,1,100) O(f[i])
	g[200000]=inv(f[200000]);
	per(i,0,199999) g[i]=om(g[i+1]*(i+1));
	//O(g[1])
}
ll C(ll n,ll m){
	if(n<m) return 0;
	return om(om(f[n]*g[m])*g[n-m]);
}
void solve()
{
	int n,m,k; ll ans1=0;
	cin>>n>>m>>k;
	vector<ll> f1(m+1);
	rep(i,1,m){
		int a,b;
		cin>>a>>b>>f1[i];
		ans1=om(ans1+f1[i]);
	}
	//O(ans1)
	ans1=om(ans1*k),ans1=om(ans1*inv(C(n,2)));
	//O(ans1)
	ll ans2=0;
	rep(i,0,k){
		ll v1=C(k,i);
		ll d=C(n,2);
		ll v2=ksm(inv(d),i);
		ll v3=ksm(om(1-inv(d)),k-i);
		ll v4=om(om(1ll*i*(i-1))*inv(2));
		ans2=om(ans2+om(om(om(v1*v2)*v3)*v4));
	}
	cout<<om(ans1+om(1ll*m*ans2))<<endl;
}
int main()
{
	IOS
	Init();
	int t=1;cin>>t;
	while(t--) {
		solve();
	//O(t)	
	}
	return 0;
}

标签:om,Good,return,ans1,ll,define,Trip,CF921,mod
From: https://www.cnblogs.com/shyiaw/p/18002854

相关文章

  • Striped64源码阅读
    目录简介模型代码分析成员变量方法补充ThreadLocalRandomContended注解-解决伪共享问题参考链接本人的源码阅读主要聚焦于类的使用场景,一般只在java层面进行分析,没有深入到一些native方法的实现。并且由于知识储备不完整,很可能出现疏漏甚至是谬误,欢迎指出共同学习本文基于cor......
  • 【容斥反演】Nanami and Trip Schemes Count Problem
    链接给定\(k\)个特殊格子,求从(1,1)往右或往上走到(n,m),在经过不超过\(p\)个特殊格的情况下的方案数设\(f(S)\)表示钦定走S集合中格子的方案,\(g(S)\)为恰好走S集合的方案,那么\(f\)与\(g\)的关系就是一个\(\subseteq\)意义下的前缀和。即\[f(S)=\sum_{S\subs......
  • CF1925D Good Trip 题解
    考虑分别计算\(p\)和\(q\)。按照期望的定义,\(q\)应该等于方案的总数,也就是\(s^k\),其中\(s\)表示一共有多少个不同的组。考虑如何求\(p\),我们先只计算第\(i\)组对\(p\)的贡献。如果第\(i\)组一共被选了\(1\)次,那么贡献为:\[g=f_i\timesC_{k}^{1}\times(s-1)^{......
  • 初中英语优秀范文100篇-072Growing up with good books-伴随着好书成长
    PDF格式公众号回复关键字:SHCZFW072记忆树1Asthesayinggoes:“Knowledgeispower."翻译俗话说:“知识就是力量。”简化记忆知识句子结构As引导的短语,表示“正如……所说”,用于引用格言或谚语Knowledge作主语,是抽象名词。Is是系动词。Power作表语,是名词2We......
  • Goodbye2023
    GoodBye2023A2023题目描述给定n个数,让我们判断是否能与m个数相乘后可以得到2023,并且将这些数输出出来解题思路我们只需要判断这些数能否被2023整除。代码#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'#definefix(n)std::fixed<<std::......
  • QOJ7206 Triple
    QOJ传送门大分讨恶心题。首先施容斥,变成求\(\sum|AB|>\max(|AC|,|BC|)\)。遇到这种三个点的路径问题,可以找出一个点\(X\),使得\(A,B,C\)在\(X\)的不同子树内,也就是\(A\toB,A\toC,B\toC\)的路径的唯一一个交点\(X\)。那么:\[[|AB|>\max(|AC|,|BC|)]=......
  • [ARC155C] Even Sum Triplet 题解
    一道大分类讨论。如果有一个可以交换的段包含奇数,那么你可以把所有奇数移到最左边并任意调整相对顺序,然后回到任意一种有一个可以交换的段包含奇数的状态。这种情况,如果偶数的数量为\(2\),这两个偶数是不能交换相对位置的,有至少\(3\)个偶数就能交换偶数间相对位置。所以只需要......
  • 【Leetcode1949. 坚定的友谊】使用MySQL在无向图中寻找{"CompleteTripartite", {1, 1,
    目录题目地址思路代码MySQL代码逐行翻译为Pandas代码等效Cypher查询(未验证)题目地址https://leetcode.cn/problems/strong-friendship/思路就是在无向图中寻找这个pattern:(*Mathematica*)GraphData[{"CompleteTripartite",{1,1,3}}]SQL写还是比较麻烦。更加复杂的查询还是......
  • 初中英语优秀范文100篇-062Going to Sleep Early Is a Good Habit早一点睡觉是个好习
    PDF格式公众号回复关键字:SHCZFW062记忆树1Goingtosleepearlyisofgreatbenefittome.翻译早一点睡觉对我非常有益。简化记忆早睡句子结构"Goingtosleepearly"是主语,表示一个动作或状态。"is"是系动词,用来连接主语和表语,表示主语的特征或状态。"ofgreat......
  • 初中英语优秀范文100篇-061Reading Is a Good Habit-阅读是一种良好的习惯
    PDF格式公众号回复关键字:SHCZFW061记忆树1Agoodhabitcangiveusbenefitsallthelife.翻译养成良好习惯可以使我们终生受益简化记忆受益句子结构主语:"Agoodhabit"-主语是一个名词短语,表示一个良好的习惯。谓语动词:"cangive"-谓语动词是"cangive......