随笔分类 -  算法竞赛进阶指南

摘要:题目链接 题意:给一张n*m的方格纸,两个人轮流随意按某一行或某一列减,1张纸减完后变两张都可以被选择,看谁捡到剩下1*1就赢了。 思路:对于任何一个人,都不会先剪出1*n或者n*1,应该这样就必败了。mex求出不属于集合的最小整数,纸片的SG值是后者的纸片的SG的异或值。 #include<cst 阅读全文
posted @ 2019-08-12 08:55 Ldler 阅读(233) 评论(0) 推荐(0)
摘要:题目链接 题意:求n个整数任意取一个区间,一起进行xor,and,或or的操作,求xor的期望值,and的期望值,or的期望值。 思路:区间取的左端点为l,右端点为r,当r==l时,选的概率为1/n/n,而r!=l时,选的概率为2/n/n。 然后因为进行二进制操作,所以枚举整数的每个二进制位。三个操 阅读全文
posted @ 2019-08-10 20:58 Ldler 阅读(209) 评论(0) 推荐(0)
摘要:题目链接 题意:求G^M mod P,M=∑ i|N C(N,i),P=999911659。 思路:G^M mod P = G^(M mod (P-1) ) ( G != P),所以只要得出 M mod (P-1) 即可用快速幂求出答案 N的约数可以在√n的时间内求出,所以问题转化为求C(N,i) 阅读全文
posted @ 2019-08-10 19:59 Ldler 阅读(166) 评论(0) 推荐(0)
摘要:题目链接 题意:给一个有向无环图,起点是1,终点为n,选择每一条边的概率一样,求起点到终点的所经过的路径的期望长度。 思路:设f[x]表示从节点x走到终点所经过的路径的期望长度,若从x出发有k条边,分别到达y1,y2...yk,边长为z1,z2...zk, 所以根据数学期望的定义和性质,有:f[x] 阅读全文
posted @ 2019-08-10 19:14 Ldler 阅读(193) 评论(0) 推荐(0)
摘要:题目链接 题意:拍卖一件物品,有n个竞标,一个人可以有多个竞标。给出n个竞标,a[i],b[i].a[i]表示人的序号,b[i]表示竞标价格。接下来有q个询问,每次一个k,之后k个数表示该序号的人缺席。问谁最终以多少钱得标。如果没有输出0 0,否则输出序号和价钱。 思路:按竞标价格排个序 然后删除那 阅读全文
posted @ 2019-08-10 09:33 Ldler 阅读(150) 评论(0) 推荐(0)
摘要:题目链接 题意:给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m项的系数。 思路:系数是 C(n,k)*a^n*b^m a^n和b^m用快速幂求,然后求组合数有两种思路。 因为k只有1000,所以杨辉三角打表 #include<cstdio> #include<cstring> # 阅读全文
posted @ 2019-08-09 18:14 Ldler 阅读(524) 评论(0) 推荐(0)
摘要:题目链接 题意:给出求在n维坐标系中,到n+1个点距离都相同的点。 思路:我们不妨设n维球心的坐标为(x1,x2,x3,...,xn),那么我们可以用第一个点和剩余的n个点建立方程得到距离相等的式子,然后高斯消元即可解出球心坐标。以三维空间为例,令读入的第一个点坐标为(a,b,c),第二个点为(a1 阅读全文
posted @ 2019-08-06 21:22 Ldler 阅读(303) 评论(0) 推荐(0)
摘要:题目链接 题意:给定整数n,求Fib[n]mod10000。0≤n≤2∗10^9 思路:[fn,fn+1]=[fn-1,fn]*[{0,1},{1,1}];递推一下就得到 [fn,fn+1]=[0,1]*([{0,1},{1,1}]^n)。 故用矩阵快速幂去求。 #include<cstdio> # 阅读全文
posted @ 2019-08-06 15:15 Ldler 阅读(209) 评论(0) 推荐(0)
摘要:题目链接 题意:给定2n个整数a1,a2,…,ana1,a2,…,an和m1,m2,…,mnm1,m2,…,mn,求一个最小的非负整数x,满足∀i∈[1,n],x≡mi(mod ai)∀i∈[1,n],x≡mi(mod ai)。 思路:道题需要用到扩展欧几里德算法合并模线性方程组。由于这个题中所有的 阅读全文
posted @ 2019-08-05 22:30 Ldler 阅读(274) 评论(0) 推荐(0)
摘要:题目链接 题意:求满足a*x≡1(mod b)的最小整数x。 思路:由线性同余方程的基本性质,ax≡1(modb)ax≡1(modb)当且仅当gcd(a, b) = 1时才有解。由Bézout定理,有ax+by=1ax+by=1,可以先利用扩展欧几里得算法求出一组特解x0,y0x0,y0,然后通过取 阅读全文
posted @ 2019-08-05 22:12 Ldler 阅读(295) 评论(0) 推荐(0)
摘要:题目链接 题意:求a^b的所有约数之和mod9901。 思路:因为一个数A能够表示成多个素数的幂相乘的形式。即A=(a1^n1)*(a2^n2)*(a3^n3)...(am^nm)。所以这个题就是要求 (1+a1+a1^2+...a1^n1)*(1+a2+a2^2+...a2^n2)*(1+a3+a 阅读全文
posted @ 2019-08-05 21:42 Ldler 阅读(161) 评论(0) 推荐(0)
摘要:题目链接 题意:给一个数L,问至少多少个8连在一起组成的正整数是L的倍数。 思路:x个8一起组成的正整数可表示为8*(10^x-1)/9。然后满足L|8*(10^x-1)/9。等价于10^x=1(mod9*L/d),d=gcd(L,8)。 所以我们只需要枚举phi[9*L/d]的约数就行了,看能否满 阅读全文
posted @ 2019-08-05 20:59 Ldler 阅读(425) 评论(0) 推荐(0)
摘要:题目链接 题意:给个N*N的矩形点,求在原点看去能看到多少个点 思路:除了(1,0),(0,1),(1,1)外其他点的xy都互质。所以求欧拉函数。fhi[i]从2加到n,再是两倍,再加3。 #include<cstdio> #include<cstring> #include<algorithm> 阅读全文
posted @ 2019-08-04 21:35 Ldler 阅读(149) 评论(0) 推荐(0)
摘要:题目链接 题解:求一个1到n以内的数,使得这个数有最多的约数。如果有多解,只找最小的那个 因为要严格满足对于任意1<=i<=n,有g(x) > g(i),所以如果有g(i)=g(j)且i<=j,那么i是符合题意的,但是j是不符合的。因为g(j)>g(i)不满足 至于一个数的约数个数,把它分解质因数, 阅读全文
posted @ 2019-08-04 21:29 Ldler 阅读(267) 评论(0) 推荐(0)
摘要:题目链接 题意:有八种操作棋盘进行移动,使得中间8个数字一样,问·最短移动步数及如何移动。 思路:dfs,因为当中间八个数字中有m个数字不同时,至少需要m次操作,将这个m作为估值。 阅读全文
posted @ 2019-08-03 21:00 Ldler 阅读(185) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n个物品体积,你用k个相同体积的篮子去装,不能装超过篮子的体积,求篮子体积的最小值 思路:其因为数都是1000,令sum为物体总体积,maxV为物体体积最大值,所以其篮子体积下界为max((int)ceil(sum/k),maxV),而上界就是ceil(sum/k)+maxV然后 阅读全文
posted @ 2019-08-03 19:22 Ldler 阅读(241) 评论(0) 推荐(0)
摘要:题目链接 题意:给你一个图以及起点和终点,求起点到终点的第k短路的大小。 思路:先用迪杰斯特拉求出每个点到终点的最短路,然后用A*算法,令f(x)为每点到终点的距离,将f(x)附加到每条边的边权上,再利用优先队列对最小的进行扩展,直接暴力搜相邻边,则第k个从优先队列中出来的就是正解。思路很明了,代码 阅读全文
posted @ 2019-08-03 18:55 Ldler 阅读(354) 评论(0) 推荐(0)
摘要:题目链接 题意:就是求每个点到最近的1的距离,但距离是|xi-x|+|yi-y|。 思路:将每个是1的点BFS全图,想到了就是很水的BFS。 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #includ 阅读全文
posted @ 2019-08-02 21:59 Ldler 阅读(315) 评论(0) 推荐(0)
摘要:题目链接 题意:给你n个礼物重量,给你一个M力量,看你一次性搬动不超过M的礼物重量。 思路:看似背包,但M太大。所以要用DFS,但n也有45,所以考虑双向DFS先搜前半部分满足情况的所有重量,然后去重,再往后半部分搜索,并二分找答案。 #include<cstdio> #include<cstrin 阅读全文
posted @ 2019-08-02 21:49 Ldler 阅读(225) 评论(0) 推荐(0)
摘要:题目链接 题意:给你蛋糕的总体积和有几层,且蛋糕满足从低到高一层比一层的面积小,高度低。求最小的外表面积。 思路:因为求外表面积,实际上就是求每一层的侧面积+最底层的上表面积。然后可以算出最小的每层面积,便于剪枝,然后从下往上DFS,不断枚举高度和半径就可以解决问题。 #include<cstdio 阅读全文
posted @ 2019-08-01 20:59 Ldler 阅读(277) 评论(0) 推荐(0)