Math
文章平均质量分 67
Masamiiiii
这个作者很懒,什么都没留下…
展开
-
Codeforces 698C LRU 概率+状压
题意:有一个箱子最多装k件物品,现在有n件物品,第i件物品被询问的概率为pi,当第i件物品被询问时,如果第i件物品不在箱子里面,则把第i件物品加入到箱子中,若箱子物品数量>k,则移除最早添加进来的物品.问10^100次查询后,每个物品在箱子中的概率? n,k询问10^100次,物品最多只有20个,所以可以说箱子最后肯定有k个物品问题转化为求最后状态为S的概率,初始时抽到k种不同原创 2017-08-07 15:38:39 · 442 阅读 · 0 评论 -
codeforces 735D Taxes 哥德巴赫猜想
点击打开链接n不是素数时 &&拆分时不是素数 n是偶数&&n>2 则答案(n的最大因子)>=2 n是奇数,答案(最大因子)>=3若拆分成素数 哥德巴赫猜想 :大于2的偶数能拆分成两个质数之和 所以答案最小能取到2n为奇数时,n-3为偶数(n-3能拆成两个素数之和,3为素数) 所以奇数的答案奇数能否为两个素数之和? 因为n为奇数所以拆分的两个素数k,n-k一个为奇数一个原创 2016-11-28 12:14:11 · 448 阅读 · 0 评论 -
poj 3734 Blocks 递推+矩阵幂优化
点击打开链接题意 n块block 可以涂上 R,B,G,Y 求n块涂色中 R,G颜色个数为偶数的方法数?涂到第i块时:设ai RG都为偶数的方案数. bi RG恰好一个为偶数的方案数. ci:RG都为奇数的方案数容易得到递推关系为 a[i+1]=2ai+bi b[i+1]=2ai+2bi+2ci c[i+1]=bi+2ci发现n(a[i+1],b[i+1],c[i+1原创 2016-11-28 00:05:55 · 331 阅读 · 0 评论 -
poj 3233 Matrix Power Series 矩阵构造+快速幂
点击打开链接要求A+A2+...+Ak,而不是单个矩阵的幂即求A(E+A+..A^k-1) 可以不断乘以K次A那么我们可以构造一个分块的辅助矩阵 S,其中 A 为原矩阵,E 为单位矩阵,O 为0矩阵即 S=[A,E] 容易用归纳得到S^k=[A^k,A^k-1+A^k-2+...A+E] [0 ,E][0,E]#include #include原创 2016-11-24 15:30:54 · 333 阅读 · 0 评论 -
poj 3070 Fibonacci 矩阵快速幂
点击打开链接题意求:F[n]%mod n由矩阵乘法得到F[i]第n项为矩阵[[1,1] [1,0]]的n次幂的a[1][2]项,利用快速求出矩阵即可得到F[n]#include #include #include #include #include using namespace std;typedef long long ll;const int mod=1e4;原创 2016-11-22 18:37:05 · 238 阅读 · 0 评论 -
codeforces 621E Wet Shack and blocks dp+矩阵幂优化!
点击打开链接题意 每块有n个数字,选b次 求最后组成的数%x==k的方法数 dp[i][j]:i位数字,余数为j,cnt[i] digit i出现次数 dp[i][(j*10+r)%x]+=dp[i][j]*cnt[r] 总共有b位数字 b 矩阵aij为添加一位数字后 余数由i变为j的方法数 矩阵A为x*x方阵 定义矩阵c为A*A 则cij=sigma(aik*ak原创 2016-12-03 00:15:14 · 320 阅读 · 0 评论 -
uva Crossing Rivers 简单期望
点击打开链接过任意一条河的时间t: v/l所以过任意一条河的时间的期望为: 2v/l在岸上时间是参数为D-l #include #include #include #include using namespace std;const int N=1e3+20;struct node{ double p,l,v; // pos,len,speed}b[N];原创 2016-12-02 22:51:42 · 265 阅读 · 0 评论 -
hdu 5563 five-pointed star(几何)
点击打开链接题意:给出5个点问是否能组成5角星5角星的5个顶点和正5边形的5个定点一一对应,即判断这5个点是否能组成正5边形(C(5,2)=10条边中是否 5个边相同 5条对角线相同即可)#include #include #include #include #include #include using namespace std;typedef long long原创 2016-12-10 11:29:17 · 331 阅读 · 0 评论 -
(a,b)=1 ax+by x>0 y>0的最大不能表示数
不能表示为 形如 x*a+y*b x>=0 ,y>=0 的最大的整数是 a*b-a-b 只用考虑a>1,b>1 的情形证明: 1 首先证明,关于x,y的不定方程: x*a+y*b=a*b-a-b 无非负整数解反设这个方程有解,变形一下,x*a+(y+1)*b=a*b-a ,则推出a|(y+1)*b (|是整除符号),那么由于(a,b)=1 ,推出, a|y+1 ,由于y+1!=原创 2016-11-17 21:41:20 · 1578 阅读 · 0 评论 -
uva 1648 Business Center 数学+二分
点击打开链接 pu+q(-d)=ans>1&&ans尽量小 //D=gcd(u,d) D|ans 则枚举ans,logn 判断ans是否满p+q=n ,pu+q(-d)=ans//二分求出p即可 总的时间复杂度O(mlog(n)log(n))#include #include #include using namespace std;typedef long long原创 2016-11-14 19:17:01 · 439 阅读 · 0 评论 -
uva 10837 A Research problem 欧拉函数+暴力
点击打开链接m=phi(n)=p1^a1-1(p1-1).....pn^an-1(pn-1)n中的所有素因子p必须满足m%(p-1)==0这一条件。因此可以事先将所有这样的素数找出来,然后在这些素数的基础上进行暴力搜索#include #include #include #include #include #include using namespace std;co原创 2016-11-13 22:52:21 · 398 阅读 · 0 评论 -
hdu 5833 Zhu and 772002 高斯消元
点击打开链接题意:给出n个数 要求选出若干个数,求使得乘积为平方数的方法数已知每个数的素因子不超过2e3 最后的乘积可以看作,所有素因子幂次方的乘积 因为乘积为平方数,所以每个素因子的幂都应该mod2=0 素因子的幂由每个数是否选决定 设x为是否选该数,x取(0|1)所以能得到maxp+1个方程,偶数贡献为0,每个变量系数取0,1 mod2=0等价于xor=0方程原创 2016-11-29 13:40:55 · 238 阅读 · 0 评论 -
uva 11526 H(n)(公式优化)
点击打开链接求s=n+n/1+n/2+....n/(n-1)+n/n;nn=20 s=20+10+6+4+4+3+2+2+2+2+1+1+1+1+1+1+1+1+1+1因为下取整原因 许多项都会相同 把相同项乘起来以后,跳着加 时间复杂度i从小到大 若第一次n/i=t 则当前i为满足(下取整)n/i=t的最小i n/i=t.Bi增加&&n/i=t(下取整) n/i=t.B原创 2016-10-31 21:32:52 · 319 阅读 · 0 评论 -
hdu 5646 Partition数学+构造
点击打开链接//把n拆分成不同k个数之和 使得k个数乘积最大//因为C=A+B A+2AB //推出k个数为连续的 或者为连续两段中间差2,构造这k个数即可 #include #include #include #include #include using namespace std;typedef long long ll;const ll mod=1e9+原创 2016-10-29 10:19:35 · 627 阅读 · 0 评论 -
hdu 1023Catalan出栈方案+大数
点击打开链接Catalan//入栈顺序递增1...n 求出栈方式有多少种//对编号1进行分类 编号1为出栈序列的第k个元素//则方案为f(k-1)*f(n-k) k从1累加到n,母函数求递推公式得到 f[n]=f(n-1)*(4n-2)/(n+1) #include #include #include #include #include #include原创 2016-10-19 12:09:48 · 356 阅读 · 0 评论 -
uva 11181 Probability|Given 条件概率
点击打开链接//求在r个人买东西的情况下 第i个人买东西的概率//p(Ei|E)=p(EiE)/p(E) //枚举r个人买东西的情况 利用全概率 算出P(E) //n=4 r=2例如P(E2E)=P(1100)+P(0110)+P(0101) //P(EiE) 画个维恩图就知道了->P(EiE)为状态不同E中a[i]=1的累加和 //即全概率中对E进行划分-> P(Ei原创 2016-10-19 11:06:12 · 309 阅读 · 0 评论 -
FZU 2020 组合数取模(Lucas定理模版)
点击打开链接Lucas定理证明点击打开链接#include #include #include #include #include #include using namespace std;typedef long long ll;const int N=1e5+20;ll quick_mod(ll a,ll b,ll p){ ll res=1; while原创 2016-10-18 18:46:15 · 381 阅读 · 0 评论 -
codeforces 735C Tennis Championship 思维+递推
点击打开链接题意:两个人能比赛要求胜场差转换一下思维 令f[x]为冠军赢x场比赛时最少的参赛人数,则f[x]=f[x-1]+f[x-2] (让赢x-1场的去赢x-2场的) 输入n 二分找到n>=f[x]的最大x即可 #include #include #include #include typedef long long ll;using namespace std;原创 2016-11-28 12:53:41 · 708 阅读 · 0 评论 -
Codeforces 454C Little Pony and Expected Maximum 简单期望
点击打开链接题意:给你一个m面的色子,投n次,求出最大点数的期望值先求最大值为i的概率=pi=E/S S=m^n最大值为i:n次都小于等于i中-i一次都没出现 i^n-(i-1)^n 幂n#include using namespace std;typedef long long ll;const int N=2e5+20;double p[N];//p[i]:n次原创 2017-01-04 10:53:20 · 424 阅读 · 0 评论 -
Codeforces 236C LCM Challenge 数论(基础题)
点击打开链接题意:找到三个数LCM=(a*b*c)/(d1*d2) d1为gcd(a,b) d2为gcd(ab/d1,c) nn>3:分以下两种情况若n为奇数: n-1为偶数与n,n-1都互质&&gcd(n,n-2)=1(n为奇数) 设d|n&&d|n-2 则d|2 d所以三个数两两互质 直接相乘就能得到最大的LCM若n为偶数 可得一个LCM k1=(n-1)(n-2原创 2017-01-16 15:23:15 · 455 阅读 · 0 评论 -
Codeforces 696C PLEASE 概率(推公式)
题意:3个杯子,中间杯子放着炸弹.每一轮从左/右选一个杯子和中间杯子交换(等概率).问n轮后,中间杯子有炸弹的概率? n=a[1]*a[2]..a[k] k第i轮要想在中间则第i-1轮一定不能再中间 所以设dp[i]:i轮后在中间的概率.dp[i]=(1-dp[i-1])*0.5 a[i]因为最后答案要写成分数形式p/q.发现q每次都增大2.dp[i]=(1-dp[i-原创 2017-08-06 12:10:23 · 495 阅读 · 0 评论 -
Codeforces 821E Okabe and El Psy Kongroo 递推+矩阵幂
点击打开链接题意:n条直线(a[i],b[i],c[i]) 表示在x=a[i]~b[i]内 运动的高度0a[i]=b[i-1],a[1]=0,a[n]n(k,0)的方法数?设f[x][y] 从(0,0)到点(x,y)的方法数,f[x][y]=f[x-1][y]+f[x-1][y-1]+f[x-1][y+1] 注意转移状态时要合法,x>=0&&0x很大并且x每次都原创 2017-06-26 21:00:28 · 811 阅读 · 0 评论 -
POJ 2154 Color Polya定理+欧拉函数优化
点击打开链接Polya简介题意:n个珠子围成一圈,有n种颜色,旋转后相同的视为同一种方案.n旋转后相同视为同一种,用Polya定理来计数确定置换群,计算循环节个数,代入公式即可.本题置换群为旋转1.2...n格,置换i的循环节个数为gcd(n,i)由于n gcd(n/d,i/d)=1 即欧拉函数(n/d) #include #i原创 2017-06-18 21:20:50 · 552 阅读 · 0 评论 -
Codeforces 711E ZS and The Birthday Paradox 数论(Legendre's定理)
点击打开链接题意:一年有s=2^n天,有k个人 问至少有两个人生日在同一天的概率?(答案%mod)n,k算对立事件 任意两人生日都不同的概率 ( (2^n-1)*(2^n-2)*...*(2^n-(k-1)) ) /(2^(n*(k-1))n,k分子可以展开成A=f(p)*2^n+(k-1)! f(p)为某个多项式 则gcd2^i满足2^i|2^n && 2^i|原创 2017-06-17 21:37:15 · 411 阅读 · 0 评论 -
Codeforces 803F Coprime Subsequences DP+GCD
点击打开链接题意:n个数a[i],问有多少个子序列的gcd为1? (子序列下标不同就算不同) n,a[i]令dp[i]:gcd为i的子序列个数 i的倍数的子序列有2^c[i]-1个,这些子序列的gcd可能为(i,2i,3i...) 则gcd为i的子序列个数:dp[i]=2^(c[i])-dp[2i]-dp[3i]...#include using namespace st原创 2017-05-16 18:05:18 · 395 阅读 · 0 评论 -
Codeforces 451E Devu and Flowers 容斥原理暴力+Lucas定理
点击打开链接题意:n个box,n若盒子中花无限答案显然为 x1+x2+..xn=S 的解集个数C(n+S-1,n-1) (yi=xi+1,n+S个1,n+S-1个空隙中选n-1个)现在多了限制fi,若某个xi>fi 则方案数为C(n+S-fi-1,n-1) ,运用容斥扣掉至少有一个xi>fi的方案数nfi,用二进制数表示暴力表示2^n种情况,大组合数取模用了Lucas定理C(n,m)%原创 2017-04-28 14:08:35 · 368 阅读 · 0 评论 -
Atcoder Beginner 057 D Maximum Average Sets 数学+思维
点击打开链接题意:n件物品,可以选a~b件,求平均值最大是多少和方法数? n固定的k=a~b ave=sum/k ave要大 sum要最大 选最大的k个 1/k*segma(vi) i=0~k-1 - 1/(k+1) segma(vi) i=0~k >=0所以选A个时的平均值最大;e.g a=2,b=4 a[i]={20,20,20,20,10} 方法数为11原创 2017-04-01 21:56:14 · 717 阅读 · 0 评论 -
Codeforces 300C Beautiful Numbers 组合数取模+暴力
点击打开链接题意:长度为n的数字,n暴力枚举:如果包含了x个a 则b有n-x个,若数字之和也合法,则该方案有C(n,x)种取法,累加即可.mod为素数,组合数取模求逆元时用到费马小定理 a^(p-1)≡1(mod p)#include using namespace std;typedef long long ll;const int N=2e6+20;const原创 2017-03-06 20:28:38 · 305 阅读 · 0 评论 -
hdu 1028 母函数入门题
点击打开链接题意:给出n n(1+x^2+x^3+..x^n) *(1+x^2+x^4+x^6+...) *(1+x^3+x^6+...) 第i个表达式代表了数i的选法:1代表不选i,1后的第j项(x^(ji))表示选j个i,求x^n的系数即可#include using namespace std;typedef long long ll;const int N=2e3+20原创 2017-02-01 22:14:43 · 369 阅读 · 0 评论 -
Codeforces 340C Tourist Problem 数学+DP
点击打开链接题意:固定起点是0,给出一个序列表示n个点,所有点都在一条直线上,其中每个元素代表了从起点到这个点所走的距离。已知路过某个点不算到达这个点,则从起点出发,到达所有点的方案有许多种。求所有方案走的总路程/方案数,输出分子、分母,要求不含约数容易得到方案数为n!,n求总的路程和,考虑边的出现次数:(0,ak)(n-1)! ,多少条路径包含边(u,v) 从(n-1)个位置原创 2017-02-21 14:45:38 · 416 阅读 · 0 评论 -
POJ 2096 Collecting Bugs 概率DP(期望)
点击打开链接题意:n种病毒,s个系统 每次能在某个系统下发现某个病毒,求发现n种病毒&&每个系统至少发现一个病毒所需要的期望次数? 令d[i][j]表示当前发现了i种病毒&&发现j个系统中至少有一个病毒时,离目标(n,s)所需要的期望次数然后根据E(aA+bB+cC+dD+...)=aEA+bEB+....;//a,b,c,d...表示概率,A,B,C...表示状态原创 2017-02-20 17:35:31 · 364 阅读 · 0 评论 -
Codeforces 257C View Angle 几何(角度)
点击打开链接题意:给出n个点坐标 n因为角度要尽量小,则必然有两个相邻的点落在边界上,分别枚举两个相邻的点作为边界,因为相邻,所以中间无其它点 剩下的角度360-d包含了剩下所有的点. #include using namespace std;const int N=2e5+30;const double eps=1e-6;const double pi=acos(-1原创 2017-02-28 15:00:15 · 339 阅读 · 0 评论 -
hihoCoder 1151 骨牌覆盖 递推+矩阵幂
点击打开链接题意:3*n棋盘 用1*2骨牌覆盖 用方法数 ?(n最后一列有三个 每格是否被覆盖,转换成8种状态设矩阵M[i][j] 增加一列后,最后一列的状态从i->j的方法数 (使得前面列都填满)A[i][j]前0列最后一行为i->j的方法数 则最后答案为A*(M^n) :A[7][7]#include using namespace std;typedef lon原创 2017-02-19 11:50:57 · 385 阅读 · 0 评论 -
UVA 861 Little Bishops 组合数学
点击打开链接题意:n*n board,对角线棋子相互攻击,问放k个棋子的合法方案首先想到黑白棋盘根据(i+j)的奇偶性上色,容易得出白色区域不会攻击黑色区域则在白色区域中放i个 黑色区域中放k-i个 如何转化成同行同列相互攻击?将棋盘顺时针旋转45°则攻击方式则由对角45°变为垂直和水平,之后dp求解即可 #include using namespace std;t原创 2017-02-18 17:00:49 · 366 阅读 · 0 评论 -
hihoCoder 1142 三分求极值
点击打开链接三分法介绍 在区间内用两个mid将区间分成三份,这样的查找算法称为三分查找,也就是三分法,三分法常用于求解单峰函数的最值。 二分法适用于单调函数,而单峰函数用二分明显不太好了,对于有些单峰函数,可以求导后转化为单调函数,从而使用二分,然而很多情况求导是很麻烦的,这时就需要用到三分了题意:给出抛物线y=ax^2+bx+c 和点(x,y原创 2017-02-18 11:20:27 · 497 阅读 · 1 评论 -
Codeforces 385C Bear and Prime Numbers 筛法
点击打开链接题意:n个数,m次询问,每次询问给出[li,ri],S[li,ri]为li~ri的素数,f(p) ai满足p|ai的个数,问segma(p∈S[li,ri]) f(p)的值?n接下来只要快速求出 f[li~ri]的和,利用前缀和即可 #include using namespace std;typedef long long ll;const int N=原创 2017-02-07 16:15:22 · 352 阅读 · 0 评论 -
hdu 2204 容斥原理
点击打开链接以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776题目:求出1-N里面能表示 成M^K的数有多少个求A^B在//如果A^B在i>=1)//因为2^60>1e18所以 B不超过60另外B考虑质因子,如果A^4在范围内的话,肯定(2*A)^2也在范围内,没有必要重复考虑原创 2016-10-27 21:19:19 · 310 阅读 · 0 评论 -
uva 11105 Semi-Prime H-number 筛法
点击打开链接#include #include #include #include #include using namespace std;typedef long long ll;const int N=1e6+1;const ll inf=1<<30;vector h;int vis[N];ll pri[N];int main(){ int n;原创 2016-11-08 15:56:17 · 279 阅读 · 0 评论 -
UVA 12716 GCD XOR (数论,规律)
点击打开链接//因为二进制异或和减法当做0,1时为1(但减法需要借位!)(0,0)(1,0)(1,1)等价 所以a-b//c=gcd(a,b) a-b=(p-q)c 得到a-b>=c //所以可以推出 c=a-b;//当c=a-b时 gcd(a,b)=gcd(kc,(k-1)c)=c//枚举a c 得b=a-c判断 a^b是否等于c即可 #include #in原创 2016-10-11 21:59:57 · 408 阅读 · 0 评论 -
hdu 2669 exgcd(水)
点击打开链接#include #include #include using namespace std;const int M=1e5+20;long x,y;long gcd(long a,long b){ if(a%b==0) return b; else { return gcd(b,a%b); }}void extgcd(long a,long b)原创 2016-09-26 18:58:07 · 398 阅读 · 0 评论