数学
yzyyylx
这个作者很懒,什么都没留下…
展开
-
国王游戏证明
假设我们现在已经有了一个顺序,大臣左手的数字为A[1]A[1]A[1] ~ A[n]A[n]A[n],右手的数字为B[1]B[1]B[1] ~ B[n]B[n]B[n],国王则为A[0],B[0]A[0],B[0]A[0],B[0]现在我们交换位置为i,i+1i,i+1i,i+1两位大臣之间的位置交换前,两人的收益分别为1B[i]∏j=0i−1A[j]\frac{1}{B[i]}{\prod_{j=0}^{i-1}A[j]}B[i]1∏j=0i−1A[j]和A[i]B[i+1]∏j=0i−1A[j]原创 2022-03-17 23:39:31 · 213 阅读 · 0 评论 -
CodeForces - 1043F Make It One
题面题意给出一串数,求在其中至少选择几个数才能使它们的gcd为1.数字个数和值域均小于等于300000做法首先因为每个数都小于等于300000,而2∗3∗5∗7∗11∗13∗17>3000002*3*5*7*11*13*17>3000002∗3∗5∗7∗11∗13∗17>300000,所以答案至多为7.因此我们可以考虑暴力枚举答案,在判断此时的答案是否...原创 2018-11-02 15:52:28 · 314 阅读 · 2 评论 -
BZOJ 4318 OSU!
题面题意给出一串数,每个数字有a[i]的贡献是’O’,这串数字的分数定义为每一段连续的O的长度的立方和,OXXOO的分数就是13+23=9,求期望分数。做法我的做法是考虑以每一个数为该段最后一个数产生的贡献,dp时记三个数a,b,c分别表示这个数是O时,此时最后一段的长度,长度的平方,长度的立方的期望,转移时只要根据下面两式即可。(x+1)2=x2+2∗x+1(x+1)^2=x^2+2*...原创 2018-10-19 18:53:13 · 537 阅读 · 0 评论 -
CodeForces - 559C Gerald and Giant Chess
题面题意有一个m*n的棋盘,其中有k个黑点,问从左上角向右下角走,每次只能向右或向下走,问有几种不经过黑点的走法。做法首先因为n*m很大,而k较小,因此从k开始考虑算法,首先可以发现从(a,b)->(c,d)只向右或向下的走法一共有C(b+d-a-c,b-a)种,然后考虑减去经过黑点的情况。对于这类题目我们不用根据一共经过哪些黑点来考虑,而是可以考虑第一个经过的黑点是哪一个来分类,...原创 2018-09-28 15:10:30 · 165 阅读 · 0 评论 -
UVA - 12304 2D Geometry 110 in 1!
题面题意计算几何模板题,一共有六种操作:1.给出三个点,求它们的外接圆。2.给出三个点,求它们的内切圆。3.给出一个点个一个圆,求过这个点且与圆相切的直线与X轴的夹角。4.给出一给点,一条线和r,求半径为r且与这条直线相切并过这个点的圆的圆心坐标。5.给出两条直线和r,求半径为r且同时与这两条直线相切的圆的圆心坐标。6.给出两个圆和r,求半径为r且同时与这两个圆相切的圆的圆心坐标。...原创 2018-09-27 21:53:09 · 232 阅读 · 0 评论 -
Codeforces 388D Fox and Perfect Sets
题面题意一个集合如果是完美的,则集合如果包含a,b,那么a^b也一定在这个集合内,求所有最大数小于等于n的集合数量。做法对于完美集合,我们可以发现一个线性基一定对应一个合法的完美集合,因此我们可以对线性基进行数位dp,因为一个完美集合可以对应多种线性基,所以可以通过高斯消元使其唯一,也就是说,对于一个经过高斯消元的线性基的每一位,如果它是某个基的最高位,则只有那一个基的这一位为1,反之任何...原创 2018-09-27 09:44:54 · 769 阅读 · 0 评论 -
[ZJOI2009]多米诺骨牌
题面题意给出一张矩形表格,一些地方有障碍物,向其中放1*2的多米诺骨牌(不用填满),要求任何相邻两行之间都有至少一个骨牌横跨,任何相邻两列之间也都至少有一个骨牌横跨,求方案数。做法为方便,用S(i,j,p,q)表示左上角为(i,j),右上角为(p,q)的子矩形 首先用dp预处理出dp[i][j][p][q]表示S(i,j,p,q)随意放骨牌的方案数(不考虑行列有无横跨),...原创 2018-09-02 18:36:47 · 950 阅读 · 0 评论 -
AtCoder 2170 Pushing Balls
题面题意平面上有n+1个洞,洞两两之间有一个球,第i个球到左边的洞的距离为((i*2-2)*x+d),第i个球到右边的洞的距离为(i*2-1)*x+d,每次随机选择一个不在洞中的球,再随机选择一个方向推动,球将会进入这个方向上距离它最近的没有球的洞(洞里如果有球将会跳过这个洞继续滚动)。 现在求所有球进洞后,球滚动的期望总距离。做法首先球到的洞的距离是一个等差数列:d,d...原创 2018-08-07 16:28:41 · 244 阅读 · 1 评论 -
CodeForces 193E Fibonacci Number
题面题意给出一个数n,问是否存在一个斐波那契数mod1e13后等于n,若不存在输出-1,否则输出它是第几个。做法首先找一下规律,发现斐波那契数在模10,100,1000,1000……下的循环节大小分别为60,300,1500,15000,150000…….并且发现后来的循环节大小每次*10。 因此我们可以考虑先暴力求出模1e5(这个范围定为1e3,1e4也行)下与给出数同...原创 2018-08-07 09:25:28 · 442 阅读 · 0 评论 -
HDU 4624 Endless Spin
题面题意给出一排球,初始全为白色,每次随机选择一段区间染黑,全黑时停止操作,问操作的期望次数。做法首先设pi表示i次完成的期望,这样答案就是1*p1+2*p2+3*p3………… 也就等于(p1+p2+p3………)+(p2+p3………)+(p3………)……. 令qi表示i次未全部染黑的期望次数,那么qi=p(i+1)+p(i+2)………………….. 因此答案就可以转化为...原创 2018-08-09 08:02:22 · 431 阅读 · 0 评论 -
codeforces 236D - Let's Play Osu!
题面题意给出n个数,每个数为1的概率为pi,否则为0,最后的和定义为连续的1构成的序列长度的平方和,求和的期望。做法为方便讲述,定义P(i,j)=p[i]*p[i+1]……*p[j-1]*p[j]. 首先可以考虑每一个长度的贡献,这样区间(i,j)对答案的贡献为P(i,j) * (1-p[i-1]) * (1-p[j+1]),可以发现这样枚举区间的复杂度为O(n^2),而且因...原创 2018-07-30 14:47:25 · 3764 阅读 · 0 评论 -
codeforces24D. Broken robot
题面题意在n*m的棋盘中有一个机器人在(x,y),每个时刻它会等概率地从不动,向左走,向右走,向下走四种操作中选择一种,但不能走出边界,在边界的机器人的选择数量将变少,问机器人走到最后一行的期望步数是多少。做法如果直接进行dp会发现有后效性,因为机器人可以向左也可以向右,但是在行与行之间的转移是没有后效性的,因此可以记dp值表示该点走到最后一行的期望步数,最后一行的dp值为0,然后逐行向上...原创 2018-11-07 21:19:33 · 335 阅读 · 0 评论 -
UOJ #351. 新年的叶子
题面题意给出一棵树,每次随机选择一个叶子节点(可以重复选),将其染黑,问树上不经过黑点的最长链变短的期望染色次数是多少。做法这题的主要思路是用总代价除以总方案数。树的直径有一个或两个必经点,当直径长度为奇数时,直径的中点即为必经点,可以将有希望成为直径上的叶子节点根据它属于必经点的哪棵子树进行分类,得到多个叶子集合,若直径长度为偶数,则有一条必经边,根据边将有可能成为直径上的叶子结点分成...原创 2018-11-05 17:50:28 · 295 阅读 · 0 评论 -
codeforces954I Yet Another String Matching Problem
题面题意定义一种对字符串的操作为将某种字符全部替换为另一种字符,定义两个字符串之间的距离为让两个串相同的最少操作次数.现给出两个字符串S,T,求S的每个长度为∣|∣T∣|∣的子串与T之间的距离.做法首先转化一下两个字符串a,b之间的距离,若a[i]=u,b[i]=va[i]=u,b[i]=va[i]=u,b[i]=v,则可以由u向v连一条边,这样最后所有联通块的大小减一之和即为答案.现...原创 2019-04-18 08:42:32 · 319 阅读 · 0 评论 -
[CQOI2012]局部极小值
题面题意将1,2,3…,m*n填入一个m∗nm*nm∗n的矩阵,要求一些位置满足比周围八个数都小,且其他位置不满足,则一共有几种方案.做法首先不考虑"其他位置不满足"这个要求,因为数据范围很小,因此最多有8个位置符合条件,可以状压dp.考虑将m∗nm*nm∗n个数从小到大依次填入矩阵,用dp[i][j]dp[i][j]dp[i][j]表示当前要求位置填的数的状态为i,其他位置一共填了j个的...原创 2019-04-15 10:20:53 · 457 阅读 · 0 评论 -
codeforces1153F Serval and Bonus Problem
题面题意在一条线段上随机放n个线段,则被至少k条线段覆盖的区间总长度期望为多少.做法首先可以发现这n个线段的2∗n2*n2∗n个端点期望把线段等分为2∗n+12*n+12∗n+1段,那么只要计算每一段的贡献即可.这个可以用dp求出每段区间被大于等于k条线段覆盖的方案数,再除以总方案数,即可得到每段区间对答案的贡献,然后就能统计答案了.代码#include<bits/stdc++....原创 2019-04-15 08:37:28 · 432 阅读 · 0 评论 -
codeforces1119H Triple
题面题意给出三个数x,y,z,再给出n组数,每组数包含(x+y+z)个数,x个a,y个b,z个c,那么从每一组数中选择一个数的异或值为t的方案数是多少,对每个t输出答案,a,b,c均小于(1<<m).做法首先考虑一个简单的暴力,对每组数进行一次fwt,然后全部乘起来,时间复杂度为O(2m∗m∗n)O(2^m*m*n)O(2m∗m∗n),肯定不行.对于一组数a,b,c,可以考虑...原创 2019-04-14 22:18:52 · 409 阅读 · 0 评论 -
[ZJOI2019]麻将
题面题意共有n种麻将牌,给出一开始的13张麻将牌,问期望摸上来几张牌后,与开始的13张牌组合后存在一个大小为14的能和的子集.做法因为要求期望的摸牌次数,我们可以将这个次数转化为∑i=134∗np(i),p(i)\sum_{i=13}^{4*n}p(i),p(i)∑i=134∗np(i),p(i)表示总共有i张牌后仍然没和的概率,而p(i)=cnt(i)/A4∗n−13i−13,cnt(...原创 2019-04-11 07:41:10 · 500 阅读 · 1 评论 -
codeforces528E Triangles 3000
题面题意在平面上有n条直线,随机选择三条,其面积的期望大小是多少。做法很显然,面积的期望要转化为所有三角形的面积和除以(n3)n\choose3(3n),考虑计算三角形的面积和。可以把三角形ABC的面积转化为(OA×OB+OB×OC+OC×OA)/2,这样只要分别计算这几个叉积的和即可。经过观察不难发现,如果OA,OB的叉积会被计算,当且仅当A,B两点都在某条给出的直线上 ,因此我们...原创 2019-03-03 20:29:24 · 457 阅读 · 0 评论 -
codeforces516E Drazil and His Happy Friends
题面题意有n个男孩,m个女孩,他们中有些人高兴,其他人不高兴,第iii天,第imod&ThinSpace;&ThinSpace;ni\mod nimodn个男孩会和第imod&ThinSpace;&ThinSpace;mi\mod mimodm个女孩约会,若两人中有一个人高兴,则两个人都会高兴,则至少几天后,所有人都会高兴。做法首先可以将所有人根据模gcd...原创 2019-03-01 17:53:38 · 373 阅读 · 0 评论 -
codeforces1098E Fedya the Potter
题面题意给出一个长度为n的序列a,将它的所有子区间的gcd计算出来并存入数组b(长度为n∗(n+1)/2n*(n+1)/2n∗(n+1)/2),并将b区间排序,然后将数组b的所有子区间的和计算出来存入数组c,问数组c的中位数是多少。做法首先因为数组a中的所有数都小于等于100000,因此gcd的数字种类也在这个范围内,对数组a可以用倍增求出每个数字作为gcd的次数。然后考虑二分答案,可以...原创 2019-02-24 20:52:39 · 476 阅读 · 0 评论 -
codeforces633H Fibonacci-ish II
题面题意给出n个数,每次询问给出l,r,询问把[l,r][l,r][l,r]这段数排序去重后,求第i个数乘上斐波那契数列的第i项的和。做法这题需要一个公式Fi−1∗Fk+Fi∗Fk+1=Fk+iF_{i-1}*F_k+F_i*F_{k+1}=F_{k+i}Fi−1∗Fk+Fi∗Fk+1=Fk+i发现利用这个公式,可以推得∑i=1nnumi∗Fi+t−1∗Fk+∑i=1nnum...原创 2019-02-27 15:45:44 · 182 阅读 · 0 评论 -
codeforces 886F Symmetric Projections
题面题意在一个二维平面上有n个点,问有几条过原点的直线,使n个在直线上的投影中心对称。做法首先发现这条直线是否合法仅与它的斜率有关,然后发现这条直线必过这n个点的重心,因此,关于重心中心对称的点对可以直接去掉(它们在任何过重心的直线下中心对称),然后我们可以暴力枚举每个点与那个点对称,确定一对即可得到一条直线,可以暴力枚举n2n^2n2组点对,这样一条合法直线至少被得到n2\frac{n}...原创 2018-11-05 21:24:19 · 218 阅读 · 0 评论 -
HDU - 4626 Jinkeloid
题面题意每组数据给出一个字符串(仅包含前20个字符),多次询问,每次询问给出k(k<=5)个字符,问给出的字符串中有几个子串含给出的字符都是偶数个(包括0)。做法因为一共只有20种字符,所以考虑状压,但若直接暴力dp求出每种情况的子串数,复杂度为O(|s|*2^20),显然会T。 可以将问题先转换一下,先状压前缀,每个字符串都可以看做是从前缀中选出两个不同位置上的数Xo...原创 2018-07-26 09:41:50 · 579 阅读 · 0 评论 -
CodeChef - WRKWAYS
题面题意有n位工人,每位工人都只工作一天,一天只能有一个工人在工作,每个工人有一条死线,经过那一天后将不能再工作,请给出一组死线,使让每一个工人都工作的方法数为c。如有多种方案,输出所有工人死线的最大值最小的那个。做法由题易知:c=π(1~n)(d[i]-i+1),d[i]<=d[i+1]. 因此可以发现的d[n]做出的贡献不一定是最大的(样例就体现了这一点),也可...原创 2018-07-06 15:57:04 · 972 阅读 · 0 评论 -
洛谷 P4454 [CQOI2018]破解D-H协议
题面题意给出四个数g,p,A,B,其中有a,b满足g^a%p=A,g^b%p=B.求g^(a*b)%p.做法首先a,b< p,可以发现只要求出a,b中的任意一个值即可得到答案,但如果暴力枚举a的话复杂度为O(p),显然过不了. 可以考虑分块,令k=sqrt(p),那么就可以得到如下等式: a=u*p+v(u,v<=k) 所以g^(u *p) *g^v=A 移项得g^(u *p)=A *Inv原创 2018-04-17 18:55:35 · 384 阅读 · 0 评论 -
莫比乌斯反演
作用 用于简化一些运算,针对满足的函数的问题.引入 可以发现,若满足以上结论,则: F(1)=f(1) F(2)=f(1)+f(2) F(3)=f(1)+ f(3) F(4)=f(1)+f(2)+f(4) F(5)=f(1)+f(5) F(6)=f(1)+f(2)+f(3)+f(6) F(7)=f(1)+f(7) F(8)=f(1)+f(2)原创 2018-01-21 20:49:06 · 295 阅读 · 1 评论 -
Find a multiple POJ - 2356
题面题意 给出n个数,是否可以选出一些数使它们的和为n的倍数,能则输出方案,反之输出0.方法 这题一开始只想到n^2的搜索,TLE了. 看了题解之后发现可以用抽屉原理证明一定存在一个解是一些连续的数. 因为一共n个前缀和,它们对n取模一定存在两个相同或是为0. 如果为0,输出这个前缀. 如果有两个相同,则输出它们中间的这段数.代码#include<iostream原创 2018-02-07 21:22:02 · 239 阅读 · 0 评论 -
乘法逆元
解释在两个数1/a,b modE的情况下,若两数同余.则b为a的逆元性质若a,b互为逆元,则k/a与k*b同余 并且当mod的数p为质数时,a与a^(p-2)互为逆元(费马定理),下为示例: 要求:(3/2)%5 2^(5-2)=8,8%5=3,故2和3互为逆元 (3/2)%5=(3*3)%5=4. 验证:4%5=4 -&gt; (8/2)%5=4 -&gt;(3/2)%5=...原创 2017-10-21 15:36:26 · 458 阅读 · 0 评论 -
洛谷 P3630 [APIO2010]信号覆盖
题面题意 给出n个点(没有三点共线),取三个点做它们的外接圆,问所有取法中覆盖的点的平均个数是多少.方法 考虑每一个四边形对答案的贡献值(除了取的三个点外的覆盖点),每个凹四边形的贡献值为1,因为只有取最外面的三点才能多覆盖一个,而凸四边形的贡献值为2,因为有一对对角之和小于180,另一对对角大于180. 之后问题就被转化为了求所有组成的四边形的凹四边形的个数. 求凹四边形原创 2018-01-12 18:50:40 · 279 阅读 · 0 评论 -
洛谷 P2533 [AHOI2012]信号塔 (最小圆覆盖)
题面题意 给出n个点,输出最小覆盖圆的坐标和半径做法 首先用random_shuffle随机化点的顺序,然后做以下操作: 1.枚举所有点(设为i从2到n),若有点在当前圆外(一开始的圆为第一个点,半径为0),则将圆心变为这个点,半径改为0,进入2. 2.枚举已经考虑过的点(设为j从1到i-1),若有点在当前圆外,将圆心变为i,j两点的中点,半径为两点距离的一半. 3.枚举原创 2018-01-12 10:19:16 · 444 阅读 · 0 评论 -
LightOJ 1060 - nth Permutation
题面题意 给出一个字符串,和整数n,输出这个字符串的第n个全排列.方法 考虑到由小写字母组成,共26个,可求出每一种字符的个数 一个字符一个字符来求,枚举当前位,用组合数求出此时后面排列的种类数,若比n大,再找下一位,反之,枚举下一位,若枚举完了仍没有符合条件的,则不可能代码#include<bits/stdc++.h>#define ll long longusing nam原创 2017-10-25 09:53:29 · 277 阅读 · 0 评论 -
POJ2891 Strange Way to Express Integers
题面题意 给出n对数,每对数为k1,r1,已知m%k1=r1,求m.方法欧扩 在输入时,不断改变m的值使它符合条件,为使m也符合之前的条件,故只能加前面所有k的最小公倍数,顾可得如下方程: ki*x+ri=m(之前)+gcd(k[i-1]……..k[1]) *y. 移项后得ki*x-gcd(….) *y=m-ri. 此方程可用欧扩来解代码#include<iostrea原创 2017-11-01 07:48:45 · 301 阅读 · 0 评论 -
Solutions to an Equation LightOJ - 1306
题面题意 Ax + By + C = 0,给出A,B,C和x1,x2,y1,y2,其中x1<=x<=x2且y1<=y<=y2,那么该方程一共有几组整数解方法欧扩 一开始先特判a,b中有0的情况 难点之一在于a,b可以为负数,故在进行一系列操作之前先将符号存起来,因为符号不影响数值的绝对值大小,为了更加方便,可以先算出一组解的绝对值,再枚举4种符号匹配方式,找到使等式成立的哪一种情况.原创 2017-10-31 18:00:23 · 365 阅读 · 0 评论 -
约瑟夫环问题的简单解法(数学公式法)
关于约瑟夫环问题,无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们注意到原问题仅仅是要求出最后的胜利者的序号,而不是要读者模拟整个过程。因此如果要追求效率,就要打破常规,实施一点数学策略。为了讨论方便,先把问题稍微改变一下,并不影响原意: 问题描述转载 2017-11-07 22:22:54 · 9966 阅读 · 0 评论 -
洛谷 P4455 [CQOI2018]社交网络(矩阵树定理,求行列式)
题面题意给出一个DAG,求以1为根的生成树的个数.做法这题的关键是要知道矩阵树定理,就是说对于一幅图,构造出其邻接矩阵和入度矩阵(对角线上为每个点的入度),并用入度矩阵减去邻接矩阵得到的矩阵的行列式即为答案. 矩阵的行列式就是对于所有种每行每列各选取一个元素的积的和,具体而言,对于三阶矩阵a,其行列式为: a[1][1]*a[2][2]*a[3][3]+ a[1][1]*a[2][3]*a[3原创 2018-04-17 19:17:30 · 1140 阅读 · 0 评论 -
初赛复习3
题目 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图1有5个不同的独立集(1个双点集合、3个单点集合、1个空集),图2有14个不同的独立集。那么,图3有___个不同的独立集。 方法 用树形dp的思想,分解问题,考虑一个点选择与不选两种情况,用f(表示选择该节点),g(表示不选该节点)两数组来记录 故(括号内为树的大小): f(2)=1; g(2)=原创 2017-10-13 15:03:15 · 888 阅读 · 0 评论 -
TopCoder SRM 616 DIV1 ColorfulCoins TopCoder - 13061
题面题意有n种硬币,每种硬币的颜色不同,你想要知道每种硬币的颜色,而且你不知道一共有哪些颜色。 你知道硬币的币值,而且任意两个硬币的币值都有倍数关系。 你可以向一个取款机取任意金额,它会给你最少的硬币数量,问你至少要取几次钱才能知道每种硬币的颜色。做法首先要找到最优的查找方案。 要想去区分两种硬币,只能通过硬币的数量,因为可以取多次,所以每次取某种硬币的数量可以不同。...原创 2018-07-12 14:34:24 · 304 阅读 · 0 评论 -
51Nod - 1421 最大MOD值
题面题意给出n个数,求其中选择两个数,较大的数模较小的数的最大值。做法一开始想到的算法很奇怪,对于a求它模那个数的值最大,将小于a的数小于等于它的最大倍数放到set中,然后在增大a的同时,不断更新set中的数字的值,然后不断取最大值即可。 时间复杂度好像最劣是O(n*log(n)^2).代码#include<iostream>#include<...原创 2018-07-12 11:32:53 · 378 阅读 · 0 评论 -
CodeForces - 869C The Intriguing Obsession
题面题意给出3个区域,每个区域分别有a,b,c个岛屿,要求在其中架任意座桥(包括0),并且满足: 1:同一个区的两个岛之间不连通或者连通且最短距离不小于3 2:每一座桥的距离假设都为1 问,一共有几种架桥方案。做法首先可以发现有两种方案是不合法的。 1:一个区域内的两个岛屿之间架桥。 2:一个岛屿向同一区域的两个岛架桥。 然后我们可以发现三个区域之间两两架桥的方案数...原创 2018-07-11 19:06:51 · 283 阅读 · 0 评论