关于月赛的T3暴力
  • 板块学术版
  • 楼主wocaicai
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/9/20 15:28
  • 上次更新2023/11/5 12:53:58
查看原帖
关于月赛的T3暴力
246800
wocaicai楼主2020/9/20 15:28

rt 看了一下讲解,我没理解错的话,就是枚举每一对边对答案的贡献乘上他出现的概率,效率是n方的,然后我自己实现了一下,但是错掉了,想了很久也没有觉得哪里有问题,请各位大佬帮忙qwq

#include<bits/stdc++.h>
using namespace std ;
#define int long long
#define kkksc signed main
#define ddd double
#define maxn 1000010
#define lc (o << 1)
#define rc ((o << 1) | 1 )
int read(){
	int ans = 0 , f = 1 ; char ch = getchar() ;
	while(ch < '0' || ch > '9'){ if(ch == '-') f = -1 ; ch = getchar() ; }
	while(ch >= '0' && ch <= '9') {
		ans = (ans * 10) + ch - '0' ;
		ch = getchar() ;
	}
	return ans * f ;
}
const int mod = 998244353 ; 
int a[maxn] ; 
int fac[maxn] , infac[maxn] ; 
int n , k , ans ; 
int ksm(int a , int b){
	int res = 1 ; 
	while(b){
		if(b&1) res = (res * a ) % mod ; 
		a = (a * a) % mod ; 
		b >>= 1 ; 
	}
	return res ; 
}
void pre(){
	fac[0] = 1 ; 
	for(int i = 1 ; i <= 1e6 ; i++)
		fac[i] = fac[i - 1]*i % mod ; 
	infac[1000000] = ksm(fac[1000000] , mod - 2) ; 
	for(int i = 1e6 - 1 ; i >= 0 ; i--){
				infac[i] = infac[i + 1] * (i + 1) % mod ; //if(infac[i] != ksm(fac[i] , mod - 2)) printf("i : %lld\n" , i); 
	}
}
kkksc(){
//	freopen("test.in" , "r" , stdin) ;
//	freopen("test.out" , "w"  , stdout) ;
	n = read(), k = read() ; 
	pre() ; 
	for(int i = 1 ; i <= n ; i++) a[i] = read() ; 
	ans += a[1]  ;
//	for(int i = 1 ; i <= 10 ; i++)
//		printf("infac[%lld] : %lld \n" , i , infac[i]) ; 
	for(int i = 2 ; i <= n ; i++){
		int st = max(1ll , i - k) , ed = i - 1 , len = ed - st + 1 ; 
//		printf("i : %lld ed : %lld st : %lld len : %lld \n" , i , st , ed , len) ; 
		for(int j = st ; j <= ed ; j++){
			ans = a[i] > a[j] ? (ans + (a[i] - a[j]) * infac[len] % mod + mod ) % mod : ans ; 
		}
	}
//	printf("%lld %lld \n" , fac[3] , ksm(fac[3] , mod - 2)) ; 
//	cout << 5 * infac[3] << endl ; 
	printf("%lld" , (ans + mod) % mod) ; 
}

对于只包含0或1的情况,我的输出与正解相差较大,但我自己手算了一下,感觉我的没有问题

比如这组数据

5 5

0 0 0 1 1

我手算后是三分之五(我知道要整逆元),但是题解答案的好像不一致,求大佬解答,是不是我理解错了

2020/9/20 15:28
加载中...