数学
文章平均质量分 71
enmity_dark
这个作者很懒,什么都没留下…
展开
-
[卢卡斯定理+中国剩余定理] hdu 5446 Unknown Treasure
题意:给你N,M,K,求C(N,M)对K个素数的乘积取模的结果。思路:因为每个素数都不超过10^5,所以我们可以用lucas求出对于每个素数的答案然后再用中国剩余定理求最后的答案。这里要注意的就是中国剩余定理中会爆long long 所以需要用快速乘法。代码:#include#include#include#include#include#include#i原创 2015-09-15 15:05:05 · 479 阅读 · 0 评论 -
[离散对数] uva 11916 Emoogle Grid
题意:在一个M*N的矩阵内涂K种颜色。其中有B个格子不能涂色,并且每个单元格不能和上面的那个单元格颜色一样。已知N和总共的结果R,求最少满足的行M。数据都对100,000,007.取模。思路:由于输入的不能涂色的点的X坐标一定在M以内。所以就记录一下maxX把整个矩阵分成3个部分。第一个部分是maxX*N.这部分的答案可以算出来看是否满足。第二个部分是(maxX原创 2015-03-26 20:44:21 · 740 阅读 · 0 评论 -
[整数分解+dfs] light oj 1341 Aladdin and the Flying Carpet
题意:给定两个数a、b.问有多少组x、y满足b思路:由于数比较大了,所以循环找约数的办法就会超时了。那么其实每个整数都可以分解为几个素数的幂相乘,所以我们就用分解素因子的方法分解整数。接着用这些素因子dfs判断就好了。加上一些剪枝就OK了。代码:#include"cstdio"#include"cstring"#include"cmath"#include"cst原创 2015-03-26 18:44:48 · 798 阅读 · 0 评论 -
[欧拉函数] uva 11426 GCD - Extreme (II)
题意:求1~n之间两两gcd的和,gcd(a,b)和gcd(b,a)算一个。思路:设gcd(x,n)=i的x的个数为g(n,i),则g(n,i)=phi(n/i)。phi(x)为x的欧拉函数值。注:这里x所以采用打表的方法ans[i]=ans[i-1]+g[i]g[i]为1~i之间的数与i的gcd之和。而求g[i]的方法就需要用筛选法了代码:#inclu原创 2015-03-26 19:27:01 · 545 阅读 · 0 评论 -
[整数分解+dfs] light oj 1220 Mysterious Bacteria
题意:给一个x,问让它被表示成b^p(b的p次方)。p最大是多少。思路:将x分解,得到质因子以及个数。我们知道x是每个质因子幂的乘积,所以要使得p最大,就是幂最大。最大其实就是这些质因子个数的最大公约数。因为超过的就变成乘积放进去。然后要注意这题输入的x可能是负数。负数的话要去掉2的约数。代码:#include"cstdio"#include"cstrin原创 2015-03-26 19:15:42 · 1095 阅读 · 0 评论 -
[lcm本质] light oj 1236 Pairs Forming LCM
long long pairsFormLCM( int n ) { long long res = 0; for( int i = 1; i n; i++ ) for( int j = i; j n; j++ ) if( lcm(i, j) == n ) res++; // lcm means least common原创 2015-03-26 18:50:27 · 875 阅读 · 1 评论 -
关于组合数求法的简单记录
组合数 C(n,m) 从n个物品中取m个的方法数1、当n和m比较的小的时候可以使用杨辉三角对应的数直接计算int c[N][N];memset(c,0,sizeof(c));int i,j;for(i=0;i<=N;i++){ c[i][0]=c[i][i]=1; for(j=1;j<i;j++) c[i][j]=c[i-1][j-1]+c[原创 2014-11-08 17:22:15 · 1241 阅读 · 1 评论 -
[Lucas定理] hdu 3037 Saving Beans
Lucas 定理:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) For non-ne原创 2014-11-08 17:02:56 · 548 阅读 · 0 评论 -
[物理题+枚举] hdu 4445 Crazy Tank
题意:给你N个炮弹的发射速度,以及炮台高度H和L1,R1,L2,R2。问任选发射角度,最多能有几个炮弹在不打入L2~R2的情况下打入L1~R1注意:区间有可能重叠。思路:物理题,发现单纯的根据V去求X非常困难。这个时候想到暴力枚举角度,for(double i=0; i算出能到达的x,然后判断x,统计sum发现以增长级0.0007弧度 刚刚好能过这道题 反正也是原创 2014-10-20 18:33:38 · 862 阅读 · 0 评论 -
关于概率dp的个人理解与总结
首先,概率dp主要解决的是关于概率问题和期望问题的求解。原创 2014-08-07 19:31:21 · 4170 阅读 · 0 评论 -
[容斥原理] hdu 2204 Eddy's爱好
题意:中文题目!思路:首先 M^k可以分解成 (M^(k*p)) p是素数这么我们只要枚举素因子就好了由于数据 所以只要枚举60以内的素数就够了然后因为2*3*5*7就超过60了 做容斥原理就最多就只有三次代码:#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"原创 2014-11-06 00:22:54 · 759 阅读 · 0 评论 -
[容斥原理] hdu 1796 How many integers can you find
题意:给一个N,然后给M个数,问1~N-1里面有多少个数能被这M个数中一个或多个数整除。思路:首先要N--然后对于每个数M 其实1~N-1内能被其整除的 就是有(N-1)/M[i]个但是会出现重复 比如 样例 6就会被重复算 这时候我们就需要容斥原理了加上一个数的减去两个数的。。这里要注意了 两个数以上的时候 是求LCM而不是简单的相乘!代码:#includ原创 2014-11-06 00:16:29 · 1045 阅读 · 0 评论 -
[dp+组合数学] hihocoder 1075 开锁魔法III
题意:中文题~思路:首先需要处理的就是把所有的环找出来环的意思就是这个环里面只要有一个盒子被打开了,其他盒子就都被打开了。比如样例。就是有两个环(1,2,5) 和 (3,4)并记录环内盒子的总数。这样就转换成了这样的一个问题了。给n堆东西,每堆有ai个,问现在取k次,保证每堆至少取1个的方案数。然后总的方案数是C[n][k]。概率一除就好了。那么这个方案数怎么求原创 2015-03-30 12:15:34 · 1060 阅读 · 0 评论 -
[暴力统计] zoj 3868 GCD Expectation
题意:给n和k,求n个数的任意非空子集gcd的k次方的期望。最后期望乘上2^n-1思路:因为取每个子集都是等概率,所以取出每个子集的概率是1/(2^n-1)然而最后的答案是乘上2^n-1所以其实求的就是每个非空子集的gcd的k次方的和。然后就是求法了。我们可以把题目转换成求gcd等于i的非空集合有多少个。gcd从Max枚举到1,求出答案。对于每个i,设n个数原创 2015-04-13 11:42:53 · 958 阅读 · 0 评论 -
[思路题] hdu 5491 The Next
题意:找一个最小的比D大的且二进制数含有1的个数在 s1~s2 之间。保证输出的D的二进制数也在s1~s2之间思路:因为D符合题意,所以我们先考虑如果D%2==0,那么加个1会不会超过s2,不会的话 答案就是D+1那么如果会或者不是1,那么肯定D要发生进位了。因为要比D大,所以我们把D二进制最后一个1之前的第一个0变成1,这之后都为0然后从最后开始补1直到符合s1为止原创 2015-09-28 15:06:45 · 454 阅读 · 0 评论 -
[多校2015.02.1006 高斯消元] hdu 5305 Friends
题意:给你n个人m条关系每条关系包含a,b代表a和b可以是线上朋友也可以是线下朋友然后保证每个人的线上朋友数和线下朋友数相等问你有多少种组成方法思路:官方题解是爆搜+剪枝,然而并不会写。。比赛的时候想到用高斯消元来剪枝最后枚举自由元因为关系的话到了最后肯定有些关系是确定的。这样一定会消掉一些部分最后G++AC C++TLE。。代码:#incl原创 2015-07-24 14:54:15 · 581 阅读 · 0 评论 -
[思路题] cf 571A Lengthening Sticks
题意:给a,b,c问以a+x、b+y、c+z为三边且x+y+z思路:因为l为10^5,所以肯定是一遍过的枚举我们可以假设哪条边是最长的,然后去枚举长度。这时候我们要想到正难则反。我们计算出不能够成三角形的数量,再用总共的减去就好了。总共的话,我们假设x+y+z=n(0对于每个n,我们看成长度为n的尺子,每个刻度可以切2刀。所以就是(n+1)+n+(n-1)+..原创 2015-08-23 16:19:05 · 820 阅读 · 0 评论 -
[多校2015.01.1010 容斥+迭代] hdu 5297 Y sequence
题意:给你一个n和一个r,求Y序列的第N项是多少。所谓的Y序列就是,从1开始,去掉能表示成a^b(2例如r=2序列就是:2,3,5,6,7,8,10,11,12,13,14,15,17....思路:我们应该能想到需要一个函数fun(x) 求的是1~x内在Y序列里的数有多少个这个其实不难,我们可以运用容斥原理,通过63以内的素数进行计算,并且最多做三遍,因为2*3*5*7原创 2015-07-26 14:59:48 · 766 阅读 · 0 评论 -
[水+整数分解] poj 1365 Prime Land
题意:给2*n个数,输入的这些数构成 sum=(a[1]^b[1])*(a[2]^b[2])...其实就是整数分解完的数。然后让你输出分解sum-1的结果。从大到小。思路:就是输入麻烦点。注意题目说了1的时候要输出空行。代码:#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"原创 2015-04-28 20:24:34 · 706 阅读 · 0 评论 -
[水] poj 2739 Sum of Consecutive Prime Numbers
题意:给一个n,有多少种连续的素数和加起来等于n。思路:打素数表,然后直接暴力。代码:#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"#include"map"#include"原创 2015-04-28 21:39:48 · 615 阅读 · 0 评论 -
[水+数学] fzu oj 2193 So Hard and 2191 完美的数字
2193 So Hard题意:化简小数。思路:最多不超过9位,那么乘以10^9就好了。然后注意的就是加一下精度。代码:#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"#原创 2015-05-03 18:55:25 · 1008 阅读 · 3 评论 -
[exgcd] zzu oj 10402 C.机器人
题意:DescriptionDr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远。由于受软硬件设计所限,机器人卡尔只能定点跳远。若机器人站在(X,Y)位置,它可以原地蹦,但只可以在(X,Y),(X,-Y),(-X,Y),(-X,-Y),(Y,X),(Y,-X),(-Y,X),(-Y,-X)八个点跳来跳去。现在,Dr. Kong想在机器人卡尔身上设计一个计数器,记录它原创 2015-04-30 14:26:51 · 993 阅读 · 1 评论 -
[水+数学] zoj 3870 Team Formation
题意:给n个数,问从n个数中选出两个数构成二元组(a[i],a[j])且i不等j,并且(a[j],a[i])和 (a[i],a[j])算一组。求使得 a[i]亦或a[j]>max(a[i],a[j]) 的二元组个数。思路:bit[i]数组记录二进制最高位是i(就是最高位是第i位且是1)的数有多少个。遍历所有的数。默认遍历的数是a[i],a[j]中较大的那个。那么我们只要寻原创 2015-04-27 20:16:01 · 431 阅读 · 0 评论 -
[概率+水] light oj 1104 Birthday Paradox
题意:问一年有n天的话,至少有多少个人在一块,两个人相同生日的概率不超过0.5思路:概率水题,好像概率书上就有~代码:#include"stdio.h"#include"algorithm"#include"string.h"#include"iostream"#include"queue"#include"map"#include"string"#define原创 2015-04-29 15:19:14 · 580 阅读 · 0 评论 -
[思路题] upcoj 2219 A^X mod P
题意:题意很明白了。思路:一种很选的优化方式。运用预处理的两个数组进行O(1)的运算求出A^x (0f1数组构造A^0~A^(10^5),间隔为A。f2数组构造A^(10^5)~A^(10^10),间隔为A^(10^5)。这样对于任意的A^x就能表示成f2[x/(10^5)]*f1[x%(10^5)]。从而用空间换取时间。代码:#include"cstdl原创 2015-04-13 19:20:32 · 548 阅读 · 0 评论 -
[思路] hdu 4811 Ball
题意:有三种颜色的小球,每种颜色数量R,Y,B依次把球放到桌面上成一个序列,每次得分为这个球前面有多少种不同颜色的球+后面有多少种不同颜色的球问总得分的最大值思路:构造前面的球和后面的球先放好,剩下的就放中间了代码:#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"原创 2014-11-17 15:07:19 · 784 阅读 · 0 评论 -
[概率+对数优化] hdu 4465 Candy
题意:给两个盒子里面都有n个糖果,每次从第一个盒子里拿糖果的概率是p,另一个是1-p问当拿完一个盒子时,另一个盒子还有多少糖果的期望。其中有一点就是,当她打开盒子发现是空的时候 会去打开另一个盒子在同一天。思路:期望公式很好推:但是推完就会出现各种溢出问题所以要用对数优化代码:#include"cstdlib"#include"cstdio"#i原创 2014-10-30 12:07:23 · 810 阅读 · 0 评论 -
抽屉(鸽巢)定理小结
抽屉定理: “把多于kn个东西任意分放进n个空抽屉(k是正整数),那么一定有一个抽屉中放进了至少k+1个东西。”虽然这是废话,但是应用起来就相当不容易。原创 2014-08-01 12:39:13 · 886 阅读 · 0 评论 -
[高斯消元+枚举] poj 1288 Sly Number
题意与思路摘自:http://www.cppblog.com/menjitianya/archive/2014/06/08/207226.html题意:定义Sly Number为只有{0, 1, 2}三种数字的一维数组,对于两个Sly Number:A 和B的乘法操作如下:图1相乘后的取余操作如下:图2定义ONE为A[0] =原创 2014-07-27 11:12:10 · 705 阅读 · 0 评论 -
[高斯消元] poj 1830 开关问题
题意:给定N(N 题解:由于开关只有打开和关闭两种状态,所以对于每个开关的打开和关闭,组合一下总共有2^N种情况,枚举所有情况判可行性,对于这个数据量来说是不现实的,需要想办法优化。我们用X[i]来表示第i个开关的操作状态(1表示操作,0表示不操作)。第i个开关会被哪些开关影响是可以知道的(这个关系在输入的时候会给出),假设影响第i个开关的开关列表为L[i][0],原创 2014-07-26 13:40:43 · 857 阅读 · 0 评论 -
[高斯消元+拓展欧几里得] poj 2065 SETI
题意:(a1 * 10 + a2 * 11 + ... an * 1n) % P = C1(a1 * 20 + a2 * 21 + ... an * 2n) % P = C2(a1 * 30 + a2 * 31 + ... an * 3n) % P = C3....(a1 * n0 + a2 * n1 + ... an原创 2014-07-26 11:37:37 · 567 阅读 · 0 评论 -
[高斯消元必有解的浮点模板] hdu 3359 Kind of a Blur
题意:H * W (W,H 题解:将所有矩阵A的元素看成自变量,一共有H*W个变量,每个矩阵B的元素是由这些变量组合而成的,对于固定的B[i][j],曼哈顿距离在D以内的A[x][y]的系数为1,其它为0,这样就变成了求H*W个变量和H*W个方程的线性方程组,高斯消元求解。注意是N原创 2014-07-26 17:03:22 · 520 阅读 · 0 评论 -
[高斯消元模2模板] poj 1681 Painter's Problem
题意同poj 1222 这题问你要涂多少次,但是无解的情况。原创 2014-07-23 17:28:20 · 577 阅读 · 0 评论 -
[高斯消元] poj 1753 Flip Game
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"using namespace std;int equ,var;int a[17][17];int x[17];int n原创 2014-07-25 15:48:24 · 456 阅读 · 0 评论 -
[高斯消元] poj 1222 EXTENDED LIGHTS OUT
题目大意:给你一个5*6的矩阵,矩阵里每一个单元都有一个灯和一个开关,如果按下此开关,那么开关所在位置的那个灯和开关前后左右的灯的状态都会改变(即由亮到不亮或由不亮到亮)。给你一个初始的灯的状态,问怎样控制每一个开关使得所有的灯最后全部熄灭(此题保证有唯一解)。解题思路:高斯消元。很显然每个灯最多只需要按1下(因为按两下和没有按是一个效果)。我们可以定义30和未知数x0、x1.原创 2014-07-23 15:23:05 · 878 阅读 · 0 评论 -
[拓展欧几里得] poj 1061 青蛙的约会
首先基础介绍一下拓展欧几里得,所谓的拓展欧几里得就是原创 2014-07-22 10:23:29 · 550 阅读 · 0 评论 -
[欧几里得] hdu 4596 Yet another end of the world
题意:给出n组x,y,z。判断是否存在一个id使得id%x1∈(y1,z1),id%x2∈(y2,z2)。原创 2014-07-22 18:11:13 · 682 阅读 · 0 评论 -
[物理题] hdu 1155 Bungee Jumping
重力势能 ep=mgh, 弹性势能 et=0.5*k*原创 2014-07-22 19:07:41 · 610 阅读 · 0 评论 -
[高斯消元求期望] zjutoj 1423 地下迷宫
首先对地图节点重新标号。假设E[i]表示DK从i点开始走出迷宫的期望值。那么E[i]=(E[a1]+E[a2]+E[a3]+...+E[an])/n+1,其中a1...an是i的相邻节点。那么对于每一个DK可达的节点来说,都可以为它建立这样的一个方程。现在假设DK可达的点有N个,那么我们最终将会得到N元一次方程组。最后利用高斯消元解出E[No[S]]。其中S是DK的起点,No[S]是重标号后的起点原创 2014-07-27 17:58:12 · 1132 阅读 · 0 评论 -
关于高斯消元求期望的个人理解
看了一天的高斯消元求期望。但是貌似因为自己的概率论学的很差,所以总结了一套自己独特的原创 2014-07-29 18:50:59 · 1354 阅读 · 0 评论