这道题目数据有坑,白浪费一个小时! 题意:求\(\sum_{i=1}^n\sum_{j=1}^n{|i-j|+k \choose k}\) 知识点: 朱世杰恒等式,\(\sum_{i=r}^n{i \choose r}={n+1 \choose r+1},r<n\) 题解:首先去除式子中的绝对值,考虑对称性还有i=j时的重复,原式可转化为\(2\sum_{i=1}^n\sum_{j=i}^n{j-i+k \choose k}-n\) 对式子内部循环调用一遍朱世杰恒等式\(\sum_{j=i}^n…
题目大意 Codeforces 841C Leha and Function. 令\(F(n,k)\)为在集合\(\{x|x \in [1,n]\}\)中选择一个大小为k的子集,最小元素的期望值. 给定数组\(a_i,b_i\),满足\(\forall_{i,j}a_i \geqslant b_j\).求出\(a_i\)的一个排列\(a'_i\),使得\(\sum_{i} F(a_i,b_i)\)最大. 朱世杰恒等式 在这里介绍一个非常有用的关于组合数求和的公式--朱世杰恒等式(i.e. Hoc…
重来重来,刚刚就当什么都没发生 今天的题属实有些迷惑,各种意义上…总之都很有难度吧.不满归不满,这套题的确不是什么没有意义的题目. 为了考验自己的学习能力记忆力,决定不写题解,扔个代码完事了 其实是懒得写一大堆式子的推理以及想表示一下对出题人的敬意 你就不怕你到时候回来看一脸懵逼吗 T1: #include<iostream> #include<cstdio> using namespace std; ,mod1=; long long n; int main() { scanf(…
一.高中数学公式复习 , (好吧这个没学过但是既然看到了就一并抄过来了) 二.快速求组合数取模C(n, m)%p 当n和p大小不同时方法有不同. 1. n很小,p随意,p不需要为素数 1) 原理 使用杨辉三角: 组合数C(n, m)其实就是杨辉三角第n行第m列的值(下标从0开始算的话).每一行的各个值都是迭代上一行的结果.那么用二维数组打个表即可,for里套个for. 2) 我的模板 typedef long long lld; const int maxn = 1000+10; lld C_a…
循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6539    Accepted Submission(s): 2524 Problem Description   我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如,如果代码中出现for(i=1;i<=n;i++) OP ;那么做了n次OP运算,如…
https://www.codechef.com/JAN17 Cats and Dogs 签到题 #include<cstdio> int min(int a,int b){return a<b?a:b;} int main(){ int T,a,b,c; for(scanf("%d",&T);T;--T){ scanf("%d%d%d",&a,&b,&c); puts(c%==&&c/<=a+…
D. Anton and School - 2 time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output As you probably know, Anton goes to school. One of the school subjects that Anton studies is Bracketology. On the Br…
最近做了不少的组合数的题这里简单总结一下下 1.n,m很大p很小 且p为素数p要1e7以下的 可以接受On的时间和空间然后预处理阶乘 Lucas定理来做以下是代码 /*Hdu3037 Saving Beans*/ #include<cstdio> #include<cstring> #include<iostream> #define ll long long #define maxn 1000010 using namespace std; ll T,n,m,p,f[…
Anton and School - 2 题解: 枚举每个左括号作为必选的. 那么方案数就应该是下面的 1 , 然后不断化简, 通过范德蒙恒等式 , 可以将其化为一个组合数. 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdou…
http://codeforces.com/problemset/problem/1081/C 题意:有n个排成一行板块,有m种颜色,要让这些板块有k对相邻板块不同颜色,有多少种涂色方法? 比如样例2,3块板,2种颜色,1对不同.有4种涂法. 1.黄+绿+绿 2.黄+黄+绿 3.绿+黄+黄 4.绿+绿+黄 为什么是相邻不同?百度翻译讲得含糊其辞.从样例可以推断出来如果第1种情况中,第一个黄 越过第二个绿 直接与第三个绿构成一种情况,则样例不成立. 解题: dp[i][j]表示长度为i的板块中有j…
洛谷P2822 数学真重要啊…… 其实解这一题的关键就是组合恒等式:C(n,m)=C(n-1,m)+C(n-1,m-1),然后再知道组合数的矩阵(杨辉三角)和题中n,m的关系就很容易解决了(然而做这题之前我并不知道组合恒等式于是杯具了) 由上文提到的几何恒等式,我们可以将组合数打成如下矩阵(C(i,j)行数代表i,列数代表j(均从0开始)) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ……………… 接下来我们来看要求的结论:求所有的0≤i≤n,0≤j≤min(i,m)中有多少对(…
引入: 组合数C(m,n)表示在m个不同的元素中取出n个元素(不要求有序),产生的方案数.定义式:C(m,n)=m!/(n!*(m-n)!)(并不会使用LaTex QAQ). 根据题目中对组合数的需要,有不同的计算方法. (1)在模k的意义下求出C(i,j)(1≤j≤i≤n)共n2 (数量级)个组合数: 运用一个数学上的组合恒等式(OI中称之为杨辉三角):C(m,n)=C(m-1,n-1)+C(m-1,n). 证明: 1.直接将组合数化为定义式暴力通分再合并.过程略. 2.运用组合数的含义:设m…
Atcoder 题面传送门 & 洛谷题面传送门 无穷级数求和的简单题,稍微写写吧,正好也算帮我回忆下组合数这一块的内容. 首先我们不妨假设 A 赢,B 赢的情况就直接镜像一下即可.我们枚举 B 在 A 赢之前赢了多少局,设为 \(j\),由于题目规定只要有人赢的局数到达 \(n\) 就停止,因此最后一场比赛必须是 A 赢,而前面相当于在 \(n-1+j\) 个场次中选择 \(n-1\) 场留给 A 赢,剩余留给 B 赢,方案数 \(\dbinom{n-1+j}{n-1}\),而 A 赢 \(n\…
Task 1 \(\mathcal{Prob:}\) \((3x - 2y)^{18}\) 的展开式中, \(x^5y^{13}\) 的系数是什么?\(x^8y^9\) 的系数是什么? \(\mathcal{Sol:}\) 由二项式定理可得:\(x^5y^{13}\) 的系数为 \(-\binom {18} {5} \times 3^5 \times 2^{13}\),没有 \(x^8y^9\) 这一项. Task 2 \(\mathcal{Prob:}\) 用二项式定理证明:\(3^n = {…
CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analyse: 很有趣的一道数论题! 看了下网上别人的做法,什么Kummer定理我还真没听说过,仔细研究一下那个鬼定理真是涨姿势了! 然而这题我并不是用Kummer那货搞的(what?). 其实这题真的很简单(不要打我),为什么这样说呢?看了下面的解释你就知道我没骗你. 首先我们看一下这个式子:LCM(C(n,0…
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490[Submit][Status][Discuss] Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密.接下来M行,代表图中的每条边.接下来K行,每行两个整数L…
背景很简单,就是从给定的m个不同的元素中选出n个,输出所有的组合情况! 例如:从1到m的自然数中,选择n(n<=m)个数,有多少种选择的组合,将其输出! 本方案的代码实现逻辑是比较成熟的方案: * 一个bit位(boolean)一维数组中,初始化全为0(false), 然后给左边的n个位初始化为1(true). * <> 从左向右找第一个10的位置,将10换位程01,然后将这个01左边的所有的1全都移位到数组的最左边,此时得到的1所在位置下标对应序列即为一个组合数. * <>…
Day2 T1 题目大意 告诉你组合数公式,其中n!=1*2*3*4*5*...*n:意思是从n个物体取出m个物体的方案数 现给定n.m.k,问在所有i(1<=i<=n),所有j(1<=j<=min(i,m))的(i,j)满足Cji是k的倍数的个数. 输入样例: 2 5 (两个数,第一个数t表示该数据有t组询问,第二个为k,接下来t行分别为n,m) 4 5 6 7 输出样例: 0 7 数据范围:1<=n,m<=2000,1<=t<=10000,1<=k…
本文将介绍如何使用gtest进行单元测试. gtest是google单元测试框架.使用非常方便. 首先,下载gtest (有些google项目包含gtest,如 protobuf),复制目录即可使用. http://code.google.com/p/googletest/ 如果被墙,就百度搜下,很多. 解压 gtest.zip, 得到gtest.1.x.x目录. export GTEST_HOME=该目录 编译: cd $GTEST_HOME/makemake 运行示例程序, 熟悉 gtest…
题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开. 输出格式: 输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果. 输入输出样例 输入样例#1: 1 1 3 1 2 输出样例#1: 3 说明 [数据范围] 对于30% 的数据,有 0 ≤k ≤10 : 对于50% 的…
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算组合数的一般公式: 其中n! = 1 × 2 × · · · × n 小葱想知道如果给定n,m和k,对于所有的0 <= i <= n,0 <= j <= min(i,m)有多少对 (i,j)满足是k的倍数. 输入输出格式 输入格式: 第一行有两个整数t,k,其中t代表该测试点总共有多少…
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(ll l,ll r,ll &x,ll &y) { if(r==0){x=1;y=0;return l;} else { ll d=exgcd(r,l%r,y,x); y-=l/r*x; return d; } } 3.求a关于m的乘法逆元 ll mod_inverse(ll a,ll m){ l…
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 95  Solved: 33[Submit][Status][Discuss] Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提升.它有三个参数n,k.它会 向编号为0到k的位置发射威力为C(n,…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目描述 组合数 CmnCnm 表示的是从 nn 个物品中选出 mm 个物品的方案数.举个例子,从 (1,2,3)(1,2,3) 三个物品中选择两个物品可以有 (1,2),(1,3),(2,3)(1,2),(1,3),(2,3) 这三种选择方法.根据组合数的…
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1)  , 此时较简单,在O(n2)可承受的情况下组合数的计算可以直接用杨辉三角递推,边做加法边取模. (2) ,   ,并且是素数 本文针对该取值范围较大又不太大的情况(2)进行讨论. 这个问题可以使用Lucas定理,定理描述: 其中 这样将组合数的求解分解为小问题的乘积,下面考虑计算C(ni, mi) %p. 已知C(n, m) mod p = n!/(m!(…
考虑放1个,2个....的情况,相加就是最后的结果 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 const int INF=0x3f3f3f3…
看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是1/0 #include<bits/stdc++.h> #define ll long long #define N 400005 using namespace std; inline int read(){ ,f=;char ch=getchar(); ;ch=getchar();} *x+c…
从(1,1)到(n,m),每次向右或向下走一步,,不能经过(x,y),求走的方案数取模.可以经过(x,y)则相当于m+n步里面选n步必须向下走,方案数为 C((m−1)+(n−1),n−1) 再考虑其中经过(x,y)的方案数,也就是(1,1)到(x,y)的方案乘上(x,y)到(n,m)的方案,为 C((x−1)+(y−1),x−1)×C((n−x)+(m−y),n−x) 于是答案就是下式取模 C(m+n−2,n−1)−C(x+y−2,x−1)×C(n−x+m−y,n−x) m和n大到10的五次方…
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51196 紫书P320; 题意:给定n个数a1,a2····an,依次求出相邻两个数值和,将得到一个新数列,重复上述操作,最后结果将变为一个数,问这个数除以m的余数与那些数无关?例如n=3,m=2时,第一次得到a1+a2,a2+a3,在求和得到a1+2*a2+a3,它除以2的余数和a2无关.1=<n<=10^5, 2=<m<=10^9 其实就是杨辉三角的某一行有…
题目:传送门. 题意:t组数据,每组给定n,m,k.有n个格子,m种颜色,要求把每个格子涂上颜色且正好适用k种颜色且相邻的格子颜色不同,求一共有多少种方案,结果对1e9+7取余. 题解: 首先可以将m 与后面的讨论分离.从m 种颜色中取出k 种颜色涂色,取色部分有C(m, k) 种情况: 然后通过尝试可以发现,第一个有k种选择,第二个因不能与第一个相同,只有(k-1) 种选择,第三个也只需与第二个不同,也有(k-1) 种选择.总的情况数为k ×(k-1)^(n-1).但这仅保证了相邻颜色不同,总…