[JZOJ4837]I Liked Matrix!
来源:互联网 发布:注册域名流程 知乎 编辑:程序博客网 时间:2024/05/22 06:41
题目大意
在一个
(其实就是把每个位置
题目分析
naive的70分做法
令
令
考虑枚举最大值是多少,多少个
这样做是
100分做法
上面的方法太弱逊水了。
考虑容斥原理。
最小值为
于是就可以愉快地统计答案了:
这样做是
代码实现
#include <iostream>#include <cstdio>using namespace std;const int P=1000000007;const int N=200500;int fact[N],invf[N],F[N],G[N],xp[N],yp[N],Gp[N];int n,m,X,Y,ans;int quick_power(int x,int y){ int ret=1; for (;y;y>>=1,x=1ll*x*x%P) if (y&1) ret=1ll*ret*x%P; return ret;}void pre(){ int l=max(n,m); fact[0]=1; for (int i=1;i<=l;i++) fact[i]=1ll*fact[i-1]*i%P; invf[l]=quick_power(fact[l],P-2); for (int i=l;i>=1;i--) invf[i-1]=1ll*invf[i]*i%P; xp[0]=yp[0]=1; for (int i=1;i<=m;i++) xp[i]=1ll*xp[i-1]*X%P,yp[i]=1ll*yp[i-1]*Y%P;}inline int C(int n,int m){return 1ll*fact[n]*invf[m]%P*invf[n-m]%P;}void calc(){ for (int i=0;i<=m;i++) F[i]=1ll*C(m,i)*xp[m-i]%P*yp[i]%P; G[m+1]=0; for (int i=m;i>=0;i--) G[i]=(G[i+1]+F[i])%P; ans=0; for (int i=0;i<=m;i++) Gp[i]=quick_power(G[i],n); for (int i=1;i<=m;i++) (ans+=1ll*(((Gp[i]-Gp[i+1])%P+P)%P)*i%P)%=P;}int main(){ freopen("past.in","r",stdin),freopen("past.out","w",stdout); scanf("%d%d%d%d",&n,&m,&X,&Y); pre(),calc(); printf("%d\n",ans); fclose(stdin),fclose(stdout);}
0 0
- [JZOJ4837]I Liked Matrix!
- I Liked Matrix!
- SSL P2820 I Liked Matrix!
- 2017年11月01日普及组 I Liked Matrix!
- I - Matrix
- Matrix Inversion Alogrithm (I)
- Spiral Matrix I(II)
- CF I. Matrix
- I Like Matrix!
- [JZOJ4838]I Like Matrix!
- JZOJ4838. I Like Matrix!
- I Love Matrix Forever
- spiral-matrix I&II
- Jzoj4838 I like Matrix!
- [LeetCode]Spiral Matrix I & II & Rotate Matrix
- Spiral Matrix I && Spiral Matrix II
- GCF liked Huayu LIB
- Leetcode 100 Liked Questions
- 浅谈Dubbo服务框架
- 字符串和日期之间的转换
- 大话Redis进阶
- 【U3d】渲染统计窗口详细介绍(Rendering Statistics Window)
- iOS极光推送集成
- [JZOJ4837]I Liked Matrix!
- mtk lcm驱动添加
- layoutSubviews什么时候触发
- Matlab 图片操作
- cocoa programming pods error diff:/../Podfile.lock...
- 单调队列优化DP
- mkfs.ext4 很慢的问题
- es2.x安装bigdesk插件 解决bigdesk报错
- Java实现快速排序