首页 > 其他分享 >Codeforces Round #832 (Div. 2) E

Codeforces Round #832 (Div. 2) E

时间:2022-11-05 13:22:05浏览次数:85  
标签:832 return int Codeforces sol djie Div define mod

牛逼题。

通过拐点刻画路径,这样每条路径的贡献方式唯一,你只要钦定拐点都选即可刻画唯一的路径,然后路径上的其他点随便选。

https://codeforc.es/contest/1747/problem/E

https://www.luogu.com.cn/blog/340163/cf1747-sol

关于拐点的方案。

image

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define PW(x) ((x)>=0?pw[(x)]:0)
using namespace std;
const int mod=(int)(1e9+7),N=(int)(1e7+5);
int jie[N],djie[N],pw[N];
int fpow(int x,int y) {
	if(y<0) return 0;
	int res=1; x%=mod;
	while(y) {
		if(y&1) res=res*x%mod;
		y>>=1; x=x*x%mod;
	} return res;
}

int C(int n,int m) {
	if(n<0||m<0||m>n) return 0;
	return jie[n]*djie[m]%mod*djie[n-m]%mod;
}
int n,m;
void sol() {
	cin>>n>>m;
	int ans=0;
	for(int i=0;i<=n+m;i++) {
		int s=n+m+1-i-2;
		if(s<0) break ;
		int qwq=0;
//		for(int j=i;j<=i;j++) {
		qwq=(qwq+(PW(s)*(i+2)%mod+s*PW(s-1)%mod)%mod)%mod;
//		}
		ans=(ans+qwq*C(n,i)%mod*C(m,i)%mod)%mod; 
	}
//	cout<<ans<<'\n';
	ans=(ans%mod+mod)%mod;
	cout<<ans<<'\n';
}

signed main() {
	cin.tie(0); ios::sync_with_stdio(false);
	jie[0]=djie[0]=1; for(int i=1;i<=N-5;i++) jie[i]=jie[i-1]*i%mod;
	djie[N-5]=fpow(jie[N-5],mod-2); for(int i=N-5;i>=1;i--) djie[i-1]=djie[i]*i%mod;
	pw[0]=1; for(int i=1;i<=N-5;i++) pw[i]=pw[i-1]*2%mod;
	int T; cin>>T; while(T--) sol();
	return 0;
} 

标签:832,return,int,Codeforces,sol,djie,Div,define,mod
From: https://www.cnblogs.com/xugangfan/p/16860015.html

相关文章

  • Codeforces Round #751 (Div. 2) D
    D.FrogTraveler考虑dpdp[i]表示i高度的时候最少多少步能达到然后再bfs就可以了但是这样是n2的虽然看起来只有n个点我们考虑优化我们主要复杂度是当前点还会去搜......
  • 用DIV+CSS技术设计的音乐主题网站(web前端网页制作课作业)
    ......
  • Codeforces Round #832 (Div. 2) A-D
    比赛链接A题解知识点:贪心。我们考虑把正数和负数分开放,显然把负数和正数放在一起的结果不会更优。时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码#include<bits/std......
  • Codeforces Round #832 (Div. 2)
    A.TwoGroups数组和的绝对值即为答案。B.BANBAN大概就是尽可能把前面的B搞到后面,尽可能把后面的N搞到前面。答案为\(\lceil\frac{n}{2}\rceil\),操作为每次......
  • Codeforces Round #764 (Div. 3) G
    G.MinOrTree看到或运算我们思考如何按位来做我们可以贪心的从高位到低位的要是该位可以都用0的来构成一颗生成树我们显然是很高兴的但是怎么check?我们每次遍历一......
  • CodeForces - 914C Travelling Salesman and Special Numbers
    题意:给出一个二进制数a,每次操作将当前数变成其二进制下1的个数,若干次操作后可以将其变为1.给定k,求不大于a的数中,经过k次操作能变成1的数的数量。解:观察一下这个操作,可以求......
  • Codeforces Round #776 (Div. 3) E
    E.ReschedulingtheExam显然我们能想到的每次操作都是先将最小的取出来操作要是我们有两个数都是最小的我们只有相邻的时候才能操作要是大于两个那我们就不管怎么操......
  • Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round) F M
    A-E都还是比较简单的。首先,容易想到的,异或上\(2^k\),相当于以\(2^{k+1}\)的长度分块,然后每一块对半切,然后交换左右部分。我的想法是由于这个交换的性质,也许我们可以尝......
  • Codeforces Round #766 (Div. 2)
    CodeforcesRound#766(Div.2)\(\color{Green}{★}\)表示赛时做出。\(\color{Yellow}{★}\)表示赛后已补。\(\color{Red}{★}\)表示\(\text{To\be\solved}\)......
  • Codeforces Round #820 (Div. 3) F
    F.KireiandtheLinearFunction首先我们知道的是给定长度w都是%9意义下的所以我们枚举四个位置的数就是9^4预处理出来答案这里我们要去w长度的串%9但是w的位数过......