做网站开发哪里好,金湖县网站建设,重庆市建设工程信息网官网查询入口,wordpress 文章数据表让我们来几道高中的组合题吧#xff1a; 1.我们一定有n个向下#xff0c;为
2.我们挑最大的两个#xff0c;条件是他们奇偶性相同#xff0c;为2*A10,2;
3.用捆绑法即可。 4.我们用隔板法#xff0c;为
5.问题等价于23个相同的球放到3个盒子里#xff0c;每个盒子至少…让我们来几道高中的组合题吧 1.我们一定有n个向下为
2.我们挑最大的两个条件是他们奇偶性相同为2*A10,2;
3.用捆绑法即可。 4.我们用隔板法为
5.问题等价于23个相同的球放到3个盒子里每个盒子至少有一个。
下面我们直接看题 很显然当无限制条件时每个a[i]贡献12...n因此我们对没有限制的快速幂有限制的单独计算即可下面是AC代码
#includebits/stdc.h
using namespace std;
#define int long long
int n,m,k,mod1e97,x,y,ck;
mapint,int mp;
struct node{int x,y;
}a[100010];
bool cmp(node a,node b){if(a.xb.x) return a.yb.y;else return a.xb.x;
}
long long quicks(long long a,long long b){long long i1;while(b){if(b1) i(a*i)%mod;b1;a(a*a)%mod;}return i;
}
signed main(){cinnmk;if(n%20) ckn/2*(n1)%mod;else ckn*((n1)/2)%mod;for(int i1;ik;i){scanf(%d%d,a[i].x,a[i].y);}sort(a1,ak1,cmp);for(int i1;ik;i){if(a[i1].xa[i].xa[i1].ya[i].y) continue;if(mp.count(a[i].x)0) mp[a[i].x](ck-a[i].ymod)%mod;else mp[a[i].x](mp[a[i].x]-a[i].ymod)%mod;}int ansquicks(ck,m-mp.size());mapint,int::iterator itmp.begin();for(;it!mp.end();it){ans(ans*(it-second)mod)%mod;}coutans;
}
接题 没有障碍时就是求n个数的排列而我们现在相当于限制了每一行不能放的元素互不相同。
因此我们可以吧问题等价于1----n个格子每一个格子不能放与自己下标相同的元素。
这样子就是一个错排问题
下面给出错排的求解思路 下面是AC代码
#includebits/stdc.h
using namespace std;
#define int long long
int n,x,a[205];
long long f(long long n){if(a[n]!-1) return a[n];else return a[n](n-1)*(f(n-1)f(n-2));
}
signed main(){cinn;memset(a,-1,sizeof(a));a[1]0;a[2]1;for(int i1;in;i){for(int j1;jn;j){scanf(%d,x);}}if(n1) cout0;else{ coutf(n);}
}
下面看看经典的卡特兰数 只有第一段翻折
组合数的除我们用费马小定理求逆元即可。
下面是AC代码
#includebits/stdc.h
using namespace std;
#define int long long
int n,m,mod;
int pow1(int a,int b){int i1;while(b){if(b1) ii*a%mod;b1;aa*a%mod;}return i;
}
signed main(){cinnm;mod20100403;int retn1-m;for(int in1;inm;i) retret*i%mod;int ckn1;for(int i1;im;i) ckck*i%mod;ckpow1(ck,mod-2);coutck*ret%mod;
}