随笔分类 - 蓝桥杯
摘要:1242. 修改数组 做法一:并查集变种 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 2e6; int p[N]; int n,x; int find(i
阅读全文
摘要:1050. 鸣人的影分身(整数划分问题) DP解法 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 11; int f[N][N]; //f[i][j]表示:
阅读全文
摘要:一、算法 1.欧几里得算法(辗转相除法求最大公约数) int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } 辗转相减法(求最大公约数) 即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数。例如 :两个自然数35和14,用大数减去小数,(35,14
阅读全文
摘要:一、题目特点 跳跃性很强 结论证明很难 二、解题策略 找相似 猜想 AcWing 1055. 股票买卖 II #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N =
阅读全文
摘要:一、双指针(滑动窗口) 1238. 日志统计 以D为单位枚举时间段,删去区间开头时间的帖子数量,加上区间结尾的帖子数量 #include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef p
阅读全文
摘要:一、树状数组 下标从1开始 操作 O(logn) 单点修改: 给某个位置上的数加上一个数 区间查询:求某一个前缀和 离线做法:不支持修改 在线做法:支持修改 原理 层数的确定:x的二进制表示中末尾有几个0 c[x] = (x-lowbit(x),x]的和 lowbit(x):返回x的二进制表达式中最
阅读全文
摘要:一、枚举 1210. 连号区间数 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 10005; int a[N],n,ans; int Max,Min; in
阅读全文
摘要:一、数学 1.AcWing 1205. 买不到的数目 如果a,b均是正整数且互质,那么由ax+by,x>=0,y>=0不能凑出的最大整数是 ab - a - b 证明: 首先证明 ab−a−bab−a−b 不能被 ax+bx,x≥0,y≥0ax+bx,x≥0,y≥0表示出。 反正法,假设 ab−a−
阅读全文
摘要:一、二分 1.整数二分 整数二分步骤: 找一个区间[L,R],使得答案一定在该区间中 找一个判断条件,使得该条件具有二段性,并且答案一定是该二段性的分界点 分析中点M在该判断条件下是否成立,如果成立,考虑答案在哪个区间;如果不成立,考虑答案在哪个区间; 如果更新方式写的是R = Mid,,则不用做任
阅读全文
摘要:92. 递归实现指数型枚举 dfs递归做法 #include<iostream> using namespace std; const int N = 20; int n; bool st[N]; //1~N每个数的状态数组:0表示未选择,1表示已选择 void dfs(int u) { if(u
阅读全文