数学
Hillan_
An OIer From ZJ
展开
-
NOI题库_微积分_NOI2001反正切函数的应用
对于那个式子,我们可以展开得到(a*b+a*c)=b*c-1 => b=(a*c+1)/(c-a) => b+c=(c*c+1)/(c-a)很显然 a不等于c那么我们可以构造一个函数 f(c)=b+c=(c*c+1)/(c-a), 要求极值 ,那么我们可以先求导, f(x)的导数g(x)=c*c-2*a*c-1因为极值出的导数为零,那么就相当于是一个一元二次方程.此时c=原创 2015-11-05 17:25:24 · 983 阅读 · 1 评论 -
BZOJ3512: DZY Loves Math IV
关于欧拉函数 (我就当我学会了杜教筛 传送门: http://duxyz.github.io/solution/2014/04/03/DZY-Loves-Math-4/好神啊!!#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>u原创 2016-03-17 11:15:57 · 1133 阅读 · 0 评论 -
BZOJ3309: DZY Loves Math
推G(x)的时候好神啊!!!题解:http://blog.csdn.net/popoqqq/article/details/42122413#include<cstdio>#include<iostream>using namespace std;#define ll long longchar c;inline void read(int&a){ a=0;do c=getcha原创 2016-03-17 11:49:30 · 485 阅读 · 0 评论 -
BZOJ3739: DZY loves math VIII
莫比乌斯反演 可以推出来 不会Markdown。。。。http://www.cnblogs.com/clrs97/p/5063707.html#include<cstdio>#include<iostream>#define ll long longchar c;inline void read(ll&a){ a=0;do c=getchar();while(c<'0'||c>'原创 2016-03-17 20:22:11 · 647 阅读 · 0 评论 -
BZOJ3667: Rabin-Miller算法
应用但是不知道为什么我的素数测试出错几率很大?#include#include#include#includeusing namespace std;#define ll long longll n,m;ll lowbit(ll x){return x&-x;}const int maxn=5000000;bool check[50000001];int prime原创 2016-02-19 17:09:41 · 584 阅读 · 0 评论 -
BZOJ3716: [PA2014]Muzeum
一开始是懵逼的 因为不知道最大闭合子图能贪心 这个贪心是源于这个图的性质为了方便计算我们需要吧每个守卫的视角做成直角 且两边平行于xy轴 然后根据y降序排序依次将守卫插入并将每个的手办贡献减一下就好了 实在不理解看代码#include<cstdio>#include<algorithm>#include<iostream>#include<set>#include<queue>#原创 2016-02-21 10:51:52 · 822 阅读 · 0 评论 -
BZOJ3884: 上帝与集合的正确用法
好神的一道欧拉函数。。 根据欧拉定理讲Mod展开为2k2^k与j 这里 Mod=2k+jMod=2^k+j 然后加上欧拉定理就可以了#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<cstdlib>using namespace std;char c;inline void rea原创 2016-03-31 20:05:52 · 532 阅读 · 0 评论 -
BZOJ3944: Sum
杜教筛 思想就是变换一下函数 杜教筛地址: http://blog.csdn.net/skywalkert/article/details/50500009 %%%%%唐教主#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define ll long原创 2016-03-21 08:13:22 · 933 阅读 · 0 评论 -
BZOJ2154: Crash的数字表格
讲道理这一题是可以做到O(n)预处理O(sqrt(n))询问的 然而我这么打了还是跑起来很慢。。。 最后的式子是 sigma(G=1,n) (Sigma(i=1,n/G) i ) * (Sigma(i=1,n/G) j ) * (Sigma(d|G)d * mu(G/d) * G * G / d / d) 然后我们把 (Sigma(d|G)d * mu(G/d) * G * G / d /原创 2016-03-10 13:38:59 · 336 阅读 · 0 评论 -
BZOJ2671: Calc
一开始把式子推到欧拉函数上去 半天之后才发现自己搞错了。。。重新推了一下发现就是莫比乌斯反演暴力可过。。。 主要就是把式子变形一下就好了#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define ll long longll n;const in原创 2016-04-03 18:32:57 · 505 阅读 · 0 评论 -
BZOJ2693: jzptab
沃日 昨天过了那个单次询问的。。。具体内幕我还是不说了 说多了都是泪 我居然是Rank1?#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define ll long longconst int maxn=10000011;const int Mod=100000009;l原创 2016-03-11 17:32:40 · 493 阅读 · 0 评论 -
BZOJ2226: [Spoj 5971] LCMSum
死推最后看了zky大爷的blog 常数垫底#include<cstdio>#include<iostream>#include<cmath>#include<cstring>using namespace std;#define ll long longchar c;inline void read(ll &a){a=0;do c=getchar();while(c<'0'||c>原创 2016-04-06 18:31:05 · 548 阅读 · 0 评论 -
BZOJ4402: Claris的剑
根据那个本质不同我们可以搞出一个构造方法使得该方法构造不重复且搞好是所求的我们设最大的数为T 那么需要有(n-T)的多余 那么就是相当于 (n-T)>>1 放入T个盒子中注意空盒也可以那么就有贡献为C(⌊t2 ⌋+T,T) 这里有一个关于求阶乘逆元的小技巧 先求出N!N!的逆元 那么(N−1)!(N-1)!的逆元就可以O(1)算了#include<cstdio>#include<iost原创 2016-04-06 20:34:23 · 546 阅读 · 0 评论 -
BZOJ2904: 平方和
根据拉格朗日四平方和定理 所以最大为4 1的话我们可以直接开一次方 2的话如果可以表示成形如x2+y2x^2 +y^2的形式输出2.这要求该数质因数分解后形如4k+34k+3的质因数次数都是偶数. 最后3和4的讨论如果该数可以表示成4n(8m+7)4n(8m+7)4^n(8m+7) 4^n(8m+7)输出4,否则输出3#include<cstdio>#include<iostream>#原创 2016-04-18 16:08:58 · 620 阅读 · 0 评论 -
SPOJ DIVCNT2
题目链接: http://www.spoj.com/problems/DIVCNT2/根据rzz的课件 可以分三段做度教搞出来一种分一次做的方法 看起来很神的样子#include<cstdio>#include<iostream>#include<vector>#include<cstring>#include<cstdlib>#include<algorithm>#include<原创 2016-11-16 16:19:20 · 867 阅读 · 0 评论 -
51Nod 1220 约数之和&&PE439
∂(i)∂(i)表示i的约数和 ∑ni=1∑nj=1∂(ij)∑_{i=1}^{n}∑_{j=1}^{n}∂(ij) =∑ni=1∑nj=1∑w|i∑v/jwv∗∑d|w,d|(i/v)u(d)=∑_{i=1}^{n}∑_{j=1}^{n}∑_{w|i}∑_{v/j}wv*∑_{d|w,d|(i/v)}u(d) 我们尝试把d提前 会发现有 =∑nd=1d∗u(d)(∑(n/d)i=1∂(i原创 2016-11-17 07:46:22 · 913 阅读 · 0 评论 -
HDU5608 function
设 G(i)=i2−3i+2G(i)=i^2−3i+2 有莫比乌斯反演可得出F(i)F(i)关于G(i)G(i)的关系 带入得 ∑ni=1F(i)=∑nd=1u(d)∑n/di=1G(i)∑_{i=1}^nF(i)=∑_{d=1}^nu(d)∑_{i=1}^{n/d}G(i) 后面可以O(1) 前面就是经典的杜教筛了#include<cstdio>#include<iostream>原创 2016-11-17 12:52:40 · 763 阅读 · 0 评论 -
ZOJ2674 Strange Limit
欧拉函数….#include<cstdio>#include<cmath>#include<iostream>using namespace std;int p;int Fai(int x){ int t=sqrt(x),res=1; for(int i=2;i<=t&&i<=x;i++) if(x%i==0) { x/=i;原创 2016-12-11 20:35:45 · 783 阅读 · 0 评论 -
博弈论与SG函数
由于BZOJ被卡 有时间去看一些以前没去看的东西了比如说博弈论SG是用来应对一类博弈论问题的博弈论问题可以抽象成一个有向无环图然后G(x)=mex({G(y)|x->y})mex表示后面这个集合最小的没有的元素(非负mex({1,2})=0 mex({})=0然后连边就是以是否可以到达这个决策点连边多个游戏的并的先手必胜可以用每个游戏的SG函数的异或求解(Xor)原创 2016-02-18 17:12:40 · 376 阅读 · 0 评论 -
组合数学
http://wenku.baidu.com/link?url=rZhh5B-ZAdNES26Q_qP25wqxnAuqXRer1IJetlHzhuZvzHh7ab5xrAq5Lj8tfuF_8P8GbGwUp5D3r7wLf5ezhr2BgKcpeBA37Q3y1ha9AlG&qq-pf-to=pcqq.c2c很清楚原创 2015-12-01 21:10:34 · 561 阅读 · 0 评论 -
BZOJ1257: [CQOI2007]余数之和
设数列 Ai=X mod i 分析可得 余数是一些等差数列头尾相接组合起来的 然后就是二分找这些等差数列喽#include #define SUM(L,R) (((L+R)*(R-L+1))>>1) using namespace std;#define LL long long LL n,k,ans; int main(){ scanf("%lld%lld",原创 2015-11-25 19:49:13 · 551 阅读 · 0 评论 -
BZOJ1053: [HAOI2007]反素数ant
最多不会超过13个不同的素因数 然后就每一个素因数去搜能乘几次 2^2*3^3的因数是和2^3*3^2一样的 所以需要前一个素数的指数比后一个素数指数大每次更新最优值#include#include#includeusing namespace std;#define ll long longint prime[101]={1,2,3,5,7,11,13,17,原创 2015-12-15 16:24:05 · 381 阅读 · 0 评论 -
BZOJ2508: 简单题
纯的数学题http://www.cnblogs.com/clrs97/p/4403197.html可以把那个式子推出来然后我一开始脑抽的去配方 结果搞傻掉了。。。后来发现对于一个确定的x 要使ans最小则y为一个定量 那么就是把y化成x在带入就好了‘Claris讲的很详细啊(说句不要脸的话其实我就是这么想的#include#include#define原创 2016-01-19 19:48:43 · 743 阅读 · 0 评论 -
BZOJ3994: [SDOI2015]约数个数和
很难想到。。 http://blog.codebursts.com/bzoj3994/然后我是暴力求f的。。。 总体时间还是一样的#include<cstdio>#include<iostream>using namespace std;#define ll long longconst int maxn=50001;ll mu[maxn],pre[maxn];bool che原创 2016-03-01 18:48:26 · 484 阅读 · 0 评论 -
BZOJ3759: Hungergame
分析之后发现只要有一组箱子的异或和为0那么就可以赢然后就是用高斯消元求线性基#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[21];char c;inline void read(int &a){ a=0;do c=getchar();while(c<'0'||c>'9')原创 2016-03-01 21:06:20 · 417 阅读 · 0 评论 -
BZOJ3000: Big Number
我们有斯特灵近似公式 然后就可以快速求了http://blog.csdn.net/ws_yzy/article/details/50725649 公式: n!≈ sqrt(2πn)*((n/e)^n)注意精度#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;#define ld long double原创 2016-03-02 17:05:01 · 464 阅读 · 0 评论 -
BZOJ3561: DZY Loves Math VI
昨天推了个式子发现根本不能玩。。。 后来看了别人的blog发现就是那个式子 是可以做到n^(3/2)的。。。太傻了#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>using namespace std;#define ll long longconst ll mod=1000000007;c原创 2016-03-03 13:37:34 · 519 阅读 · 0 评论 -
关于二次剩余
好多大神都说不会证明那个式子。。 然后发现这个blog有讲 http://blog.csdn.net/acdreamers/article/details/10182281转载 2016-02-17 10:34:35 · 388 阅读 · 0 评论 -
BZOJ3122: [Sdoi2013]随机数生成器
BSGS原来就是SB暴力。。。日了狗了#include<cstdio>#include<iostream>#include<cstring>#include<map>#include<cmath>using namespace std;#define ll long longll ex_gcd(ll &x,ll &y,ll a,ll b){ if(b==0){x=1;y=0;原创 2016-02-17 13:48:43 · 371 阅读 · 0 评论 -
BZOJ2190: [SDOI2008]仪仗队
有两种做法一个是欧拉函数的前缀和另一个是莫比乌斯反演 貌似数据水能让莫比乌斯反演过去 我用的是莫比乌斯反演#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn=40001;int mu[maxn],pre[maxn],prime[maxn];bool check[ma原创 2016-02-17 09:38:44 · 389 阅读 · 0 评论 -
BZOJ4407: 于神之怒加强版
莫比乌斯反演 发现搞出来的式子和昨天的差不多#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int mod=1000000007;const int maxn=5000001;bool check[maxn];int sq[maxn],prime[maxn],G[ma原创 2016-02-16 09:33:17 · 726 阅读 · 0 评论 -
BZOJ2820: YY的GCD
很好的一道莫比乌斯反演 看了题解才把式子推出来 去看ioi爷的博客吧 http://www.cnblogs.com/iwtwiioi/p/4132095.html#include<cstdio>#include<cstring>#include<iostream>using namespace std;constint maxn=10000001;int mu[maxn],G[ma原创 2016-02-15 17:20:53 · 400 阅读 · 0 评论 -
BZOJ1900: Uva10601 Cubes
burnside的定理。。。然后看到1s的时限整个人都炸了!!!!好吧 那我就打表好了23333(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(2 3 4 1) (6 7 8 5) (10 11 12 9)(3 1) (4 2) (7 5) (8 6) (11 9) (12 10)(4 3 2 1) (8 7 6 5)原创 2015-12-27 21:13:29 · 654 阅读 · 0 评论 -
Miller_Rabin 大素数判断
满足费马定理公式的非素数不怎么多就是了。。。然后这就是第一次筛选然后就根据二次探测定理二次探测定理 如果p是一个素数,0然后就有一般步骤0、先计算出m、j,使得n-1=m*2^j,其中m是正奇数,j是非负整数1、随机取一个b,22、计算v=b^m mod n3、如果v==1,通过测试,返回4、令i=15、如果v=n-1,通过测试,返回原创 2015-12-24 20:33:25 · 446 阅读 · 0 评论 -
BZOJ2301: [HAOI2011]Problem b 莫比乌斯反演
同上一题 然后就是拆操作了 注意一下abcd除以k后区间的是闭还是开的#include #include #include #include #include #include #define LL long longusing namespace std;char c;inline void read(int&a){ a=0;do c=g原创 2015-12-23 21:13:46 · 535 阅读 · 0 评论 -
BZOJ1101: [POI2007]Zap 莫比乌斯反演
很裸的吧 转换一下就好了然后统计相同a/d,b/d 的值#include #include #include #include #include #include #define LL long longusing namespace std;char c;inline void read(int&a){ a=0;do c=getchar();whil原创 2015-12-23 21:12:06 · 623 阅读 · 0 评论 -
莫比乌斯反演
首先 莫比乌斯函数有个性质∑d|nμ(d)={1 (n=1)0 (n>1)证明: ①n=1时,不做多余说明。。。 ②n>1,根据唯一分解定理,可以分解n=∏ki=1paii 对于那些含平方因子也就是存在ai不为1的数,它的函数值为0,对答案没有任何贡献。 所以我们来看看那些是互异素数乘积的数,每一个成为它约数的数是什么样的情况。 (1)若d中有0个质因子(d=1原创 2015-12-23 19:56:58 · 539 阅读 · 0 评论 -
Hackerrank Hard Homework
题目链接: https://www.hackerrank.com/contests/w26/challenges/hard-homework 题目大意: 给定nn 求正整数x,y,zx,y,z满足x+y+z=nx+y+z=n 最大化sin(x)+sin(y)+sin(z)sin(x)+sin(y)+sin(z)一开始往死里搞没拆出来.. 搞了一个O(nlogn)O(nlogn)的做法结果死原创 2016-12-12 19:25:16 · 493 阅读 · 0 评论