#NOIP模拟赛bzoj3449#大佬(期望好题)
来源:互联网 发布:网络博客犯法吗 编辑:程序博客网 时间:2024/06/06 02:48
其实我根本就不懂得期望是什么,准确地说应该是不太熟悉,但是现在大致也知道是怎么算的了。
说说这道题,出题人的正解很成功被我们某些大佬给卡掉了,原因是还有更好的解法,可以把时间复杂度降得更低,现在来看真正的正解。
假设现在我们有一种完整的N道题难度的排列,设现在这种排列为i,然后有w[i][j]来表示这种排列下,第j - k + 1天到第j天的劳累值。
对于方案i,完成总书的劳累值就是Σw[i][j](k <= j <= n)
然后一共有M^N种排列, 即i∈[1, M^N]
那么列式如下:
上面的竖着一列求和就是在排列i下的总劳累值。
我们考虑每一行,在每种情况下,位置k的劳累值与前后的并不相关,只与它内部自己的值有关,也就是说在k这个位置上所有方案的劳累值总和能直接算出来
然后对于每一个区间大小为K的位置(即每一行求和),它们自己的劳累值总和其实是一样的。
只需要算出一行,然后乘N- K+ 1就可以了。
一行怎么算?
枚举最大劳累值j,于是这个长度为K的区间里要填至少一个j,其他的都要小于j,
于是此时有:(j ^ K - (j - 1) ^ K) * Wt[j]就是当前j的贡献,而这种贡献将出现M ^ (N - K)次(其他地方任意排列)。
对于总共的期望,一共有M ^ N种情况,而每种情况的贡献已经累和,可以选择最后来除,也可以算出每一种最大值就马上除(约分一下就是除M ^ K, 即乘逆元)
Code:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int Max = 400;const int MOD = 1e9 + 7;int N, M, K;int Wt[Max + 5];void getint(int & num){ char c; int flg = 1; num = 0; while((c = getchar()) < '0' || c > '9') if(c == '-') flg = -1; while(c >= '0' && c <= '9'){ num = num * 10 + c - 48; c= getchar(); } num *= flg;}int qmul(int p, int k){ int rt = 1; while(k){ if(k & 1) rt = 1ll * rt * p % MOD; p = 1ll * p * p % MOD; k >>= 1; } return rt;}int main(){ //freopen("kat.in", "r", stdin); //freopen("kat.out", "w", stdout); getint(N), getint(M), getint(K); //if(N < K){puts("0"); return 0;} for(int i = 1; i <= M; ++ i) getint(Wt[i]); int Ans = 0ll; int deno = qmul(M, K); deno = qmul(deno, MOD - 2); for(int i = 1; i <= M; ++ i) Ans = (Ans + 1ll*Wt[i]*(qmul(i, K)-qmul(i - 1, K))%MOD*deno%MOD)%MOD; Ans = 1ll*Ans * (N - K + 1) % MOD; printf("%d\n", Ans); return 0;}/*2 2 21 2*/
阅读全文
0 0
- #NOIP模拟赛bzoj3449#大佬(期望好题)
- 【期望 二分】【noip模拟赛】比赛
- NOIP模拟题 期望DP 礼物
- 【数学期望】【NOIP模拟赛】连续段的期望
- ZlycerQan和Myj大佬的NOIP模拟赛
- [NOIP模拟][好题]Problem
- 10.16 NOIP模拟赛 期望斜率优化 + 模拟 + 状压
- NOIP模拟赛 bzoj2934业务(好题)
- [NOIP模拟][好题]造盒子
- [NOIP模拟][好题]分玩具
- 闵梓轩大佬のnoip模拟题D1 总结 2017/10/26
- 【NOIP模拟赛三】并查集+hash day2 third 雪后村庄(好题)
- 【NOIP模拟赛】 思维+离线+递推 数列(好题)
- nodgd 好路线 noip 2015 模拟赛 T3
- NOIP模拟赛 四校联考 递推 + 分类讨论 + 树上期望
- NOIP模拟 取书问题【概率期望dp】
- noip好题
- noip模拟赛 双城记
- Android学习笔记
- 欢迎使用CSDN-markdown编辑器
- Markdown编辑器简明教程
- java 之 泛型接口
- python 中的队列
- #NOIP模拟赛bzoj3449#大佬(期望好题)
- noip模拟10.24
- 【1013】数字河
- Leetcode 1. Two Sum
- mybatis的一对多和多对多查询
- openstack RPC通信
- 新人
- 1701 H2王建瑜 连续第一天
- React 非DOM属性