自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 寒假训练营 第一节 时空复杂度分析

时间复杂度:程序运行会消耗多少时间。在此,为了方便讨论,我们假定每一个语句消耗的时间一样,视为一个时间单元。

2022-12-20 12:14:43 981 1

原创 Codeforces刷题记录(tag: chinese remainder theorem 873 ~ 1073)

结论:一个数是3的倍数当且仅当这个数各位上的数字加起来是3的倍数。结论:一个数是3的倍数当且仅当这个数各位上的数字加起来是3的倍数。结论:一个数是3的倍数当且仅当这个数各位上的数字加起来是3的倍数。要想是一个数的倍数,可以分解,比如本题。0是一个偶数。

2022-08-20 14:59:38 308

原创 Codeforces刷题记录(tag: combinatorics 873 ~ 1073)

当求一个问题的方案数的时,可以从另外一个角度来看待问题,将问题进行转化,比如此题:要求总和为s-1的子序列的个数,直接求不好求,所以我们换个角度看待这个问题,满足要求的子序列会删去一个1和若干个0(当然也可以一个0都不删),因此问题转化为求恰好删去一个1且包含0个或若干个0的子序列。故答案为2cnt0∗cnt12cnt0∗cnt1。1.题目名称: B. Customising the Track 1543B。

2022-08-20 12:00:35 414

原创 Codeforces Round #814 (Div. 2)

此类,走棋盘走到不能走位置的问题,多从奇偶性的角度考虑。对于此类,将1~n匹配分数对需要找规律的问题,可以多从奇偶性考虑。每次考虑对余数进行分类讨论时,可以参照本题的循环方式。每一个偶数都至少提供一个因子2。对于需要预处理的模拟题,需要考虑,我们要求得答案需要维护哪些信息。for循环赋为0 比 memset快很多。斐波那契数列最后一项的值fn=fn−1+fn−3+fn−5+...加到不能加隔一项加一次。...

2022-08-18 10:41:39 336

原创 *AcWing 1315. 网格(卡特兰数 + 阶乘分解质因数求组合数 + 高精度)

如何求组合数的相关总结本题的高精度写法非常锻炼写法,需要反复推敲。

2022-08-16 23:01:06 135

原创 AcWing 1316. 有趣的数列(卡特兰数)

当求组合数,数据规模较大时(比如大于等于5000时),需要用质因数分解的方法求解组合数。1.若需要mod一个数。则直接预处理质数,阶乘分解质因数即可。2.若不mod一个数。则说明肯定会爆longlong,还需将相关操作改成高精度算法。...

2022-08-16 22:41:41 122

原创 *AcWing 1312. 序列统计(非单调序列映射为单调序列+卢卡斯定理+隔板法)

巧妙运用映射的方式,可以将非单调递增的序列映射为单调上升的序列。形如这样的组合累加式,都可以用这种转换的方式,将累加式转成闭合式。

2022-08-16 15:37:07 238

原创 AcWing 1310. 数三角形 (容斥原理 + 分类讨论)

题型:给定n * m 的矩阵,求三角形的个数。对于一个底边长为i,高为j的直角三角形,其斜边除开两个端点还含有gcd(i,j)-1个整数格点。

2022-08-15 23:38:00 242

原创 AcWing 1308. 方程的解(高精度+递推+隔板法)

高精度数组的用法://多开一维用来存储位置 //高精度加法函数 c = a + b void add(int c [ M ] , int a [ M ] , int b [ M ]) {//进位 //枚举每一位 for(int i = 0;i < M;i ++) {//当前这一位的答案 t = t % 10;//得到进位 } } //输出 int t = n - 1;//得到最高位 while(!......

2022-08-15 22:09:48 165

原创 AcWing 1309. 车的放置(预处理阶乘+组合数+排列数)

对于一个规则的图形,若要放置n个物品,可以直接求Can∗PbnCan​∗Pbn​。对于一个不规则的图形来说,需要将其化为规则的图形在计算,比如本题。

2022-08-15 17:39:07 107

原创 AcWing 1307. 牡牛和牝牛

该方法可以解决:给定n个物品每种物品分为两类,一类是0,一类是1,让1与1之间至少隔开K个0的方案数。

2022-08-15 15:41:00 98

原创 AcWing 1304. 佳佳的斐波那契

A中不能含有变量,需要通过一定的转化用一个新的量来表示,核心是递推。

2022-08-15 09:16:50 96

原创 AcWing 1303. 斐波那契前 n 项和

求斐波那契数列的若干方法:https://www.acwing.com/blog/content/25/

2022-08-14 18:54:53 120

原创 AcWing 1298. 曹冲养猪

中国剩余定理

2022-08-12 17:13:19 137

原创 *AcWing 202. 最幸运的数字(同余+欧拉函数+龟速乘快速幂+构造)

