数学
阿狸是狐狸啦
这个作者很懒,什么都没留下…
展开
-
codeforces 1117D Magic Gems(矩阵快速幂或杜教BM)
题意:一个魔法石可以分成m个普通石头,魔法石和普通石头占据的空间都是1,给你一个容量为n的容器,问你有多少种方案装满它。思路:很容易的递推式f[n]=f[n-1]+f[n-m]。类似于斐波那契数列,我们可以用矩阵快速幂。容易推出矩阵,快速幂写一下就行了。因为是线性递推式也可以用杜教BM,把前200项丢进去,答案就出来了。//杜教BM#include<bits/stdc...原创 2019-02-23 11:22:09 · 648 阅读 · 0 评论 -
hdu-1046(找规律)
题意:给你一个n*m图,问你经过每个点然后回到起点最短距离。题解:n和m很大,很明显需要找规律。画几个图,发现n和m只要有一个是偶数答案就是n*m,当n和m都是奇数时,发现答案是n*m-1+saqt(2),注意输出格式。#include <iostream>#include <string.h>#include <algorithm>#include &...原创 2018-04-27 00:04:27 · 196 阅读 · 0 评论 -
hdu_1030 (找规律)
题意:给你一个数塔,问你两个位置的最短距离。题解:一般这种规律题都需要对图形特殊处理一下,比如旋转一下,然后就发现规律了。#include <iostream>#include <string.h>#include <iostream>#include <algorithm>using namespace std;typedef long ...原创 2018-04-24 14:53:40 · 180 阅读 · 0 评论 -
POJ 1150 The Last Non-zero Digit
题意:求n!/(n-m)!的最后一位非零位。题解:直接求结果模10会超时,而且2和5的结果必然是0,所以先把n!中2和5的因子去掉。可以看出:1,2,3,4,5,6,7,8,9,10。。。除尽2和5之后为1,1,3,1,1,3,7,1,9,1。。。只剩下1,3,7,9的结尾的数。我们只需要统计一下以3,7,9结尾的数字个数即可。若干个3相乘结果的结尾是有规律的,可以简化计算。写两个函数统计以3,7...原创 2018-03-27 21:51:43 · 143 阅读 · 0 评论 -
求数列......1,2,1,3,2,3,1,4,3,5,2,5,3,4,1...第n项
题意:求数列......1,2,1,3,2,3,1,4,3,5,2,5,3,4,1...第n项。题解:通过观察等数字1的下标,1,3,7,15我们发现都是2的幂次方-1,我们如果在把下标加1,那么发现a[2*n]=2*a[n].且a[2*n+1]=a[n]+a[n+1]。a[3]=2,a[2]=1,那么a[1]=1。于是数列就变成1,1,2,1,3,2,3,1,4,3,5,2,5,3,4,1......原创 2018-03-26 22:01:19 · 840 阅读 · 0 评论 -
poj 1850 Code (组合数学)
题意:合法的字符串序列:由小写字母组成,每一个字符比后一个字符ASCII码要大将合法字符串序列按字典序编码,a编号为1,b编号为2,c编号为3.....ab编号为27以此类推,给定一个串,问你比他小的和法串有多少个,如果这个串不合法则输出0.题解:我们可以先求出长度比它小的串总数,若长度为i(i<n),我们需要在26个字母中选出i个即可。若i=n的话,我们可以假设前j-1个字母与原串相等,枚...原创 2018-03-26 21:41:34 · 102 阅读 · 0 评论 -
约瑟夫环问题总结 poj3517,
约瑟夫环:n个人报数,报到m的人出队,然后继续报,问最后出队人的编号。最简单的方法链表模拟一下。而n很大时链表也无法在短时间得到结果。所以要找他的数学解法。公式为f[i]=(f[i-1]+m)%i (i从2循环到n)。这个公式推导过程如下。现将n个人重新编号为0~n-1(1) 0,1,2,3,4,5,6,7.......n-1取出第m个,即删掉编号m-1。(2) 0,1,2,3,4,5,...原创 2018-03-31 22:37:10 · 451 阅读 · 0 评论 -
小马哥的超级盐水 (牛客网景驰科技杯)
链接:https://www.nowcoder.com/acm/contest/94/K来源:牛客网题意:给n杯盐水,每一杯水有a单位盐,b单位水。给你一个x和y,问有多少种方法能配成x比y的盐水。因为n只有35,没法枚举全部情况,如果n只有一般大,那么我们可以枚举所有情况。我们可以把n分为两部分,枚举一部分的所有情况,然后找是否能和另一部分构成解。对于(a1,b1)和(a2,b2)这两个集合。易...原创 2018-04-08 17:23:40 · 363 阅读 · 0 评论 -
第一,二类斯特林数 Bell数 Stirling公式
斯特林数是组合数学的内容。第一类斯特林数可以处理下面的问题:把N个不同元素分为k个环,每个环非空,问有多少分法,记为S(p,k),S(p,p)=1S(p,0)=0递推公式为:S(p,k)=(p-1)*S(p-1,k)+S(p-1.k-1)。p个人排k个圈,第一种方法是,第k个圈只有p自己,所以加上S(p-1,k-1),还有一种方法是p加入p-1人组成的k个圈,排在任意一个人的左边,加上(p-1)*...原创 2018-03-29 22:28:48 · 1830 阅读 · 0 评论 -
LightOJ - 1163 (方程化简)
题意:给你一个B,已知A-A/10=B。让你求A。我们可以设A最后一位为x那么方程两边同时乘10,化为10*A-A+x=B。那么9A=B-x,x的范围是0到9,我们枚举x即可。#include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>#include...原创 2018-03-05 21:20:19 · 205 阅读 · 0 评论 -
LightOJ - 1098 (求1到n的约数和)
题意:求1到n除了本身和1的约数和。题解:很容易想到O(n)的解法,对于每个数出现的次数为n/i,减去本身,那么求(n/i-1)*i,循环一遍即可。那么如何优化呢。我们可以先求出前sqrt(n)的数出现的次数,sqrt(n)之后的数出现的次数如何求呢,举个栗子。n=100,当我们求到7时,7一共出现了100/7次,减去本身出现的一次,ans+=(100/7-1)*7。而100/7>sqrt(...原创 2018-03-05 20:45:52 · 848 阅读 · 0 评论 -
LightOJ - 1045 求N!在k进制下的的位数(斯特林公式)
题意:求n的阶乘k进制下的位数。题解:斯特林公式可以求N!在k进制下的的位数。#include<cstdio> #include<iostream> #include<cmath> using namespace std; double pi =acos(-1.0);//πdouble e =exp(1);//e int t; ...原创 2018-03-02 15:21:21 · 245 阅读 · 0 评论 -
牛客练习赛16-D(求值)
链接:https://www.nowcoder.com/acm/contest/84/E来源:牛客网题目描述给定n个数字a1, a2, ..., an。 定义f(l, r) = al | al+1| ... | ar。 现在枚举(1 <= l <= r <= n),问不同的f值一共有多少个。输入描述:第一行一个整数n表示数组大小 (1 <= n <= 100,000)...原创 2018-04-27 22:13:39 · 221 阅读 · 0 评论 -
美团2018年CodeM大赛-资格赛 A,B
题目描述小美和小团最近沉迷可乐。可供TA们选择的可乐共有k种,比如可口可乐、零度可乐等等,每种可乐会带给小美和小团不同的快乐程度。 TA们一共要买n瓶可乐,每种可乐可以买无限多瓶,小美会随机挑选其中的m瓶喝,剩下的n-m瓶小团喝。 请问应该如何购买可乐,使得小美和小团得到的快乐程度的和的期望值最大? 现在请求出购买可乐的方案。输入描述:第一行三个整数n,m,k分别表示要买的可乐数、小美喝的可乐数以...原创 2018-06-11 20:45:48 · 234 阅读 · 0 评论 -
hdu-6242(随机化计算几何)
题意:给你1e5个点,让你输出一个圆,满足至少n/2个点在圆上。思路:因为至少有n/2个点在圆上,我们可以随机三个点。那么这三个点外接圆满足条件的概率至少为1/2*1/2*1/2=1/8,那么多随机几次就好了。注意特判n小于等于4的情况。#include <bits/stdc++.h>using namespace std;struct Point { double x...原创 2018-12-03 15:29:29 · 379 阅读 · 1 评论 -
bzoj3450 (概率dp)
题意:有一个长度为 n 的字符串,由 o,x,? 三种字符组成。? 代表 o,x 各有 50% 概率。求连续 o长度的平方和的期望。思路:由平方公式可得,那么就可以设i之前连续的o的长度期望为f[i].如果s[i]='o'那么答案贡献为f[i-1]*2+1,f[i]=f[i-1]+1.如果s[i]='x'f[i]=0,贡献也为0如果s[i]='?'贡献为(f[i-1]*2+1)/2...原创 2018-08-17 09:32:23 · 261 阅读 · 0 评论 -
牛客多校九-A题(fwt)
链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian elimination to solve systems of linear equations.Given n and a[i], where n is a power of 2, le...原创 2018-08-16 20:29:04 · 259 阅读 · 0 评论 -
bzoj2440 (容斥原理+懵逼乌斯函数)
题意:求第k个不包含完全平方因子的数。思路:很明显我们可以二分答案然后求当前mid之前有多少个满足题意的数。根据容斥原理我们可以求n之前满足条件的数的个数ch(n)=n-包含一个完全平方因子的数+包含两个不同的完全平方因子的数-三个不同的完全平方因子的数。。。就是 ch(n)=,我们通过观察可以发现g(1^2)=1,当i是奇数个不同的质数的乘积时g(i^2)=-1,当他是偶数个不...原创 2018-08-15 16:17:38 · 713 阅读 · 0 评论 -
BZOJ 3527: [Zjoi2014]力 [FFT]
题意:令Ei=Fi/qi,求Ei.思路:首先注意E的下标是i,F的下标是i。然后化简一下这个式子。 #include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>#include <math.h>using n...原创 2018-08-07 15:44:04 · 121 阅读 · 0 评论 -
Wannafly挑战赛20 D挑选队友
D 挑选队友 点击查看 进入讨论 77/304 通过 链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 Applese打开了m个QQ群,向群友们发出了组队的邀请。作为网红选手,Applese得到了n位选手的反馈,每位选手只会在一个群给Applese反馈现在,Applese要挑选其中的k名选手组队比赛...原创 2018-08-10 15:44:05 · 207 阅读 · 0 评论 -
HDU 1402(FFT,NNT)
题意:大数相乘。主要是存板子的,一个FFT,一个NNT。其中FFT可能存在精度问题。有的时候会被卡精度,比如题目要求取模时,这时我们一般用NNT。//FFT#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>using namespac...原创 2018-08-10 13:21:35 · 276 阅读 · 0 评论 -
数位dp入门
前些天做牛客多校碰到一个题目,题解要用到数位dp,OTZ,不会该怎么办,学什么,愣着啊。所谓数位dp统计每一位数字的情况,统计的过程中一定会遇到各种重复,那么我们利用记忆化的方法来避免这些重复计算就是我们今天要学的数位dp。话不多说,我们先从一个小例子来说,这个题意很简单就是不要49。让你统计[l,r]区间内没有出现49的数有几个。比如4,9,94,123,1419,这些数都没出现49...原创 2018-07-31 16:29:05 · 727 阅读 · 1 评论 -
拉格朗日插值法求自然数幂和(模板)
拉格朗日插值法可以理解为当我们确定n+1个x坐标不同的点时,我们可以用确定唯一的一个n次多项式。然后我们就可以求出这个多项式的任意一项了。求自然数幂和: //拉格朗日插值法,自然数幂和。#include <bits/stdc++.h>using namespace std;#pragma comment(linker, "/STACK:1024000000,102400...原创 2018-07-22 16:54:31 · 983 阅读 · 0 评论 -
欧拉降幂和广义欧拉降幂
先百度贴个欧拉定理由此可以得到降幂公式第一个要求a和p互质,第二个和第三个是广义欧拉降幂,不要求a和p互质,但要求b和的大小关系。那么有了这个公式先写个题目 bzoj3884题意:求2^(2^(2^(2^(2^...)))) mod p的值思路:这样子每次求p的欧拉函数,求解log(p)次左右p就变成1了,那么再往后结果都是0了。题解上写的很清楚。贴个出题人的题解。...原创 2018-07-28 20:33:39 · 16972 阅读 · 4 评论 -
牛客练习赛20 A和B
链接:https://www.nowcoder.com/acm/contest/128/B来源:牛客网题目描述在一次课间休息的时候,音无结弦看到立华奏一个人坐在座位上写作业,于是动了请她吃麻婆豆腐的念头。他迅速移动到她后面的座位,寻思着该怎么开口邀请,他摸了摸口袋,拍了拍脑袋,有了! “奏~听说食堂里有种传闻中因为辣过头所以谁都不会点的麻婆豆腐,但是却惊人地好吃啊,这样,我们来做个题吧!如果你做出...原创 2018-06-15 22:31:41 · 354 阅读 · 0 评论 -
LightOJ - 1035 (数论)
题意:分解n的阶乘。题解:因为n最大100,所以打一个100的素数表瞎搞它的素因子个数即可,注意输出格式,空格不多不少。#include <cstdio>#include <iostream>#include <string.h>#include <algorithm>using namespace std;typedef long lon...原创 2018-03-02 15:11:57 · 220 阅读 · 0 评论 -
HDU - 5965
题意:有三列n行的雷区。已知第二行没有雷,并且第二行周围的雷已知,问你这样的雷区存在多少个。题解:根据扫雷的规则,已知第一列那么可以递推出第二列,所以枚举第一列雷的个数,然后递推下一列判断一下是否满足题意即可。#include <stdio.h>#include <string.h>#include <iostream>#include <algor...原创 2018-03-16 14:29:47 · 231 阅读 · 0 评论 -
快速判断一个数能否被 2 ,3 ,4 ,5, 7,9,11 整除
性质1:如果数a、b都能被c整除,那么它们的和(a+b)或差(a-b)也能被c整除。性质2:几个数相乘,如果其中有一个因数能被某一个数整除,那么它们的积也能被这个数整除。能被2整除的数:个位上的数能被2整除(偶数都能被2整除)能被3整除的数:各个数位上的数字和能被3整除能被4整除的数:个位和十位所组成的两位数能被4整除能被5整除的数:个位上的数都能被5整除(即个位为0或5)...转载 2018-03-10 12:02:19 · 6228 阅读 · 2 评论 -
LightOJ - 1078 (Integer Divisibility) (同余定理)
题意:给两个整数a,b;问你需要多少个b组成的数字,bbbbbbb....,可以整除a。同余定理(a*x+y)%b=((a%b)*(x%b)+(y%b))%b#include #include #include using namespace std;typedef long long ll;int main(){ int t,cas=1;scanf("%d",&t);原创 2018-02-02 14:50:55 · 203 阅读 · 0 评论 -
LightOJ - 1020 A Childhood Game (巴士博弈)
题意:一对石子,一个人最多拿两个,最少那一个。Allice先拿,最后拿球的输。Bob先拿,最后拿球的赢。问你谁会赢1:当Bob先拿,问题是裸的巴士博弈。2:当Alice先拿,我们可以将n-1,然后就把问题转换成谁先拿完n-1个石子谁赢,然后就是巴士博弈。#include #include #include using namespa原创 2018-02-02 14:38:34 · 293 阅读 · 0 评论 -
LightOJ - 1336 (Sigma Function)
题意:f(n)为n所有约数的和,给你一个数n,让你求从1到n中f(n)为偶数的数有多少个.思路:n=p1^e1*p2^e2...,则f(n)=(p1^(e1+1)-1)/(p1-1))*(p2^(e2+1)-1)/(p2-1))....且(p1^(e1+1)-1)/(p1-1))=p1^0+p1^1......+p1^e1;要使得f(n)为奇数,则(p1^(e1+1)-1)/(p1-1原创 2018-02-02 12:16:40 · 160 阅读 · 0 评论 -
LightOJ 1213 (Fantasy of a Summation )
#include int cases, caseno;int n, K, MOD;int A[1001];int main() { scanf("%d", &cases); while( cases-- ) { scanf("%d %d %d", &n, &K, &MOD); int i, i1, i2, i3原创 2018-02-01 18:04:58 · 171 阅读 · 0 评论 -
LightOJ - 1245 (Harmonic Number (II)) 数论
题意:long long H( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) res = res + n / i; return res;}计算上面代码的值。题解:我们可以观察10这个数字他除以1,2,3,4,5,6,7,8,9,10之后分别为10,5,3,2,2,1,1,1,1...原创 2018-02-01 13:50:06 · 203 阅读 · 0 评论 -
LightOJ - 1282 (log取前3位)
题意:求n的k次方的前3位和后三位。后三位直接用快速幂取下模。前三位需要用到log维护,记得去年某个比赛就见到类似的用log保精度的问题,紫书上也遇到过,暑假的训练也碰到斐波那契前n位的问题,然后一直没看,最终区域赛热身赛也遇到这类问题,然后凉凉~~,今天又碰到了终于弄明白了QAQ。首先任意一个数字n都可以写成(10^a)(a为浮点数);那么(n^k)就可化为(n^(ak)),我们知道原创 2018-01-30 15:12:13 · 188 阅读 · 0 评论 -
UVA - 11426 GCD - Extreme (II) (欧拉函数)
题意:求f(x)前n项和 f(x)=SUM(gcd(i,j)) (1题解:设g(n,i):与n的gcd为i的数有多少个。那么最多可以有n/i个,这些数当中肯定有一些数与n的gcd是i的倍数。我们可以想到与n/i互质的数的个数肯定就是我们要求的数,比如:g(24,3),24可分解为3*3*3*3*3*3*3*3,3可分解为3,那么与8互质的数有1,3,5,7。那么这些数乘以三之后为3原创 2018-02-01 11:05:29 · 119 阅读 · 0 评论 -
hdu 4497 GCD and LCM
求满足gcd(x,y,z)=n,lcm(x,y,z)=m的不同三元组的个数。易得lcm(x,y,z)/gcd(x,y,z)=p1^a1*p2^a2*p3^a3*...pk^ak.(pi为素数)x/gcd=p1^b1*p2^b2*...*pk^(bk)y/gcd=p1^c1*p2^c2*...*pk^(ck)z/gcd=p1^d1*p2^d2*...*pk^(dk)由lcm及gc原创 2018-01-24 19:11:08 · 130 阅读 · 0 评论 -
codeforces520B-Two Buttons
题意:两个数n和m,n可以乘2也可以减1,问n最少进行几次操作可以得到m。如果n>m显然答案是n-m。如果n那么当m为奇数我们可以让它+1,当m为偶数我们可以让他/2,知道m小于n,那么我们再加上(n-m)就是我们要求的答案。#include #include #include #include #include using namespace std;struct n原创 2017-11-27 19:08:11 · 176 阅读 · 0 评论 -
UVALive - 4123 Glenbow Museum
题意:O代表90度,R代表270度,给你一个n问你存在多少长度为n的串,串可以组成一个封闭的多边形。如n=4时序列只能是OOOO,即一个四边形。当n=6时满足题意的序列有RRRRRO,RRRROR,RRRORR,RRORRR,RORRRR,ORRRRR.思路:再看了好多题解加一晚上时间的理解后写了一些自己的理解通过观察我们可的R的数量总比O多4个。那么最多有4对RR,且没有原创 2017-12-21 22:14:32 · 192 阅读 · 0 评论 -
Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
D. Almost Differencetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet's denote a functionYou are原创 2017-12-13 13:02:40 · 170 阅读 · 0 评论 -
LightOJ - 1116 (唯一分解定理)
题意:给一个w,然后分为n*m形式,n为奇数,m为偶数,问你是否有解,如果有解,输出的答案m尽可能小。如果w是奇数肯定无解,因为偶数*奇数只能得到偶数。当w为偶数时,根据唯一分解定理,它的偶数质因子只有2,我们只要找到2的个数,然后全给m,剩下的全给n即可。#include #include #include using namespace std;typedef原创 2018-02-02 15:03:59 · 184 阅读 · 0 评论