![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
HDU - 4386
题目链接:HDU - 4386婆罗摩笈多公式:我们可以发现,当后面 cos = 0 时为最值。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;double a[10],p; int ts;void solve(){ for(int i=1;i<=4;i++) cin>原创 2020-08-31 19:24:27 · 171 阅读 · 0 评论 -
Divisors of the Divisors of An Integer
题目链接:Divisors of the Divisors of An Integer我们直接看每个质因子的贡献即可。假设这个质因子有x个,那么我们构造某一个数的时候可以选0,1,2,3,…,x个,然后对应的因子就有1,2,3,4,5,…,x个。所以每个因子的贡献就是(x+1)*(x+2)/2但是要注意1e7+7不是质数,所以没有逆元,需要在取模之前除以2.然后对于阶乘分解我们可以提前预处理出所有质数。复杂度:O(T*n)AC代码:#pragma GCC optimize("-Ofast原创 2020-07-05 17:14:22 · 350 阅读 · 0 评论 -
方差
题目链接:方差把公式化成期望和公差的公式:D(x)=E(x^2)-E(x)*E(x)E(x)=区间sum/mE(x^2)=区间平方sum/m然后排序之后,尺取即可AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e6+10;int n,m,s1,s2,a原创 2020-07-03 21:44:29 · 215 阅读 · 0 评论 -
解题
题目链接:解题因为不要的是变成0,所以我们其实是找到最早出现的一个区间,这个区间的和%m==0那么其实找两个最近的 a[i]%mk && a[j]%mk哈希记录即可。由于鸽巢原理,并且有解,所以不可能遍历超过m+1次,所以复杂度是ok的。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing name原创 2020-07-03 19:31:32 · 143 阅读 · 0 评论 -
Codeforces - Lengthening Sticks
题目链接:Codeforces - Lengthening Sticks正难则反。我们直接计算不合法的方案。总方案我们可以看成是一个可以放0 的隔板法。 C(x+2,2)然后不合法的,我们直接看a>=b+c,b>=a+c,c>=a+b分别计算即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing n原创 2020-06-17 20:10:07 · 176 阅读 · 0 评论 -
钢琴演奏家
题目链接:钢琴演奏家显然,直接枚举不好计算相同数字的情况,需要容斥。不过我们可以先排序,然后从左往右计算,计算当前这个数字的时候,只能弹之前的,这样相当于给了相同数字一个顺序。算是很简单的算贡献,计数了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e6+1原创 2020-05-23 08:54:00 · 158 阅读 · 0 评论 -
Sum of gcd of Tuples
题目链接:Sum of gcd of Tuples我们令dp[i]为,gcd为i的方案数。然后我们可以发现dp[i] = (k/i)^n,但是其中有gcd为i的倍数的方案数,然后把倍数减去即可。最后gcd为i的贡献就为:i*dp[i]AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;co原创 2020-05-22 21:33:55 · 336 阅读 · 0 评论 -
Factorial
题目链接:Factorial考虑a/b后面0的个数,其实就是除b能整除多少次。所以我们对k的每个因子单独求解即可。然后对每个因子看n的阶乘能整除多少次,就很简单了,直接对每个因子算贡献。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;int n,k,res=1e18; map<i原创 2020-05-19 10:26:22 · 636 阅读 · 0 评论 -
LocalMaxima
题目链接:LocalMaxima直接考虑每个数字的贡献即可。数字1的贡献只能在第一个位置,后面随便放所以是:(n-1)!/n! = 1/n数字2,如果放第一个位置为:(n-1)!/n! ,如果放第二个位置为:(n-2)!/n! 总和为:1/(n-1)其他数字依次类推。所以我们可以发现这就是一个调和级数,因为n很大,所以超过1e7的时候就用近似公式:log(n) + 欧拉常数欧拉常数为:0.577215664AC代码:#pragma GCC optimize("-Ofast","-fu原创 2020-05-19 09:05:45 · 450 阅读 · 0 评论 -
[HAOI2012]容易题
题目链接:[HAOI2012]容易题其实不需要分配率维护答案。我们操作次数很少,我们直接维护被操作的每个数,当前的所有能选的数之和即可。然后剩下的就是 (n*(n+1)/2)^(m-操作数的个数)然后因为有重复,所以先去重。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const原创 2020-05-14 17:32:28 · 196 阅读 · 0 评论 -
[Violet]樱花
题目链接:[Violet]樱花我们令 z = n!可得: z(x+y)=xy(x-z)(y-z)=z*z即:a*b=z*z所以我们找到一个合法的a就能对应一个b,合法的a是什么呢?z*z的因子,所以对z*z质因数分解即可,然后调用唯一分解定理我们就能计算出答案了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing原创 2020-05-13 19:33:30 · 281 阅读 · 0 评论 -
Mining a
题目链接:Mining a先假设式子为:1/x+1/y=1/n所以:x=b,y=a^b我们可以化简得到:y=n*x/(x-n) , 令 z=x-n可得:y=n+n*n/z,所以枚举z即可。然后就可以解除所有的x,y取最大值即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;原创 2020-05-11 22:36:23 · 413 阅读 · 1 评论 -
迷之盒子 - 带上界的隔板法
题目链接:迷之盒子显然就是隔板之后,每个盒子个数要小于等于k。我们可以利用容斥来做。至少有0堆(k+1)的 - 至少有1堆(k+1)的 + 至少有2堆(k+1)的。。。。。。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long lo...原创 2020-05-05 14:30:19 · 345 阅读 · 0 评论 -
Codeforces - Clique Problem
题目链接:Codeforces - Clique Problem我们令 xi >= xj则:xi-xj>=wi+wj -> xi-wi>=xj+wj令:li=xi-wi,ri=xi+wi然后就是一个线段区间覆盖问题了,贪心即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include...原创 2020-03-30 15:39:37 · 192 阅读 · 0 评论 -
Codeforces - New Year Santa Network
题目链接:Codeforces - New Year Santa Network显然,我们可以对每条边算出来贡献值。然后期望就算出来了。贡献值怎么算呢?对于每条边可能下面选一个点,上面选两个,或者反之。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#defin...原创 2020-03-17 22:59:19 · 105 阅读 · 0 评论 -
take
题目链接:take直接考虑每一个钻石对期望的贡献。当前钻石可以贡献答案,那么前面所有比它大的钻石都没有替换。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int ...原创 2020-03-16 14:14:44 · 198 阅读 · 0 评论 -
HDU - 6482
题目链接:HDU - 6482 LGV定理对于n个起点n个终点的图来说,n条路径都不相交的方案数为M行列式的值。e(x,y) 为x到y的方案数。那么,知道这个定理,这道题就直接秒了。一个点到另一个点的方案数打表可以看出,AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h...原创 2020-02-25 20:20:55 · 294 阅读 · 0 评论 -
WD与循环
题目链接:WD与循环如果我们把每个循环的值,当成小球放到喝粥当中,那么其实就是:a[1]+a[2]+a[3]+……+a[n] <=m ,如果是等于m,那么直接就上隔板法 -> C(n+m-1,m-1)现在是小于等于,我们通过组合数的前缀和可以知道,其实就是C(n+m,m)。预处理阶乘,然后Lucas即可。AC代码:#pragma GCC optimize("-Ofas...原创 2020-02-24 11:52:18 · 188 阅读 · 0 评论 -
Codeforces - Trailing Loves (or L'oeufs?)
题目链接:Codeforces - Trailing Loves (or L’oeufs?)其实就是求n的阶乘能整除多少次b。考虑最少整除的次数:就是某个某个b的质因子的限制。我们对b的每个质因子求min即可。然后对于某个质因子,求解一下即可。要注意a很大,如果i*a>n提前退出。不然会爆long longAC代码:#pragma GCC optimize("-Ofast"...原创 2020-02-21 18:06:20 · 234 阅读 · 0 评论 -
Codeforces - Berland Fair
题目链接:Codeforces - Berland Fair因为每次mod一个比自己小的数字,值至少减去一半。所以我们暴力循环即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std...原创 2020-02-19 20:39:51 · 232 阅读 · 0 评论 -
Codeforces - Andrey and Problem
题目链接:Andrey and Problem考虑加入某个数字的贡献:若当前1个人同一的概率为x,0个人同一的概率为y,当前加入的人概率为pP = x*(1-p) + p*yP = x + p * (y - x)可以看出,如果y>x就可以一直加人进来,加谁呢?最大的p!AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loo...原创 2020-02-11 23:17:13 · 181 阅读 · 0 评论 -
Codeforces - Directed Roads
题目链接:Codeforces - Directed Roads可以发现给的是基环树,那么可能成环的,并且环的大小,我们提前处理出来。对于每个环的大小为sz,不成环的方案数为: 2 ^ sz - 2对于非环上的边,随便放 方案为 2 ^ sumAC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bi...原创 2020-02-03 21:03:25 · 141 阅读 · 0 评论 -
Codeforces - Barcelonian Distance
题目链接:Codeforces - Barcelonian Distance我们可以发现,如果我们可以通过走直线更短,那么这条直线一定穿过 A,B两点围成的矩形。所以我们可以求出和矩形的交点,然后取最小值即可。这道题我们要防止科学计数法,不精确,所以我们可以用:cout.setf(ios_base::fixed,ios_base::floatfield);AC代码:#pragma ...原创 2020-02-02 19:19:40 · 255 阅读 · 0 评论 -
Codeforces - The Sum of the k-th Powers
题目链接:Codeforces - The Sum of the k-th Powers显然 i的k次幂的前缀和的多项式是一个 k+1次幂的多项式。然后我们对 k+1 次幂的多项式,求 k+2 个连续点可以求出唯一多项式。直接拉格朗日差值即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bi...原创 2020-02-01 19:19:17 · 248 阅读 · 3 评论 -
拉格朗日插值
在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。——百度百科拉格朗日差值公式:如果x是连续的,那么我们可以通过预处理,使其变成O(n)的。例题:拉格朗...原创 2020-02-01 18:37:20 · 535 阅读 · 0 评论 -
[Beijing wc2012]最多的方案
Description第二关和很出名的斐波那契数列有关,地球上的OIer都知道:F1=1, F2=2, Fi = Fi-1 + Fi-2,每一项都可以称为斐波那契数。现在给一个正整数N,它可以写成一些斐波那契数的和的形式。如果我们要求不同的方案中不能有相同的斐波那契数,那么对一个N最多可以写出多少种方案呢?Input只有一个整数N。Output一个方案数Sample Input16...原创 2020-01-28 21:41:55 · 269 阅读 · 0 评论 -
Codeforces - Math
题目链接:Codeforces - Math题目大意:你个一个数字,你可以乘某个数,或者开平方,求能得到的最小的数和最小次数。先质因数分解后,我们可以发现,每个质因数一定会只被消到只有一个。然后把所有都变成一样的最高质因数次幂,然后一直开方即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bi...原创 2020-01-28 19:27:44 · 267 阅读 · 0 评论 -
[AHOI2004]数字迷阵
简单分析,我们可以发现。如果我们能推出来某一行的第一个数字,那么直接矩乘即可。现在怎么求呢?按照定义我们发现,首项是一个斐波那契最小展开。可以看规律:看数字的增加数:(2/3)32 33 2 32 3 3 2 3。。。。。。。。。。。。。。。。。值全部加起来,就是斐波那契的递推式。所以首项的公式为: n*t+n-1 ,t = (sqrt(5)+1)/2 ,黄金分割比。AC...原创 2020-01-08 15:58:05 · 349 阅读 · 0 评论 -
Codeforces - Sad powers
You’re given Q queries of the form (L, R).For each query you have to find the number of such x that L ≤ x ≤ R and there exist integer numbers a > 0, p > 1 such that x = ap.InputThe first line...原创 2020-01-02 15:01:24 · 213 阅读 · 0 评论 -
hdu 1521 排列组合
排列组合Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5948 Accepted Submission(s): 2614Problem Description有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。...原创 2019-12-24 19:42:03 · 192 阅读 · 0 评论 -
解方程
因为a比较大,使用高精度去计算必然会TLE。于是我们可以利用hash的思想,相当于对等式,两边同时取模。这里我使用了孪生素数来双hash,增加可靠性。计算多项式直接秦九韶就行(初中知识应该都会)AC代码:#pragma GCC optimize(2)#include<bits/stdc++.h>#define int long longusing namespac...原创 2019-12-21 16:31:01 · 258 阅读 · 0 评论