gcd(a,b)=d。gcd(a,b)=d。因此,上述思路的9L∣8(10x−1)9L∣8(10x−1)可转化为9L8∣(10x−1)89L​∣(10x−1)结论:给定任意一个正整数a,x,c都有axa^xax≡1(modc)≡1。

2022-08-12 15:25:16 148

原创 AcWing 222. 青蛙的约会

ax+by=dax+by=d只能求出来最大公约数和最大公约数的倍数。要求正整数解的情况下,记得取abs,因为不一定为正数。exgcd求出来的是d,因此一般要扩大答案。

2022-08-12 10:19:54 77

原创 AcWing 203. 同余方程

扩展欧几里得证明参考:https://www.acwing.com/solution/content/25756/

2022-08-11 22:10:58 94

原创 AcWing 201. 可见的点

思路参考:https://www.acwing.com/problem/content/203/四.总结线性筛求欧拉函数的证明:

2022-08-10 18:38:34 86

原创 AcWing 200. Hankson的趣味题

本题最为核心的地方,在于时间复杂度的分析。当我们要求一个数n的约数时:暴力方法:直接试除法O(N)O(\sqrt N)O(N​)优化方法:用1到N1 到\sqrt N1到N​的所有质数,去试除。时间复杂度可以降到nlnnlnnn​。2∗109约数个数最多的有1536个2 * 10^9约数个数最多的有1536个2∗109约数个数最多的有1536个231−1约数个数最多有1600个。...

2022-08-10 17:31:03 141

原创 第五章 C++与STL入门 例题

下面三种函数的作用区间都是左闭右开。sort()函数默认升序,start是要排序数组的起始地址,end是数组结束地址的下一位,cmp用于规定排序的方法,可不填,默认升序。lower_bound()函数:lower_bound(begin,end,num)的含义是从数组的begin位置到end位置-1位置二分查找一个大于或等于num的数字,找到则返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,可以找到数字在数组中的下标。upper_bound()函数。...

2022-08-04 22:27:07 870

原创 AcWing 1294. 樱花

遇到一开始就是公式的式子,需要多转换一下。知识点约数个数、阶乘分解。

2022-08-01 17:36:04 145

原创 AcWing 1291. 轻拍牛头

约数和倍数是很巧妙的相对关系,很多时候从约数的角度不好考虑可以从倍数的角度考虑。https。

2022-08-01 16:49:03 136

原创 AcWing 1290. 越狱

直接考虑不好做的情况下可以多考虑一下补集的思想。在数论题目中经常会涉及取模操作,在计算的过程中可能会出现取模为负数的情况,所以可以先加一个mod再和%mod。https。

2022-07-31 14:48:10 77

原创 AcWing 1289. 序列的第k个数

给出数列前三项a,b,c。若为等差数列当且仅当a∗c=2∗ba∗c=2∗b若为等比数列当且仅当a∗c=b2a∗c=b2。

2022-07-31 11:30:09 187

原创 AcWing 197. 阶乘分解

当需要对一个阶乘分解质因数的时候,可以采用这种思路。

2022-07-31 11:01:55 80

原创 AcWing 196. 质数距离

1.一般筛质数都是求从1~N中的所有质数。如果要求某一个区间[L,R]的所有质数的时候,可以巧妙运用上面提到的性质1,进行求解。1.1如果数据范围是int范围内的话,N\sqrtNN​大约等于50000。1.2先求出1~N\sqrtNN​中的所有质数。然后枚举每一个质数pip_ipi​筛掉[L,R]之间的pip_ipi​的倍数。然后扫一遍[L,R]即可得到答案。例题P1835素数密度2.分数的上取整转换下取整(要求大于等于L的p的倍数的最小值公式)⌈L。...

2022-07-30 17:11:56 158

原创 AcWing 1293. 夏洛克和他的女朋友

根据题意,把具有题目这种关系看做是一条边,可以发现,这条边必然是一个质数连向一个合数,保证这条边的两端颜色不同即可,因此,所有珠宝之间的关系可以看成很多条边的图。因为题目的限制只存在与一个合数和它的质因子,所以质数之间和合数之间是没有限制条件的,可以看成一个二分图所以最多只需要两种颜色即可。2.依次枚举每一个珠宝的价值,如果当前这个珠宝的价格是质数则染成1号色,否则为2号色。1.如果珠宝数量小于3,则珠宝的价格全部为质数,所以只需要1种颜色即可。...

2022-07-30 15:59:32 174

原创 AcWing 1292. 哥德巴赫猜想

哥德巴赫猜想

2022-07-30 15:41:48 130

原创 Codeforces Round #809 (Div. 2) A~D

补题

2022-07-19 17:14:33 325

原创 0x15 字符串

