CodeChef - COUNTREL Count Relations
题目链接
给你一个长为NNN的1,2,3,....N1,2,3,....N1,2,3,....N的序列,让你求出两种关系各个有多少可能;
R1R_1R1,由于x,yx,yx,y互不是子集,且交集为空。我们可以这样考虑:先对xxx进行分析,假定xxx中有XXX个元素,因为空集是所有集合的子集,所以显然xxx必不能不取且不能取满NNN个,那么当xxx有XXX个元素时,就有
C(NX)(1≤X≤n−1)C(_N^X)(1\leq X\leq n-1)C(NX)(1≤X≤n−1)种取值方案。
那么剩下的n−xn-xn−x个数字就要留给yyy,显然yyy集合中必然有元素,假定yyy中有YYY个元素,所以在当前情况下有
C(N−XY),(1≤Y≤n−X)C(_{N-X}^Y),(1\leq Y\leq n-X)C(N−XY),(1≤Y≤n−X)种取值.
那么综上所述,第一个问题的答案就有∑X=1N−1(C(NX)∗∑Y=1N−XC(N−XY))\sum_{X=1}^{N-1}(C(_N^X)*\sum_{Y=1}^{N-X}C(_{N-X}^Y))∑X=1N−1(C(NX)∗∑Y=1N−XC(N−XY)).
然后就是大力化简这个式子了。
先考虑∑Y=1N−XC(N−XY)\sum_{Y=1}^{N-X}C(_{N-X}^Y)∑Y=1N−XC(N−XY),由组合数的基本公式可知∑Y=0N−XC(N−XY)=2N−X\sum_{Y=0}^{N-X}C(_{N-X}^Y)=2^{N-X}∑Y=0N−XC(N−XY)=2N−X,那么∑Y=1N−XC(N−XY)=2N−x−1\sum_{Y=1}^{N-X}C(_{N-X}^Y)=2^{N-x}-1∑Y=1N−XC(N−XY)=2N−x−1;
那么上式可化简为
∑X=1N−1C(NX)∗(2N−X−1)=∑X=1N−1C(NX)∗2N−X−∑X=1N−1C(NX)\sum_{X=1}^{N-1}C(_N^X)*(2^{N-X}-1)
\\=\sum_{X=1}^{N-1}C(_N^X)*2^{N-X}-\sum_{X=1}^{N-1}C(_N^X)∑X=1N−1C(NX)∗(2N−X−1)=∑X=1N−1C(NX)∗2N−X−∑X=1N−1C(NX)
易知∑X=1N−1C(NX)=2N−2\sum_{X=1}^{N-1}C(_N^X)=2^N-2∑X=1N−1C(NX)=2N−2。
在考虑左半部分,由二项式定理可知∑i=0NC(Ni)aibN−i=(a+b)N\sum_{i=0}^{N}C(_N^i)a^ib^{N-i}=(a+b)^N∑i=0NC(Ni)aibN−i=(a+b)N
那么左半部分可化简为(1+2)N−CN02N−CNN20=3N−2N−1(1+2)^N-C_N^02^N-C_N^N2^0=3^N-2^N-1(1+2)N−CN02N−CNN20=3N−2N−1
即原式可化简为3N−2N−1−2N+2=3N−2N+1+13^N-2^N-1-2^N+2=3^N-2^{N+1}+13N−2N−1−2N+2=3N−2N+1+1,由于x,yx,yx,y无序,所以除二即为第一部分最后答案。
第二部分:要求x,yx,yx,y有交集,那么我们可以先设交集的长度为iii,那么剩下的部分就是x,yx,yx,y个站一些不空且不相交的部分,那么显然答案就是
∑i=1N−2∑j=1n−i−1C(N−ij)∑k=1N−i−jC(N−i−jk)\sum_{i=1}^{N-2}\sum_{j=1}^{n-i-1}C(_{N-i}^j)\sum_{k=1}^{N-i-j}C(_{N-i-j}^k)∑i=1N−2∑j=1n−i−1C(N−ij)∑k=1N−i−jC(N−i−jk).
化简和上面一样,多用几次二项式定理就行了。
化简出来就是4N−3N+1−1+3∗2N4^N-3^{N+1}-1+3*2^N4N−3N+1−1+3∗2N,同样答案除以2即可。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mp make_pair
#define pb push_back
using namespace std;
LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
const int N = 2e5 +11;
const int mod=100000007;
LL Inv[N],Fac[N];
void P(){
Fac[0]=1;
for(int i=1;i<N;i++)Fac[i]=Fac[i-1]*i%mod;
Inv[N-1]=powmod(Fac[N-1],mod-2,mod);
for(int i=N-2;i>=0;i--)Inv[i]=Inv[i+1]*(i+1)%mod;
}
LL get(int l,int r){
return Fac[l]*Inv[r]%mod*Inv[l-r]%mod;
}
LL n;
int main(){
ios::sync_with_stdio(false);
// P();
int t;
for(cin>>t;t;t--){
cin>>n;
cout<<(powmod(3,n,mod)-powmod(2,n+1,mod)%mod+1+2*mod)%mod*powmod(2,mod-2,mod)%mod<<' ';
cout<<(powmod(4,n,mod)-powmod(3,n+1,mod)-1+3*powmod(2,n,mod)%mod+2*mod)%mod*powmod(2,mod-2,mod)%mod<<endl;
}
return 0;
}
CodeChef - COUNTREL Count Relations的更多相关文章
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
- poj 1094 Sorting It All Out(图论)
http://poj.org/problem?id=1094 这一题,看了个大牛的解题报告,思路变得非常的清晰: 1,先利用floyd_warshall算法求出图的传递闭包 2,再判断是不是存在唯一的 ...
- nodejs api 中文文档
文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可. Node.js v0.10.18 手册 & 文档 索引 | 在单一页面中浏览 | JSON格 ...
- CodeChef Count Substrings
Count Substrings Problem code: CSUB Submit All Submissions All submissions for this problem ar ...
- codechef Far Graphs
codechef Far Graphs https://www.codechef.com/problems/TBGRAPH 题意 : 给一个简单无向图,要求构造一个序列\(a\),长度为\(n\),极 ...
- Counting The Important Pairs CodeChef - TAPAIR
https://vjudge.net/problem/CodeChef-TAPAIR 合法的删除方法: 第一种:桥边与其余任意边(1)桥*(桥-1)/2(两条桥边)(2)桥*(m-桥)(桥边+其他边) ...
- 【CodeChef】Find a special connected block - CONNECT(斯坦纳树)
[CodeChef]Find a special connected block - CONNECT(斯坦纳树) 题面 Vjudge 题解 还是一样的套路题,把每个数字映射到\([0,K)\)的整数, ...
- C#中Length和Count的区别(个人观点)
这篇文章将会很短...短到比你的JJ还短,当然开玩笑了.网上有说过Length和count的区别,都是很含糊的,我没有发现有 文章说得比较透彻的,所以,虽然这篇文章很短,我还是希望能留在首页,听听大家 ...
- [PHP源码阅读]count函数
在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现. 我在gi ...
随机推荐
- Django入门之路
Web框架开发-Django基础之web应用,Http协议 web框架开发-web框架简介,wsgiref模块,DIY一个web框架 web框架开发-Django简介 web框架开发-静态文件配置 w ...
- 老白关于rac性能调优的建议(10gRAC)
RAC应用设计方面需要在底层做很有设计.虽然ORACLE的售前人员总是说RAC的扩展性是透明的,只要把应用分到不同的节点,就可以平滑的扩展系统能力了.而事实上,RAC的CACHE FUSION机制决定 ...
- Docker平台的基本使用方法
1.运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令 docker常用参数: run 运行 -i 以交互模式运行容器,通常与 -t 同时 ...
- 《css世界》笔记之流、元素与基本尺寸
1. 块级元素 基本特性:就是一个水平流上只能单独显示一个元素,多个块级元素则换行显示. 块级元素和"display 为block 的元素"不是一个概念,display:list- ...
- CSS有哪些引入方式,link和@import的区别
3种方式哦,行内样式.内部样式表.外部样式表 1. 行内样式又称为内联样式,直接在HTML标签的style属性中添加css. 会导致 HTML 代码变得冗长 2. 内部样式表又称为嵌入方式,是在HTM ...
- Python-包-65
包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警 ...
- nodejs部署方式-pm2
目前Nodejs开发中有很多痛点,其中有一个是修改完代码以后需要我们重启服务才能看到效果.这样一次次的杀进程.重启,杀进程.重启很让人头大.程序员是最痛恨重复工作的物种,之前有了解过的同学可能知道 f ...
- windows系统下的特殊目录导致的FileNotFoundException
环境:下面只有JDK(内含jre),没有外在的jre 读取的两个文件都是存在的,只是文件名不同 运行结果1 运行结果2 切换JDK 运行结果3: 运行结果4: 请留意:C:\windows\syste ...
- ajax基本原理与案例
一.什么是Ajax AJAX即“Asynchronous Javascript And XML”( 异步 JavaScript和XML),AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互 ...
- 高新兴 ME3630-W 4G 模块 Android 平台适配
2019-04-26 关键字:高新兴 ME3630-W 适配.rk3128 移植 4G 模块 本篇文章系笔者在移植 高新兴物联 ME3630-W 4G 模块到运行着 Android4.4 操作系统的 ...