数学
文章平均质量分 58
未水
这个作者很懒,什么都没留下…
展开
-
POJ 3301 三分
题意是用“一个”正方形覆盖所有的点想象如果正方形不能旋转,所需要的边长是这些的最上与最下点的距离,和,最左与最右点的距离,的较大者当正方形能旋转时,我们只需要把坐标轴旋转,求出旋转后的坐标,再按正方形不能旋转的方式求边长#include #include #include #include #include #include #include #include #inc原创 2013-06-07 18:22:14 · 704 阅读 · 0 评论 -
HDU 3579 中国剩余定理 不互质的情况
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long longll ext_gcd(ll a,ll b,ll &x,ll &y){原创 2013-07-03 15:42:46 · 1229 阅读 · 0 评论 -
hdu1695 容斥原理
抄来的代码,第一次搞容斥原理。原问题转化为 gcd(x,y)=k -> gcd(x/k,y/k)=1,两者互质的问题首先联想到欧拉函数,它是互质问题计数的工具,但它只能解决(x,y) 中x但现在范围不一样,就要用到容斥原理求出超出范围那些部分当(x,y)中x>y,要一个一个用容斥原理求【b+1,d】中每个数的质因数能否整除【1,b】中的数,那些不能的就是互质的区间中与i不互质的原创 2013-07-02 19:48:41 · 637 阅读 · 0 评论 -
POJ 1166 高斯消元 疑惑的思考
不知道为什么消元的时候没选择绝对值最大的那一列就不会wa了可能是刚好避开了数据吧觉得可能刚好选择到每个a(i,i)=1 ,a(i,i)=3 (即a(i,i)=2 时就会出错)的那一行已知p是素数时,模p剩余系里每个除0以外的元素都有唯一的逆。模4时,由于4不是素数,所以不会有唯一的逆,比如2就没有逆当在消元化简到 ax=b(mod 4) 我们枚举x=0,1,2,3可能都原创 2013-06-06 22:08:59 · 884 阅读 · 0 评论 -
POJ 2065 高斯消元+线性模方程
消元过程为保持整数用最小公倍数。回代过程用线性模方程计算过程注意保持模n下的非负数。#include #include #include #include #include #include #include #include #include #include using namespace std;int p,n;char s[1000];int a[10原创 2013-06-06 16:47:46 · 819 阅读 · 0 评论 -
uva 11427 数学-概率
#include #include #include using namespace std;double d[305][350];int main (){ int ncase;scanf("%d",&ncase); for(int kk=1;kk<=ncase;++kk) { int a,b,n; scanf("%d/%d%原创 2013-07-20 15:29:17 · 791 阅读 · 0 评论 -
hdu4686 矩阵快速幂 多校第九场
递推关系求第n项,n很大时明显应该想到矩阵的,比赛时推公式,太挫了#include #include #include #include #include #include using namespace std;#define ll long long#define mod 1000000007#define size 5ll n,a0,ax,ay,b0,bx,by;l原创 2013-08-21 10:19:51 · 1135 阅读 · 0 评论 -
hdu 4658 整数划分+五边形定理 多校第六场
首先要知道五边形定理是什么东西它揭示了整数划分的母函数是欧拉函数的倒数,欧拉函数可以通过级数表示P(x)*phi(x)=1 -> p(n)-p(n-1)-p(n-2)+p(n-5)+p(n-7)......=0#include #include #include using namespace std;#define N 100000#define mod 1000原创 2013-08-10 07:12:46 · 1573 阅读 · 0 评论 -
hdu 4652 经典概率题+公式推导
#include #include #include #include #include #include #include using namespace std;typedef complex dcomp;dcomp s[1000040];int main (){ int T;scanf("%d",&T); while(T--) {原创 2013-08-11 16:39:00 · 1102 阅读 · 0 评论 -
hdu4675 多校第七场 计数+去重
先算出d的倍数有多少个sequence假设a[i]中不能整除d的个数有x个,这x个数一定要替换的,假如x>k,这时答案必然为0,假如xm以内是d的倍数有m/d个,把这x个数替换掉有pow(m/d,x)种可能,按题意还有k-x个数要替换,就从n-x个中选出k-x个数,C(n-x,k-x)然后用d的倍数中除了它自身的数替换它(注意这k-x个数是d的倍数),pow(m/d-1,k-x)原创 2013-08-14 14:39:48 · 1036 阅读 · 0 评论 -
hdu1402 大数相乘 快速傅里叶变换FFT
FFT入门题,FFT模板#include #include #include #include #include #include using namespace std;#define N 50500*2const double PI=acos(-1.0);struct Vir{ double re,im; Vir(double _re=0.,doub原创 2013-10-11 11:08:50 · 6977 阅读 · 0 评论 -
hdu4609 FFT+计数 经典
用FFT并去重可以算出任意拿出两个不同的木头a,b,长度为a+b=i的方案数cnt[i]木头长度作为指数,对应的木头数量为值,构造多项式,相当于两个多项式相乘这个过程把拿出两个相同的木头a和a的情况也算进去了,所以要减去,取出a和b,与取出b和a相同,要除以2枚举第三边,假如按算a+b>c的方案数这种思维,要去重,比如把b+c>a,a+c>b,a+b>a也算进去了,很麻烦不如枚举第原创 2013-10-11 18:54:10 · 3022 阅读 · 1 评论 -
hdu4059 容斥原理的好题
1.首先要知道4次方求和的公式2.注意求和公式中有除以30应该乘以30的逆3.容斥原理即 原来的所有和 - 1个质因数的倍数 + 2个质因数的倍数 - 3个质因数的倍数 + 4个质因数的倍数……每个质因数的贡献就是getsum(n/link[i]) * four(link[i]),比如质因数是2时,就是 (1^4+2^4+3^4+4^4......+(n/2)^4) * (2原创 2013-07-04 16:34:37 · 1151 阅读 · 0 评论 -
poj 3101 大整数最小公倍数+欧几里得
#include #include #include #include #include using namespace std;#define ll long long#define N 1000#define M 10000int t[N+5];int c[M+5];int res[M+5];int n;int prime[M],vis[M],cnt;int gcd原创 2013-03-11 05:19:12 · 1349 阅读 · 0 评论 -
poj 2417 离散对数模方程+哈希
事实又证明map慢死啦,慢了不知道多少倍#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long long#define mod 1000原创 2013-07-10 22:36:18 · 748 阅读 · 0 评论 -
poj 1905 二分
#include #include #include #include #include #include using namespace std;#define eps 1e-12#define PI acos(-1.0)bool equal(double a,double b){ return fabs(a-b)<eps;}int main (){ doubl原创 2013-03-11 18:32:51 · 645 阅读 · 0 评论 -
poj 3270 置换群
置换群好题一枚2种决策:取循环内最小的数参与循环的置换,循环内有n个元素,进行n-1次;取循环外最小的数进来参与循环的置换,再交换回去#include #include #include #include #include #include #include #include #include using namespace std;#define N 1050原创 2013-06-02 12:36:24 · 771 阅读 · 0 评论 -
poj 2154 polya 计数
操作时旋转,很简单。关键在于计数要避免超时。算sum(N^(gcd(i,N)))/N , 1d=gcd(i,N),枚举i很慢,转换思维,枚举d,算出这个d对应有多少个i,d的可能取值就是所有 d | Ni=d*x,N=d*y, 要让x和y互质,1互质问题,整除问题最终归结为phi事实证明long long 很慢,能不用尽量不用对于直接枚举质因数的话,用l原创 2013-07-13 17:00:17 · 624 阅读 · 0 评论 -
POJ 1487 高斯消元+模拟……坑爹题~好题
wa了整天,变换着姿势终于找到错了。。1.模拟过程,字符串的处理,字符串里包含数字,()括号,字母,数字注意是负数,会坑你爹的一开始注意到了负数,以为处理了,但是没处理好,没有在读取整个负数后才乘以-1,所以错了2.高斯消元过程,出现undefined是因为出现了 a=a 这样的式子,也就是有自由变量注意一个变量a的undefined可能导致另一变量b的undefined,只要b的原创 2013-06-04 20:02:32 · 968 阅读 · 0 评论 -
POJ 2947 高斯消元--判断一解多解无解
又是偷来的代码,但是第一道高斯消元,纪念下知道每条式子的结果取模后的值,求方程组,这不同于一般的高斯消元,而且答案必须为整数并在一定区间内1.由于是整数要用到gcd;2.解的判断:有解的情况都是必须满足row一下全为0一解:化简后是严格的三角矩阵多解:自由变量个数较少无解:row以下有非0的#include #include #include #inclu原创 2013-04-23 18:11:13 · 3638 阅读 · 0 评论 -
zoj 3725 DP排列
DP计数,有限制性条件下的计数无法直接推公式,一般含有重复,无法完全吻合这时选择dp,调用前面算出的结果 (two[i-m-1]-dp[i-m-1])用的妙!#include #include #include using namespace std;#define ll long long#define mod 1000000007#define N 100500原创 2013-07-16 20:05:53 · 981 阅读 · 0 评论 -
POJ 3150 矩阵快速幂
抄的代码。看不出矩阵快速幂,2B。。注意到这是种变换,每次都是n个元素在变来变去,数据范围很大,这应该反应到时矩阵根据大神指示,用O(n)复杂度存储空间,由于 A[i][j]=A[i-1][j-1] O(log(k) * n ^ 2)据说可以用傅里叶变换,更快,没试#include #include #include #include #include #in原创 2013-06-03 18:58:41 · 701 阅读 · 0 评论 -
POJ 2891 中国剩余定理
除数不会两两互质,不能套用中国余数定理~只能不断利用线性模方程把两个式子合并#include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long longll ext_gcd(l原创 2013-04-10 22:03:56 · 648 阅读 · 0 评论 -
POJ 2115 线性模方程
#include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long long ll A,B,C,k,a,b;ll ext_gcd(ll a,ll n,ll &x,ll &y){ if(原创 2013-04-10 20:30:22 · 569 阅读 · 0 评论 -
poj 1286 polya
gcd里的类型一定要long long,至今想不明白,不然会一直WA#include #include #include #include #include using namespace std;#define ll long longll p[100];ll gcd(ll a,ll b){ if(b==0) return a; else gcd(b,a%原创 2013-03-22 14:07:03 · 569 阅读 · 0 评论 -
poj 2409 简单polya
两种操作:1.沿着中心旋转,总共s个,转过i个,循环个数是s*i/lcm(s,i) = gcd(i,s)2.沿着轴翻转,注意本身在操作中不变的元素会对循环个数有贡献#include #include #include #include #include #include #include #include #include #include #include #i原创 2013-07-12 18:28:45 · 649 阅读 · 0 评论 -
zoj 3638 经典容斥原理
有n种物品,要取m种出来,如果每种物品的数量没有限制,答案为C(m,m+n-1)---多重集的计数1.现在限制,某种物品大于x,解决方法是,m-=x 后 又按原来的方法解决2.限制 ,物品a1小于x1,a2小于x2,……转化为容斥问题容斥原理附上两种写法#include #include #include using namespace std;#define原创 2013-07-13 19:53:37 · 1258 阅读 · 0 评论