一.字符串的基本知识1.字符串: 1.1 S:无特殊说明,字符串仅由26个小写字母'a'~'z'构成,并用大写字母表示一个字符串。 1.2 |S|:表示一个字符串的长度。 1.3 S[i]:表示字符串S的第i个位置的字母,下标从1开始。2.子串: 2.1 S[l,r]:表示字符串S从l到r个字母顺次连接而成的新的字符串。 2.2 PrefixS[i]:表示字符串S长度为i的前缀,PrefixS[i]=S[1,i]; 2.3 SuffixS[i]:表示字符串S长度为i的后缀,SuffixS[

2022-02-14 08:23:41 782

原创 0x14 hash

一.hash的种类hash分为普通hash和字符串hash。其中普通hash的存储结构(处理冲突)有两种:拉链法和开放寻址法。冲突:两个不同的数通过hash函数映射到相同的值。PS:离散化是一种特殊的hash(离散化需要保序)。二.普通hash(hash函数一般为x%mod直接取余就可)hash函数中,mod(表头数组长度一般取成一个质数,这样可以减少冲突的概率。)拉链法开一个序列做链接表表头。例题:AcWing 840. 模拟散列表code:#include<iost

2022-02-11 21:30:31 258

原创 2022.2.5 训练总结

1.题目链接:P3865 【模板】ST 表模板题2.题目链接:P2251 质量检测RMQ 区间最小值。3.题目链接:P1816 忠诚RMQ 区间最小值。4.题目链接:P2880 [USACO07JAN]Balanced Lineup GRMQ 区间最小值+区间最大值5.题目链接:AcWing 1273. 天才的记忆RMQ 区间最大值总结6.题目链接:AcWing 785. 快速排序快速排序模板题。 7.题目链接:AcWing 788. 逆序对的数量归并排序求逆序对的

2022-02-05 18:40:41 197

原创 0x02. 基本算法 — 归并排序

算法分析:时间复杂度O(nlogn)O(nlogn)O(nlogn)思想:归并排序是一种基于分治的思想。实现步骤:给定一个待排序数组q[N],其中L为左端点,R为右端点。1.确定分界点:int mid = l + r >> 1;2.递归处理左右区间:merge_sort(q, l,mid) , merge_sort(q,mid + 1,r);3.调整区间:合二为一code:#include<iostream>using namespace std;const

2022-02-05 18:39:21 878

原创 2022.2.5 训练日记1 AcWing 1273. 天才的记忆

题目链接:天才的记忆题目分析:0.RMQ(区间最值问题)1.题解:题解code:#include <iostream>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int N = 200010, M = 18;int n, m;int w[N];int f[N][M];//初始化 按区间长度来初始化。vo

2022-02-05 11:20:30 226

原创 0x01. 基本算法 — 快速排序

算法分析:时间复杂度:nlognnlog_nnlogn​思想:快速排序是一种基于分治的思想。实现步骤:给定一个待排列的数组q[N],其中L为左端点,R为右端点。1. 确定分界点并定义i,j指针:可选q[l]或者q[r]或者q[mid]或者任意值作为分界点。2. 调整区间:调整区间的目的是为了让分界点的左边的值都小于等于分界点,让分界点右边的值都大于等于分界点。3.递归处理左右两段:分别递归处理左右两个区间即可。code:#include<cstdio>#include&lt

2022-02-04 18:30:15 879

原创 2022.2.4 训练日记3 AcWing 103. 电影

题目链接:电影题目分析:0.离散化1.参考以下题解:题解code:#include <bits/stdc++.h>using namespace std;const int N = 201000 ;int n,m;int a[N],b[N],c[N];vector<int> alls; int find(int x) //在alls中查找大于等于x的最小下标{ int l=0,r=alls.size()-1; while(l&lt

2022-02-04 16:08:47 558

原创 2022.2.4 训练日记2 AcWing 107. 超快速排序

题目链接:超快速排序题目分析:0.归并排序1.题解题解code:#include <cstdio>typedef long long LL;using namespace std;const int N = 500010;int n;LL q[N], w[N];//w为辅助数组LL merge_sort(int l, int r){ if(l == r) return 0; int mid = l + r >> 1;

2022-02-04 11:21:55 268

原创 2022.2.4 训练日记1 AcWing 106. 动态中位数

题目链接:动态中位数题目分析:0.堆1.参考以下题解:题解code:#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;int main(){ int T; scanf("%d", &T); while(T --) { int n

2022-02-04 10:51:23 114

原创 2022.2.2 训练日记6 AcWing 1952. 金发姑娘和 N 头牛

题目链接:金发姑娘和N头牛题目分析:0.差分 + 离散化。1.题解参考题解code:#include <iostream>#include <cstring>#include <algorithm>#include <map>using namespace std;const int INF = 2e9;int n, x, y, z;int main(){ map<int,int> b;

2022-02-04 10:46:01 166

原创 2022.2.3 训练日记7 AcWing 1978. 奶牛过马路

题目链接:奶牛过马路题目分析:0.排序 + 前缀最值1.题解如下:题解code:#include <iostream>#include <cstring>#include <algorithm>#define x first#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 100010, INF = 1e8;in

2022-02-03 21:07:45 110

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除