ACM-组合数学
文章平均质量分 68
但求-_-心安
充满鲜花的世界到底在那里,如果他真的存在那么我一定会去。
展开
-
欧拉函数模板
简单点:原理:int eular(int n){ int ret=1,i; for(i=2;i*i { if(n%i==0) { n/=i,ret*=i-1; while(n%i==0) n/=i,ret*=i; } } if(n>原创 2016-10-08 21:24:24 · 280 阅读 · 0 评论 -
poj 1286 Necklace of Beads
对应题目的翻转问题,分奇偶讨论。奇数时,如题图右,对称轴是一个珠子到圆心的连线,一共n条。选定对称轴后,对称轴上的一个珠子构成一个循环,其他n-1个珠子分别以对称轴对称构成(n-1)/2个循环,所以循环节的个数是 1 + (n – 1) / 2 = (n + 1) / 2 。偶数时,如题图左,对称轴可能是两个珠子的连线,一共 n / 2条。选定对称轴后,对称轴上的两个珠子构成两个循环,其他原创 2017-04-14 16:41:01 · 294 阅读 · 0 评论 -
poj 1026 Cipher(置换群)
先找到循环节,再用m对循环节的长度取模即可.#include#include#include#include#include#includeusing namespace std;const int N=205;int a[N],b[N][N],v[N],num[N]= {0};int main(){ int n; while(~scanf("%d",&n)原创 2017-04-16 16:08:20 · 301 阅读 · 0 评论 -
POJ 2154 Color Polya(Polya定理+欧拉函数)
题意:将正n边形的n个顶点用n种颜色染色,问有多少种方案(答案mod p,且可由旋转互相得到的算一种) #include #include #include #define ll long longusing namespace std;#define maxn 55555int prime[maxn];bool vis[maxn];int N=0,mod;voi原创 2017-08-02 19:54:34 · 302 阅读 · 0 评论 -
hdu 6143 Killer Names(容斥原理)
枚举要为这两段分配的颜色数目分别为 i,ji,j ,则在第一段总共有 (mi)(mi) 种选取方案,在第二段总共有 (m−ij)(m−ij) 种选取方案。而在每段内部,我们设 F(n,x)F(n,x) 为长度为 nn 的格子使用 xx 种颜色(等于 xx )染色的方案数。则根据容斥原理F(n,x)=xn−(m1)(x−1)n+(m2)(x−2)n−(m3)(x−3)n+...F(n原创 2017-08-17 18:34:34 · 565 阅读 · 2 评论 -
hdu 6114 Chess
这个题很容易看出规律,就是求c(n,m),if(n用的模板#include#include #include #include #include #include #include #include #include #include #include #include using namespace std;long原创 2017-08-14 09:50:04 · 347 阅读 · 0 评论 -
hdu 6108 小C的倍数问题
找出规律,n-1所有的因子都符合规律,上模板#include#include#include#include#includeusing namespace std;const int maxn= 1e5+10;bool visit[maxn]= {0};int N=0;int prime[maxn];void init(){ for(int i=2; i<max原创 2017-08-14 09:52:52 · 315 阅读 · 0 评论 -
hdu 6129 Just do it(杨辉三角)
按照我也推了一下,没看出杨辉三角,我把偶数个的a,b都整合为0,。。。然后找规律找了半天,然而。。。。是我菜了。这是一个斜的杨辉三角根据他给的公式C(n,m)=C(n,m-1)+C(n-1,m)看出是一个斜的杨辉三角,以第一个数A为例,同样很显然,我们第i行,第j列的答案,其系数为C(i+j-2,j-1)。如果C(i+j-2,j-1)为奇数,第j列肯定会亦或上a,j+1原创 2017-08-16 09:26:41 · 219 阅读 · 0 评论 -
Codeforces Round #439 (Div. 2)C. The Intriguing Obsession (组合数详解)
首先题意:是如果两个相同颜色的桥能相互到达他们之间的最短距离至少为3。我们去想所有的桥两两组合数量的乘积就是答案。很难证明,因为我不会证明,但是那实际的例子画一画,能发现他的正确性。乘积不会有错误的情况出现,而且能包含所有情况。下面就是两两组合的数量应该怎么算,令xdp[x-1][y-1],所以dp[x-1][y-1]*y,如果第x个小球不放入盒子中。下一步就是dp[x-1][y]。所以状原创 2017-10-07 13:55:11 · 309 阅读 · 0 评论 -
2014年山东省第五届ACM大学生程序设计竞赛Hearthstone II(容斥原理)
奇加偶减。a[m][i]是杨辉三角,也就是组合数,公式ans+=a[m][i]*i^n*op#include using namespace std;int mod=1e9+7;int a[105][105];int main(){ a[1][1]=1; a[1][0]=1; for(int i=2;i<=100;i++) {原创 2018-04-20 16:16:31 · 154 阅读 · 0 评论 -
“浪潮杯”山东省第八届ACM大学生程序设计竞赛fireworks (组合数)
坑的一笔,用lucas生成组合数,老是错,后来看别人都用逆元生成,就用了逆元,发现逆元确实快的惊人。还是没认真思考复杂度,看到lucas就想套模板,根本没去想复杂度。#include using namespace std;const int maxn = 1e5+7;int mod = 1e9+7;typedef unsigned long long LL;LL jie[11000原创 2018-04-24 20:40:23 · 308 阅读 · 0 评论 -
poj 1942 Paths on a Grid
这是一个简单的高中数学题用计算机算出他的实际数字#include#include#includeusing namespace std;double comp(unsigned n,unsigned m){ unsigned a=m+n; unsigned b=(m<n?m:n); double cnm=1.0; while(b>0)原创 2017-02-03 22:17:33 · 271 阅读 · 0 评论 -
poj Number Sequence
Number Sequence (排列组合)Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%lld & %lluSubmit StatusDescriptionA single positive integer i is given. Write a program to f原创 2016-09-27 12:08:11 · 460 阅读 · 0 评论 -
小兔的棋盘 (卡特兰数)
#include #include #include #include using namespace std; long long h[45]; long long f[45][45]; void catalan2() //卡特兰数:第二种求法 { int i, j; for(i = 1; i <= 36; i++)原创 2016-10-11 15:09:57 · 440 阅读 · 0 评论 -
数学小结
学习了一个多周的数论和组合数学,脑子好乱的一片,不知道自己到底学了些什么。总结下来,让自己理清头绪,也为了自己以后忘了回头看看好看到自己学了什么。也希望能帮助那些刚开始学习数论的同学。说实话从百度百科上看了好长时间才看懂下面这些。组合数学:1.组合公式:C(M,N)=C(M-1,N-1)+C(M-1,N);打表代码://a[n][m]表示C(n,m),最后打出a[n][m]原创 2016-10-11 18:15:07 · 523 阅读 · 0 评论 -
容斥原理
转自于:http://www.cppblog.com/vici/archive/2011/09/05/155103.html这篇文章发表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄语的。由于文章确实很实用,而且鉴于国内俄文资料翻译的匮乏,我下决心将其翻译之。由于俄语对我来说如同乱码,而用Google直接翻译中文的话又变得面目转载 2016-10-25 10:33:00 · 679 阅读 · 0 评论 -
hdu 2048 神、上帝和老天爷
神、上帝和老天爷 (错位排列)Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionHDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽原创 2016-09-28 16:33:18 · 507 阅读 · 0 评论 -
poj 1306 Combinations
正在学Java 第一次用Java做题好兴奋啊认识了Java中的大数用法,其实我预习预习应该自己懂这些函数的也熟悉下Java提交的套路参考了网址https://xuanwo.org/2014/07/18/POJ-1306-Combinations/CombinationsTime Limit:1000MS Memory Limit:10000KB原创 2016-09-28 17:07:10 · 914 阅读 · 0 评论 -
HDU 4135 Co-prime
#include #include #include using namespace std;long long prime[70];int m;long long ans(long long n){ long long sum=0; long long len=1m; for(int i=1;ilen;i++)//神来之笔,就是和bfs一样的二进制的做法原创 2016-10-25 17:51:02 · 326 阅读 · 0 评论 -
HDU 2841 Visible Trees (容斥原理好题)
Visible Trees Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionThere are many trees forming a m * n grid, the grid starts from原创 2016-09-29 20:59:42 · 446 阅读 · 1 评论 -
poj 3641 Pseudoprime numbers 快速幂算法
poj 3641 Pseudoprime numbers 快速幂算法原创 2016-10-08 17:26:24 · 359 阅读 · 0 评论 -
POJ 5690 All X
Sample Input31 3 5 21 3 5 13 5 99 69 Sample OutputCase #1:NoCase #2:YesCase #3:YesHint对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。 Source原创 2016-10-08 18:01:48 · 302 阅读 · 0 评论 -
poj 1850 Code
看的大神的好长时间看懂了,把题解放这里方便以后看 小優YoU csdn 博客第一步当然首先判断输入的str是否是升序序列 若符合第一步,则首先计算比str长度少的所有字符串个数假设str为 vwxyz ,则其长度为5那么 然后就是关键了,长度为2的字符串,根据开头字母不同,就有25种不同情况,编程去处理是很困难的。这里原创 2017-02-03 17:27:44 · 315 阅读 · 0 评论 -
2017山东省第八届ACM省赛 D. HEX(组合数学)
思路:可以算出从(1,1)到(x,y)最多走tot= x-1步,最多向左下走l = x-y步,向右下走r = tot - l步,向下走一步相当于走1步左下,1步右下。则向下走的步数最多为m = min(l,r)步。枚举向下走的步数i,则向左下走l-i步,向右下走r - i步。那么不同的走法就是向下走,向左下和向右下走的全排列,即 (i + l - i + r - i)!/ (i! * (l - i...原创 2018-04-25 20:46:55 · 343 阅读 · 0 评论