数论
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
-
牛牛的粉丝【循环矩阵】
题目链接【牛客练习赛68】比赛的时候用了一个的做法来解决这个问题,显然是TLE的,显然的,我们没有发现矩阵中隐含的条件。当我们把这个矩阵列写下来的时候,会发现以第一行为初始的,后面一行相当于前一行右移一位,每一行都具有这样的信息,所以可以将第i行,第j列第值看作是,当然,这里的是要取模N的。 所以,我们不妨只用维护一行的信息,就可以完整的表述所有的信息了,时间复杂度就可以降了一个N。#include <iostream>#include <cstdio>#in.原创 2020-08-29 10:20:45 · 175 阅读 · 0 评论 -
Two Divisors【GCD数论】
You are givennnintegersa1,a2,…,ana1,a2,…,an.For eachaiaifind itstwo divisorsd1>1d1>1andd2>1d2>1such thatgcd(d1+d2,ai)=1gcd(d1+d2,ai)=1(wheregcd(a,b)gcd(a,b)is the greatest common divisor ofaaandbb) or say that there is no suc...原创 2020-06-18 10:46:55 · 521 阅读 · 0 评论 -
#525. 【美团杯2020】平行四边形【原根】
题目链接 既然x和y都是排列的话,我们不妨让x先升序从1~n如此输出,这样只用管y了。如果在不要求退化平行四边形的时候,我们可以用1, n, 2, n-1, 3,……这样的不断的两边互取的方式来完成,但是本题却要求求一个同时还要不满足退化的平行四边形的。 于是这里引入了原根的思想,什么是原根,就是一个可以保证、、、……、他们(%p)之后,是1~p-1的排列,这p-1个元素互不相同,这题由于n+1是个质数,所以我们只需要对n+1取求一个原根就可以了。 快速求原根的方式:从2到p-1进行枚举,...原创 2020-05-19 23:06:43 · 368 阅读 · 0 评论 -
除法分块
题目链接 [CQOI2007]余数求和首先,题目让我们求这样一个东西:然后,取模操作,可以看成对原式进行化简,可以得到其中可以O(1)的求解得到。然后就到了求解我们都知道一个数,在做整除取整操作的时候,是有很多重复的值的,譬如说到最后,就有很多个“1”是一个道理。所以,用到一个知识点叫做“除法分块”。除法分块的要求,就是对于所有除得值为相同的元素,就要一起处理了,譬...原创 2020-04-07 13:39:22 · 506 阅读 · 0 评论 -
treecnt【组合数学】
题目链接 51nod 1677 treecnt 这道题被划在了树形dp的框架下,但我更认为是一个组合数学的思维好题,比较容易的想到一点是我们需要求每条边的贡献次数,这个看上去比较的好求,最后总的贡献次数求和就是最后的答案了,别忘了取模。那么,简单的看,每条边的贡献是这样的:那么,这条边的两边各自都要取至少一个点,但是这样的做法的时间复杂度是O(N * K)的,要是心大一点,可以试...原创 2020-04-03 23:05:05 · 210 阅读 · 0 评论 -
【TJOI2015】线性代数【最大流最小割+推导过程】
题目链接 线性代数 LibreOJ - 2100首先,A矩阵*B矩阵 - C矩阵,我们会得到一个1*N的行列式,每一项是:然后再乘以A的转置行列式,最后我们可以得到的是,我们所求的就是于是,又知道非0即1,所以就是取或者不取的问题了,又有i、j同时取这个问题,我们必须要解决,于是这里可以利用的性质来解决了。我们想要这个式子的答案最大,于是,可以利用最小割(最大流)来求解。对...原创 2020-02-25 22:57:18 · 232 阅读 · 0 评论 -
6 μ's的影响力【数论 矩阵快速幂 费马小定理】【2020牛客寒假算法基础集训营1】
很多人看不到题目呀,那我拍一下。实际上,这道题我们很容易推出它的矩阵快速幂形式。其实就是x、y、分别的幂了。然后,就是维护对应的幂了,这时候,我们需要考虑特殊情况。也就是在这里“”这是一个很重要的性质!因为作为底数的0,实际上是被取模之后的0,而上面的作为指数的0,一定是不真正为0的,所以他们的幂次数一定是为0的!而我们正常的快速幂都是无法判断的,所以,最后我们需要加上一组特判...原创 2020-02-04 18:59:18 · 373 阅读 · 0 评论 -
The Football Season【Codeforces 1244 C】【数学】
Codeforces Round #592 (Div. 2) C 就是解决两个方程,然后,结束HACK之后,只有不到一半的(原来A的)人过了这道题。 具体错在哪了呢?就是因为没有判断此时的x和y是否是非负数,毕竟胜负或者是平局都不可能是负数的。 具体思路呢: 我们,首先可以假定最大的x,也就是,但是我们不能保证此时的y是个整数,那么怎么办呢?我们可以不断的给x减去1...原创 2019-10-13 21:45:58 · 397 阅读 · 12 评论 -
REQ 【CodeForces - 594D】【树状数组+离线查询+区间思维】
题目链接 很好的一道题,昨晚上推的,今天由于代码能力太弱敲了半天,再不断的找到自己思维的BUG,于是RE了一发、T了一发、WA了一发,就Ac了,还不错,那我们来讲解一下题目的思路。 我们知道对于一个值的欧拉函数值,就是它的值去乘上它所有的质数-1除以质数:如果设某数的质数为p,那么其欧拉值就等于原值*(p-1)/p,其中,我们的“/p”操作得用逆元来解,所以剩下的就是怎么处理保存区间中...原创 2018-12-04 19:00:20 · 459 阅读 · 0 评论 -
播放列表【容斥定理】
小Hi的手机中存着N首他喜爱的歌曲。现在小Hi希望制作一个长度为L的播放列表,满足1. 每一首歌至少播放一编2. 同一首歌不能连续播放,之间至少间隔一首其他歌曲请你计算一共有多少种不同的播放列表满足条件?由于结果可能非常大,你只需要输出结果模1000000009的余数。Input两个整数N和L。对于30%的数据,1 ≤ N ≤ 5,N ≤ L ≤ 10 对于100%的...原创 2018-12-12 16:35:26 · 253 阅读 · 0 评论 -
RPG的错排【错排公式+组合数学】
题目链接 要其中一半一下的数错排即可,那么就是我们累加一遍错的排序及其出现的组合数即可, 那么,我们只需要知道怎么求错排的数的对应情况,及可能即可了: 递推错排公式:将n个错排数记为f[n]。将n中的第1个排错,假设放在第k个位置,就有n-1种放法。那么第k个可以放在第1个位置,剩下的还有n-2个进行错排,为f[n-2];若第k个不放在第1个位置,则还有n-1个需要错排,为f[n-...原创 2018-12-24 09:05:37 · 535 阅读 · 0 评论 -
Cow Tennis Tournament【Codeforces283E】【线段树+思维】
Codeforces Round #174 (Div. 1) EE. Cow Tennis Tournamenttime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputFarmer John is hosting...原创 2019-07-14 11:07:21 · 234 阅读 · 0 评论 -
Integration【2019牛客暑期多校训练营(第一场)B】【待定系数法】
链接:https://ac.nowcoder.com/acm/contest/881/B来源:牛客网题目描述Bobo knows that ∫∞011+x2dx=π2.∫0∞11+x2dx=π2.Given n distinct positive integers a1,a2,…,ana1,a2,…,an, find the value of1π∫∞01∏ni=1(a2i+x...原创 2019-07-18 18:51:42 · 1053 阅读 · 63 评论 -
permutation 1【HDU-6628】【排列组合+线段树】
这次是杭电多校的第五场了,时间也已经到了一半的时候,但是,这场打的很糟糕了。 这道题我比赛的时候,一直再想办法完善我的思维, 我手玩了几组样例,2、3、4,然后找到了个看似很成立的规律就是我们可以固定前两个数,后面的N-2个数就是按照阶乘的某种关系,我们可以就寻访第K小,然后推下去,想想,no problem!开始!然后WA,一直WA…… QAQ,然后最后一发略改了精度再交,比赛已经...原创 2019-08-05 19:29:36 · 232 阅读 · 0 评论 -
魔板【HDU-1430】【康托展开+BFS】
题目链接Problem Description在魔方风靡全球之后不久,Rubik先生发明了它的简化版——魔板。魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示。任一时刻魔板的状态可用方块的颜色序列表示:从魔板的左上角开始,按顺时针方向依次写下各方块的颜色代号,所得到的数字序列即可表示此时魔板的状态。例如,序列(1,2,3,4,5,6,7,8)表示魔板状态为:1 ...原创 2019-08-06 14:55:13 · 410 阅读 · 0 评论 -
八数码问题【康托展开+BFS】
/ Vijos / 题库 / 八数码问题背景Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.描述在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一...原创 2019-08-06 15:34:37 · 464 阅读 · 0 评论 -
P5367 【模板】康托展开【树状数组优化】
题目链接#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <limits>#include <vector&...原创 2019-08-06 19:43:04 · 374 阅读 · 0 评论 -
P2524 Uim的情人节礼物·其之弐【康托展开模板题】
题目链接 我在这里加了树状数组来优化康托展开,但是这道题的数据其实很小,不需要加也是可以的。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>...原创 2019-08-06 19:48:05 · 316 阅读 · 0 评论 -
[USACO11FEB]牛线Cow Line【康托展开与逆康托展开 模板题】
P3014 [USACO11FEB]牛线Cow Line 就是简单的模板题了,这里分别用了BIT来进行优化,用了线段树来求第K小,用了树状数组去维护有多少“>”它本身的数。二进制优化时间。 但是别忘了初始化树状数组,不然要出事的!#include <iostream>#include <cstdio>#include <cmath>...原创 2019-08-06 20:29:38 · 245 阅读 · 0 评论 -
八数码【输出路径+BFS+康托展开】
0x27 搜索-A* 题目链接 这道题,并没有用A*然后就给过去了,主要是牛客的测评机的,又快又好用! 直接暴力加上康托展开,然后就给过了,虽然实际上在杭电以及POJ上都会被卡内存或者是空间,所以仍然需要优化才行。#include <iostream>#include <cstdio>#include <cmath>#include &l...原创 2019-08-06 21:20:18 · 501 阅读 · 0 评论 -
Simple Distributed storage system 【POJ - 3757】【WA到自闭竟然是因为这个原因!讲解01分数规划】
题目链接DescriptionJack helps his mentor build a simple distributed storage system. He uses several servers and connects them as the following topology:This distributed storage system contains a g...原创 2019-08-17 15:27:28 · 222 阅读 · 0 评论 -
机器人走方格 V2【数论】【组合】【费马小定理】
M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000000)Output输出走法的数量 Mod 10^9 + 7。Sample Input2 3Sample Output3...原创 2018-07-19 19:25:52 · 375 阅读 · 0 评论 -
白井黑子【Wannafly挑战赛29-B】
题目链接 蛮好的一道题,补题的时候用了O(N) 的算法给过了,还有一种O(N^2)的算法应该是指的是树状数组,一会我去尝试下,这道题,在比赛的时候,我想到的就是上次做过的DNA那道题类似,开一个多维树状数组,然后去查对应的补集,然后可惜的是当时硬是没想出来BUG在哪,因为题目有些坑点:K==0时候,我们取余就会取不到,所以要特殊的分出来算; 还有一件事,当你K==0时候知道分开来算,也...原创 2018-11-26 20:27:16 · 248 阅读 · 3 评论 -
LCM Walk【2015上海现场赛】【推理】
题意:有已知的[ex, ey],求可以由[sx+lcm(sx, sy), sy]或者[sx, sy+lcm(sx, sy)]得到,求这样的[sx, sy]的数目,当然,[ex, ey]也算是一组。一道推理题,显而易见,知[ex, ey]那我们得把关系联系起来,[sx+sx*sy/gcd, sy]=[ex, ey],则有sy=ey,又可知道gcd(sx, sy)==gcd(ex, ey)必定成立...原创 2018-10-18 20:07:09 · 234 阅读 · 0 评论 -
Binary Tree【2015上海现场赛】【状态压缩思维】
题意:给了你一棵有K层的完全二叉树,问你要做怎样的走法可以刚好搜集到N个碎片,每个节点有个对用的权值,我们如果要走这个节点,就必须要“+”它的权值或者“-”它的权值,经过计算后,我们输出所走的边以及对应的点所对权值的“+”or“-”。题目给出的数据中有一个细节,N<=2^K<=2^60,前面的N与K之间的关系确实有用,不然,假如N=11,与K=3,是可行解,就是对应加上{1, 3,...原创 2018-10-18 19:48:16 · 271 阅读 · 0 评论 -
Sum 【HDU - 4704】【欧拉降幂】
Input2Output2 Hint1. For N = 2, S(1) = S(2) = 1. 2. The input file consists of multiple test cases.Sample Input2Sample Output2 Hint1. For N = 2, S(...原创 2018-08-06 13:35:13 · 424 阅读 · 0 评论 -
Relatives 【POJ - 2407】【欧拉筛、预处理】
Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that...原创 2018-08-06 13:31:41 · 139 阅读 · 0 评论 -
GCD Again 【HDU - 1787】【欧拉公式、数论】
Do you have spent some time to think and try to solve those unsolved problem after one ACM contest? No? Oh, you must do this when you want to become a "Big Cattle". Now you will find that this probl...原创 2018-08-06 13:29:33 · 213 阅读 · 0 评论 -
Modified GCD CodeForces - 75C【二分、预处理】
题目链接,很好的一道二分加预处理的题目。题面:Well, here is another math class task. In mathematics, GCD is the greatest common divisor, and it's an easy task to calculate the GCD between two positive integers.A commo...原创 2018-08-05 20:19:57 · 265 阅读 · 0 评论 -
Prime Cuts【预处理】【素数筛法】
有些东西只有你WA的多了,才有发言权。。。。。。——题记题面:A prime number is a counting number (1, 2, 3, ...) that is evenly divisible only by 1 and itself. In this problem you are to write a program that will cut some num...原创 2018-08-05 19:09:57 · 359 阅读 · 0 评论 -
乘法逆元【数论】
给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。Input输入2个数M, N中间用空格分隔(1 <= M < N <= 10^9)Output输出一个数K,满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的...原创 2018-07-19 19:10:44 · 138 阅读 · 0 评论 -
A/B【费马小定理】
今天是数论周的最后一天,记得一周前从一个什么是数论?费马定理有什么用都不会的萌新,现在已经能开始写欧拉公式的模版、欧几里得、拓展欧几里得之类的模版了。要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。Input数据的第一行是一个T,表示有T组数据。 每组数据有两个数n(0 <= n <...原创 2018-07-19 18:51:07 · 486 阅读 · 0 评论 -
矩阵快速幂【3*3的矩阵,可以类比成N*N的矩阵】
遇到类似斐波那契数列且为大数取模的问题,可以用矩阵的快速幂来做,举个例子:这样的一道题就可以用矩阵快速幂来进行运算,我们不难知道,于是可以列写矩阵方程。首先,用个结构体来存矩阵struct node{ ll a[5][5];};然后,用个子函数处理矩阵乘积取模的情况。node node_mul(node e1, node e2, ll mod) //矩阵...原创 2018-07-18 21:11:49 · 968 阅读 · 0 评论 -
欧拉算法的速筛【欧拉公式】
讲一下欧拉算法的速筛,相当于打了个表用来处理一定范围内却需要多次用到欧拉值的算法。typedef long long llconst ll idx=1e9+7;ll a[maxN];ll N;ll sum;void ola(){ for(int i=1; i<maxN; i++) { a[i]=i; } for(int i=2...原创 2018-07-18 21:01:25 · 873 阅读 · 0 评论 -
GCD 【HDU - 2588】【欧拉公式】
这一道题所要求的是GCD(X, N)>=M这样的X的数量,我们不妨令GCD(X, N)=t;那么有:t>=M则有GCD(X/t, N/t)==1,我们现在只需要找这样的X/t的数量即可,我们就要遍历1~sqrt(N),求那些与把N整除的数互质的数的个数。——于是便想到了欧拉公式,上面的式子还要注意的是如果sqrt(N)刚好是个整数,要特别的加上它,其他情况的时候,我们遍历两头t与N/t...原创 2018-08-06 13:43:57 · 286 阅读 · 0 评论 -
The Balance 【POJ - 2142】【拓展欧几里得】
这样的一道题就是求拓展欧几里得公式而已,但是注意他不是SPJ题,还对输出有特别的要求,所以我们要知道,有这样的式子:ax+by=gcd;对于x,它的周期为b/gcd;对于y,它的周期为a/gcd;x=x+K*b/gcd的同时,使得原等式成立,y=y-K*a/gcd。Ms. Iyo Kiffa-Australis has a balance and only two kinds ...原创 2018-08-06 13:49:47 · 186 阅读 · 0 评论 -
因子【Wannafly挑战赛25 A】
题目链接 思路:遇到N!这样的大数很显然是没办法直接去处理的,题目中告诉我们的已知是:(N!)%P^k==0与(N!)%P^(k+1)!=0。 怎么处理N!是一个很复杂的事情,那我们从P开始考虑,尝试着将P拆成几个质因子的乘积形式,例如12可以拆成2*2*3的形式,那么如何与N!关联起来?不妨可以去看到N!中最多有几个这样的质因子,只要大于这个临界值就肯定不会被整除,于是满足条件,...原创 2018-09-29 14:17:57 · 182 阅读 · 0 评论 -
Enlarge GCD【Codeforces Round #511 (Div. 2)】【素数筛思想】
题目链接思路: 这道题的思路取自素数筛,甚至是欧拉筛,我们要删除一些数字,使得gcd增长,那么,我们就得把除去公共gcd之后的数进行一次筛选,从最小的开始,我们求出那些个有相同质因数的数的数量的最大值。举个例子: 对于2 4 4 8 8 ; 他们的gcd==2, 除以2以后:1 2 2 4 4,我们从2开始遍历“1~maxn”, 发现有4个是2的倍数,所以我们删除的是N-4==1。...原创 2018-09-22 18:09:10 · 422 阅读 · 0 评论 -
翻纸牌游戏 【HDU - 2209】【规律】
题目链接这道题竟是同时改变左右两个,一开始看成只改变其中一个,然后推了个状态,发现是偶数就行、奇数就NO,后来看到时就知道给WA了,并且还得重新推过。那么,这道题又该如何求解?我们知道对于左右两端是个变数,不如就从左右两端开始考虑,我以左端作为一个起始来看,无非就是有左端要与不要的情况,若是要走左,就是懂第一个点,a[1]^=1,a[2]^=1,然后在往后判断,为1点的状态用后两个点来改变...原创 2018-10-02 13:54:29 · 503 阅读 · 0 评论 -
Shot 【HDU - 2529】【三分查找】
题目链接一道三分查找的题,首先推出公式即可,需要的时间t是l/(v*cos(th)),所以高度就是v*sin(th)*t-g/2*t*t。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#inc...原创 2018-10-02 10:45:48 · 191 阅读 · 0 评论