基础算法——数论
2468060694
Aloof__
笔记是记忆的缓冲
展开
-
codeforces数论专题总结
文章目录codeforces数论专题总结(1300~1800)1444A Division (1500)1462D Add to Neighbour and Remove(1400)1423K Lonely Numbers(1600)1407B Big Vova(1300)1409C Yet Another Array Restoration(1200)codeforces数论专题总结(1300~1800)1444A Division (1500)题意:输入两个数p,q. 求最大的数x,满足以下条件:原创 2020-12-20 19:59:23 · 673 阅读 · 0 评论 -
2020 CPCC 网络赛 Graph Theory Class
Graph Theory ClassProblem DescriptionThis class is on graph theory. Mr. Kruskal teaches babies the concept of minimal spanning tree, and how to calculate the minimal spanning tree of a given graph.Now, it's time for an in-class quizz. Mr. Kruskal sh.原创 2020-09-22 16:18:47 · 562 阅读 · 0 评论 -
2020 CCPC - 网络赛 1011 3x3 Convolution
3x3 ConvolutionProblem DescriptionGiven ann×nmatrixAand a3×3matrixK. These two matrices are very special : they are both non-negative matrices and the sum of all elements in matrixKis 1 (In order to avoid floating-point error, we will give m...原创 2020-09-21 11:44:08 · 615 阅读 · 2 评论 -
Codeforces Round #669 (Div. 2) B - Big Vova -暴力贪心
B - Big Vova题意:给你一个数组A,B数组是A的排列数组;C数组是B的前缀GCD数组;求A怎样排列得到的B数组,才能使C数组在字典序上最大;思路:数据范围小,首先肯定是A中最大的数,然后接下来每次从剩下的数中找到和前面的GCD最大的数即可;#include<bits/stdc++.h>#define ll long longusing namespace std;const int N = 1e3+2;int a[N],b[N],st[N];bo..原创 2020-09-09 09:25:06 · 335 阅读 · 0 评论 -
Educational Codeforces Round 94 (Rated for Div. 2) A~D
A - String Similarity思维,只需要对每个字串依次提取一个字符组成目标字符即可;#include <bits/stdc++.h> using namespace std;typedef long long ll;int main(){ int t;cin >>t; while(t--) { int n; cin >>n; n=n*2-1; string s; cin >>s; for(int i原创 2020-09-02 23:11:09 · 227 阅读 · 0 评论 -
Codeforces Round #666 (Div. 2) A~D
A - Juggling Letters题意: 可以执行一个操作任意次:对于一个字符串中的任意一个字符,可以放到另外一个字符串中的任意位置;现在给你n个字符串,执行以上操作后,能否把n个字符串变得相同;思路:题目中给的操作就是把字符重新分配给n个字符串,所以只需要判断每个字符的数量能否整除n即可;#include <bits/stdc++.h> using namespace std;unordered_map<int,int> mp;int main(){原创 2020-09-02 09:33:17 · 195 阅读 · 0 评论 -
2020 杭电多校第八场(2020 Multi-University Training Contest 8)
1003Clockwise or Counterclockwise思路:刚开始不知道叉乘是啥(数学太水了)如果两个向量的方向 是顺时针的,那么这两个向量的叉乘乘积小于0;反之逆时针大于0;下图为顺时针示例#include<bits/stdc++.h>using namespace std;const int N =2e5+10;typedef long long ll;int main(){ ll t,x1,x2,x3,y1,y2,y3;..原创 2020-08-17 12:52:07 · 332 阅读 · 0 评论 -
Codeforces Round #660 (Div. 2) A~C
目录A. Captain Flint and Crew RecruitmentB. Captain Flint and a Long VoyageC. Uncle Bogdan and Country HappinessA. Captain Flint and Crew Recruitment思路:比较小的前几个类素数: 6 10 14 15 21挑选三个类素数,如果第四个素数和前三个重复则不满足条件,可以对其中的一个类素数进行调整,使得第四个数成为类素数;...原创 2020-08-16 17:58:51 · 165 阅读 · 0 评论 -
Codeforces Round #662 (Div. 2) A~C
A. Rainbow Dash, Fluttershy and Chess Coloring思路:模拟一下会发现规律:如果格子边长是n,那么操作次数就是(n/2)+1#include <bits/stdc++.h>using namespace std;const int N=1e6+7;typedef long long ll;int main(){ int t; cin >>t; while(t--) { ll n; cin &..原创 2020-08-14 17:44:18 · 156 阅读 · 1 评论 -
2020 杭电多校第六场(Multi-University Training Contest 6)
Little Rabbit's Equation思路:首先对于每个式子,暴力枚举2~16每个进制是否成立,注意如果符合当前进制K,那么式子中的任何一个数都不能超过K-1;判断一个进制是否成立就是看式子中的每个数转化为该进制以后,等式是否成立;#include<bits/stdc++.h>using namespace std;typedef long long ll;string s;vector<char>v[4];char flag;b.原创 2020-08-09 22:35:45 · 287 阅读 · 0 评论 -
2020 杭电多校第五场(Multi-University Training Contest 5)
Tetrahedron大致题意:给你一个四面体(三条棱之间分别呈90度),然后给出三条棱 a , b , c 的长度的范围:随机取(1,n)之间的任意一个整数;求四面体的高h:的期望值思路:首先要找出来 a, b, c 和之间的关系;(做题的时候随便找的公式):官方题解给的证明:#include <bits/stdc++.h> using namespace std;typedef long long ll;const in...原创 2020-08-09 22:02:20 · 265 阅读 · 0 评论 -
Heron and His Triangle HDU - 6222(找规律,大数运算)
A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integers t−1, t, t+ 1 and thatits area is an integer. Now, for given n you need to find a Heron’s triangle ...原创 2019-10-15 21:16:19 · 406 阅读 · 0 评论 -
Little Boxes HDU - 6225(大数相加)
Little boxes on the hillside.Little boxes made of ticky-tacky.Little boxes.Little boxes.Little boxes all the same.There are a green boxes, and b pink boxes.And c blue boxes and d yellow boxes.A...原创 2019-10-15 20:10:08 · 154 阅读 · 0 评论 -
大数相加相减(任意数高精度加减法)
最近做区域赛的签到题,碰到大数相加相减的问题,就不想写了,虽说以前也写过,但是奈何脑子不够用,一到关键时刻还是憋不出来;送分的题就这样没了;所以在这里补习了一下高精度大数相加减;发现用string来处理这个问题确实方便了很多;代码主题的两个函数对数据的大小正负有一定的传入要求;但是输入的时候已经判断过输入数据,并作出了相应的调整;所以可以计算任意的两个数的和与差;代码实现如下,#includ...原创 2019-10-15 14:10:14 · 374 阅读 · 0 评论 -
逆元超详解
逆元是什么?有什么作用?怎么求逆元呢?逆元的概念:如果 a * x= 1 (mod p) 成立,那么 x 是 a 在 mod m 的条件下的逆元 注意,a和x一定都和p互质,如果不互质,则逆元不存在逆元的用处:计算a / b(mod p) 的值时,如果 b 是一个很大的数,那么会爆double的精度;假设除数 b 的逆元为 inv[b] ,那么可做如下转换a / b (mod p) = a * inv[b](mod p)把除法转变成了乘法,避免的精度的损失;为什么上述式子是等...原创 2020-07-12 16:45:25 · 2435 阅读 · 2 评论 -
扩展欧几里得算法超详解
引言什么是扩展欧几里得,听起来好高深,别急先从欧几里得下手;欧几里得算法(gcd)欧几里得算法的用处:求两个数的最大公约数; 原理:辗转相除法;辗转相除法:用a除以b(这里是a>b,当然,在程序编程中,求两个数的最大公约数,可以不限a和b的大小,a<b也就是多一次循环)得到结果q和余数r,再用除数b除以余数r 再得到一个余数,再用除数除以余数,…如此循环,直到余数为0,那么此时的除数就是最大公因数辗转相除法能够成立基于以下定理:Theorem:gcd(a,b)= gcd(原创 2020-07-12 00:08:41 · 6936 阅读 · 4 评论 -
Educational Codeforces Round 86 (Rated for Div. 2)—C. Yet Another Counting Problem
整理的算法模板:ACM算法模板总结(分类详细版)C. Yet Another Counting Problemtime limit per test3.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given two ...原创 2020-04-27 10:57:34 · 424 阅读 · 0 评论 -
AtCoder Beginner Contest 164 D - Multiple of 2019 (数论规律同余)
整理的算法模板:ACM算法模板总结(分类详细版)D - Multiple of 2019/Time Limit: 2 sec / Memory Limit: 1024 MBScore :400400pointsProblem StatementGiven is a stringSSconsisting of digits from1through9.Fin...原创 2020-04-26 22:35:44 · 580 阅读 · 0 评论 -
AcWing 197. 阶乘分解
给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pi 和 ci 即可。输入格式一个整数N。输出格式N! 分解质因数后的结果,共若干行,每行一对pi,ci,表示含有pcii项。按照pi从小到大的顺序输出。数据范围1≤N≤106输入样例:5输出样例:2 33 15 1样例解释5 ! =120=2^3∗3∗5.思路:本来不知道怎么写的...原创 2019-10-22 14:50:17 · 229 阅读 · 0 评论 -
质数距离(poj2689——PrimeDistance)
给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对。同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对。输入格式每行输入两个整数L和U,其中L和U的差值不会超过1000000。输出格式对于每个L和U ,输出一个结...原创 2019-10-21 15:46:06 · 693 阅读 · 1 评论 -
素数筛模板
int pr[top];void prime(){ pr [1] = 1;//如果不是素数就标记为1 for (int i =2; i< TOP ; i ++) if (! pr [ i ]) for (int j = i * i ;j < TOP ; j += i ) pr [ j ]=1;}...原创 2019-08-09 17:13:13 · 121 阅读 · 0 评论 -
P3811 【模板】乘法逆元线性递推求解逆元
题目背景这是一道模板题题目描述给定n,p求1~n中所有整数在模p意义下的乘法逆元。输入格式一行n,p输出格式n行,第i行表示i在模p意义下的逆元。输入输出样例输入 #1 复制10 13输出 #1 复制179108112534说明/提示1 \leq n \leq 3 \times 10 ^ 6, n < p < 20000528 1≤n≤3×...原创 2019-10-08 21:32:33 · 258 阅读 · 0 评论 -
青蛙的约会 POJ - 1061(扩展欧几里得算法)
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,...原创 2019-09-03 17:08:09 · 114 阅读 · 0 评论 -
青蛙的约会 POJ - 1061
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,...原创 2019-09-03 16:42:53 · 128 阅读 · 0 评论 -
Large Division LightOJ - 1214
给定两个整数a和b,你应该检查a是否可以被b整除。我们知道,当且仅当存在整数c使得a = b * c时,整数a才能被整数b整除。Input开始会输入一个数字 T (≤ 525), 代表了样例数.每个样例会给两个整数a (-10200 ≤ a ≤ 10200) and b (|b| > 0, b fits into a 32 bit signed integer). 数字不会包含前导零....原创 2019-09-03 16:25:11 · 201 阅读 · 0 评论 -
Integer Divisibility LightOJ - 1078
If an integer is not divisible by 2 or 5, some multiple of that number in decimal notation is a sequence of only a digit. Now you are given the number and the only allowable digit, you should report t...原创 2019-09-03 16:19:55 · 100 阅读 · 0 评论 -
Romantic HDU - 2669(扩展欧几里得)
The Sky is Sprite.The Birds is Fly in the Sky.The Wind is Wonderful.Blew Throw the TreesTrees are Shaking, Leaves are Falling.Lovers Walk passing, and so are You.…Write in English class by yifen...原创 2019-09-03 10:36:03 · 211 阅读 · 0 评论 -
A/B HDU - 1576(扩展欧几里得)
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。Input数据的第一行是一个T,表示有T组数据。每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。Output对应每组数据输出(A/B)%9973。Sample Input21000 53...原创 2019-09-03 10:12:32 · 224 阅读 · 0 评论 -
Problem A HDU - 5685 ( 扩展欧几里得)(快速幂)
度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串。现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的哈希值。一个字符串的哈希值,由以下公式计算得到:H(s)=∏i≤len(s)i=1(Si−28) (mod 9973)Si代表 S[i] 字符的 ASCII 码。请帮助度熊计算大字符串中任意一段的哈希值是多少。Input多组测试...原创 2019-09-03 08:56:36 · 156 阅读 · 0 评论 -
牛客小白月赛24 J—建设道路
整理的算法模板:ACM算法模板总结(分类详细版)链接:https://ac.nowcoder.com/acm/contest/5158/J来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述牛牛国有nnn个城市,编号为 1−n1-n1−n,第iii个城市有...原创 2020-04-19 12:19:02 · 544 阅读 · 0 评论 -
AcWing 788. 逆序对的数量(归并排序||树状数组)
整理的算法模板:ACM算法模板总结(分类详细版)给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的...原创 2020-04-11 16:10:01 · 179 阅读 · 0 评论 -
AcWing 97.约数之和(递归分治)
假设现在有两个自然数A和B,S是ABAB的所有约数之和。请你求出S mod 9901的值是多少。输入格式在一行中输入用空格隔开的两个整数A和B。输出格式输出一个整数,代表S mod 9901的值。数据范围0≤A,B≤5×1070≤A,B≤5×107输入样例:2 3输出样例:15注意: A和B不会同时为0。用到知识点 :分解质因...原创 2020-04-07 11:42:31 · 251 阅读 · 0 评论 -
牛客练习赛60 D— 斩杀线计算大师
链接:https://ac.nowcoder.com/acm/contest/4853/D来源:牛客网题目描述算术能力是每个炉石玩家必不可少的,假设现在有三种伤害卡,伤害值分别是a,b,ca,b,ca,b,c。并且每种伤害卡的数量你可以认为是无限的。现在牛牛想知道是否存在一种方式可以刚好造成kkk点伤害,输出x,y,zx,y,zx,y,z分别表示三种伤害卡的使用个数。数据保证一定...原创 2020-03-27 23:15:01 · 198 阅读 · 0 评论 -
Codeforces Round #624 (Div. 3) B,C,D;
题链:http://codeforces.com/contest/1311B WeirdSort每次指针从头开始,如果当前这个数大于下一个数,说明需要更换,这是就要判断是否有这个更换条件,然后指针更新从头开始;思想就是暴力加技巧;#include <bits/stdc++.h>using namespace std;map<int,int> mp;int a[2...原创 2020-02-25 01:09:37 · 793 阅读 · 1 评论 -
Codeforces Round #622 (Div. 2)—B—Different Rules
B. Different Rulestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputNikolay has only recently started in competitive programming, b...原创 2020-02-24 00:18:24 · 1299 阅读 · 0 评论 -
AtCoder Beginner Contest 156 D - Bouquet ——组合数学
D - Bouquet/Time Limit: 2 sec / Memory Limit: 1024 MBScore :400400pointsProblem StatementAkari hasnnkinds of flowers, one of each kind.She is going to choose one or more of these flowe...原创 2020-02-22 22:58:57 · 957 阅读 · 0 评论 -
2020牛客寒假算法基础集训营5:H——Hash
链接:https://ac.nowcoder.com/acm/contest/3006/H来源:牛客网题目描述这里有一个hash函数const int LEN = 6;int mod;int Hash(char str[]){int res = 0;for (int i = 0; i < LEN; i++){res = (res * 26 + str[i] - ‘a’)...原创 2020-02-14 14:03:03 · 1550 阅读 · 0 评论 -
2020牛客寒假算法基础集训营4
姗姗来迟;异或那道题没想出来可惜了;官方标程:标程A:欧几里得打标找规律,题解说的斐波那契;#include <bits/stdc++.h>using namespace std;typedef long long ll;const int mod=1e9+7;struct node{ ll a,b;}bb[100];int main(){ i...原创 2020-02-11 23:58:47 · 1407 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2
题目链接:2020牛客寒假算法基础集训营2官方标程题解:标程我先说一下我的感受 虽然我菜 但是还是想吐槽G题的概率取模,真恶心;D:数三角我的做法是用向量做,暴力枚举任意的三个点,然后算出以每个点为顶点的角的两条边的向量乘积,看是否小于0,这里需要注意判断两个向量是否共线,也就是判断三个点是否共线:#include <bits/stdc++.h>using name...原创 2020-02-06 23:35:03 · 1712 阅读 · 2 评论 -
2020牛客寒假算法基础集训营1
整体难度codeforces div3水平(但我感觉挺难的)A:honoka和格点三角形这道题有点卡模吧,容斥定理的思想:首先先算一条边平行于轴的情况:底边可以是1或2,(n-2)*(m-1)*m * 2 + (m-2) *m * (n-1) *2再算一条边平行于y轴的情况:底边同样有两种情况:(n-1) *(m-2)*n * 2 + (n-2) *n * (m-1) *2再减去...原创 2020-02-04 19:53:16 · 211 阅读 · 0 评论