
数学
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
codeforces 698F 数学
题意:构造一个1到n的排列a1,a2,......ana_1 , a_2 , ......a_n 满足对于任意i,j满足1<=i<j<=n1<=i<j<=n ai,aja_i,a_j 互质当且仅当i,j互质。a中一些元素已知,求可以构造的排列个数。对于两个质数p1,p2,如果有这两个质数因子的数的个数相等(既n/p1=n/p2)那么可以将所有数的质因子中出现的这两个质数交换。如果两个数包含相同的质因原创 2016-08-24 15:39:05 · 1346 阅读 · 0 评论 -
bzoj 4174 tty的求助 数论 莫比乌斯反演
题意:求∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋\sum_{n=1}^N \sum_{m=1}^M \sum_{k=0}^{m-1}\lfloor \frac{nk+x}{m}\rfloor先膜PoPoQQQ大爷。∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋\sum_{n=1}^N \sum_{m=1}^M \sum_{k=0}^{m-1}\lfloor \frac{nk+x}{m}\r原创 2016-09-18 15:40:45 · 423 阅读 · 0 评论 -
bzoj 2797 [Poi2012]Squarks set 数学
把n*(n-1)/2个数从小到大排序,最小的和次小一定是x1+x2和x1+x3。x2+x3一定在第三个到第n个之间。并且不能确定x2+x3和x1+xi的大小关系。那么枚举x2+x3就可以计算x1,x2,x3。然后去掉x1+x2,x1+x3,x2+x3后最小的就是x1+x4。这样可以求出x4。同理去掉x4和x1,x2,x3的和后最小的是x1+x5。以此类推。这个东西可以用set维护#include <原创 2016-11-15 14:37:17 · 410 阅读 · 0 评论 -
bzoj 4294 [PA2015]Fibonacci 数学
斐波那契取模10x10^x的循环节是6∗10x6*10^x(别问我怎么证。。。) 求第x项取模可以矩乘。 因此可以深搜枚举每一位然后验证减枝。#include <bits/stdc++.h>using namespace std;#define ull unsigned long longchar s[21];int n;ull ten[21],v,mod;ull mul(ull x原创 2016-11-17 18:36:24 · 489 阅读 · 0 评论 -
bzoj 2790 [Poi2012]Distance 数学
设d[i]为i的质因子个数(相同算多个)。那么i和j的答案就是d[a[i]gcd(a[i],a[j])]+d[a[j]gcd(a[i],a[j])]d[\frac{a[i]}{gcd(a[i],a[j])}]+d[\frac{a[j]}{gcd(a[i],a[j])}] 然后枚举gcd,对于有当前枚举的gcd的因子的数,维护这些数d[a[i]gcd]d[\frac{a[i]}{gcd}] 的最小值原创 2016-11-14 15:39:42 · 324 阅读 · 0 评论 -
bzoj 4002 [JLOI2015]有意义的字符串 数学
构造数列an=(b+d√2)n+(b−d√2)na_n=(\frac{b+\sqrt{d}}{2})^n+(\frac{b-\sqrt{d}}{2})^n xn+yn=(xn−1+yn−1)∗(x+y)−(xn−2+yn−2)∗xyx^n+y^n=(x^{n-1}+y^{n-1})*(x+y)-(x^{n-2}+y^{n-2})*xy 因此an=b∗an−1+d−b∗b4an−2a_n=b*a_原创 2016-10-31 13:47:05 · 667 阅读 · 0 评论 -
bzoj 2445 最大团 CRT 组合数取模
题意太迷。。。 其实就是求n个点symmetric labeled cliquer的个数,然后取一个m次幂。 答案就是m∑x|nn!(x!)nx(nx!)m^{\sum_{x|n}\frac{n!}{(x!)^{\frac{n}{x}}(\frac{n}{x}!)}}把mod-1分解质因数,把这个数分别取模mod-1的因子,然后用CRT合并。不过这个东西不是组合数,不能用lucas。可以先预处理原创 2016-10-20 09:00:38 · 708 阅读 · 0 评论 -
bzoj 1951 古代猪文 CRT lucas定理
答案是:G(∑k|NCNkN)%(mod−1)%modG^{(\sum_{k|N}{C_N^{\frac{N}{k}}})\%(mod-1)}\%mod然后上面的东西lucas然后CRT合并就行了。 一开始写了个礼物,然后TLE#include <bits/stdc++.h>using namespace std;#define mod 999911659#define N 41000#d原创 2016-10-18 20:12:52 · 264 阅读 · 0 评论 -
bzoj 1407 exgcd
枚举m,exgcd验证 复杂度不对,不知道为什么能过。。。#include <bits/stdc++.h>using namespace std;#define ll long longint n,mx;int c[21],p[21],l[21];void exgcd(int &x,int &y,int &d,int a,int b){ if(b==0){x=1;y=0;d=a原创 2016-10-18 16:29:31 · 286 阅读 · 0 评论 -
bzoj 3129 [Sdoi2013]方程 数论 容斥
对于>=>= 的条件从答案中直接减去。 对于<=<= 的条件容斥转成 >=>= 注意是正整数要转成非负,然后直接跑礼物就行啦。#include <bits/stdc++.h>using namespace std;#define ll long long#define PA pair<int,int> int T,p,n,n1,n2,m;int ans,num;int pm[11],原创 2016-10-24 21:03:01 · 303 阅读 · 0 评论 -
bzoj 2800 [Poi2012]Leveling Ground 数学
先把这个东西差分,那么就从一段区间加减变成了一个点加,另一个点减。然后把所有数和a,b都除gcd(a,b)然后每个点可以表示为d[i]=x[i]∗a+y[i]∗bd[i]=x[i]*a+y[i]*b用exgcd求ax+by=1的一组解。那么一个点的次数可以表示为:|x∗d[i]+k∗b|+|y∗d[i]+k∗a||x*d[i]+k*b|+|y*d[i]+k*a|两个绝对值一次函数套在一起是一个单峰函原创 2016-10-24 08:17:43 · 462 阅读 · 0 评论 -
bzoj 2759 一个动态树好题 LCT 数学
果然是一道动态树好题。 《论LCT的正确使用方法》以及《出题人真会玩》系列把每个点向p连一条边,那么这是一个基环树森林。 先从环上拆下来一条边并记录这条边指向的点,然后这玩意就变成了一坨有根树。 设根为x1,根指向的点为x2,那么所有点都可以用关于x2的一次函数表示。然后用x2本身的一次函数可以解出x2。 然后用LCT维护这坨有根树。 splay上每个点维护用这个点子树中最小(最靠左,原树原创 2016-12-26 11:27:25 · 552 阅读 · 0 评论