02 2025 档案
摘要:题目链接: https://www.luogu.com.cn/problem/P1352 题意: 给定一棵职员树,父节点为子节点的直接上司,每个员工有其快乐值。 每个员工不会与其直接上司同时参加舞会 求该场舞会邀请人员的最大快乐值 思路: 树形dp 定义状态:dp[i][0]表示不选第i个人,邀请到
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/5527/ 题意: 给定一个长度为n的数组,可以进行任意次操作 每次操作选取一段连续的区间,如果这个区间中有超过一半的相同的数字,便可以将区间中其他的数字同化为该数字 试求有哪些数字可以将
阅读全文
摘要:使用并查集的思想求最小生成树 复杂度O(mlogm) int n,m; struct edge{ int u,v,w; bool operator<(const edge&t)const{ return w<t.w; } edge(int uu,int vv,int weight):u(uu),v(
阅读全文
摘要:求最小生成树,(指的是在一个加权无向图中找到一个边的子集,使得这个子集构成的树包含图中的所有顶点,并且边的权重之和最小。) 用于稠密图,复杂度O(mlogm) int n,m,cnt,ans; vector<pii>e[maxn];//{点,权重} int d[maxn],vis[maxn]; pr
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/5442/ 题意: 给定数组h,a,t,分别代表甘蔗高度,甘蔗每天能生长的高度,以及题目约束条件。 询问至少经过多少天,能使得对于所有的1<=i<=n,使得能有ti个甘蔗比第i个甘蔗高 思
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/5441/ 题意: 每过一天病牛可以往左右扩散。 给定若干天后这群牛的状态,求最初的病牛最小个数 思路: 显然经过天数越多,病牛扩散的越厉害,最初需要的病牛数就越少。 所以先求经过最长天数
阅读全文
摘要:时间复杂度最多O(n*m) 可用来判负环,以及带负边权的最短路 struct edge{ int v;int w; }; vector<edge>e[maxn]; int d[maxn],cnt[maxn],vis[maxn]; bool spfa(int s){ queue<int>q; mems
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2758 题意: 给定两个字符串a,b。 有三种操作:删除,插入,替换 求a到b的最小编辑距离 思路: 设dp数组dp[i][j]表示字符串a:0i-1子串到字符串b:0j-1子串的编辑距离 如果a[i-1]=b[j-1]
阅读全文
摘要:LCS O(n^n)方法 遍历到第i行,j列时 状态转移方程 当a[i]=a[j],f[i][j]=f[i-1][j-1]+1; 当a[i]!=a[j],f[i][j]=max(f[i-1][j],f[i][j-1]) 特别地,当两个序列都是1~n的排列时 由于元素都相等 所以考虑映射一个序列,使其
阅读全文
摘要:增加动态数组vectorb 记录一个递增的子序列,如果当前遍历到的元素大于最后的元素,则往后插入,len++; 否则,查找第一个大于等于该元素的位置,替换,这样使数组元素值更小,会有更多机会插入更多元素 int n,len=1; int a[maxn]; vector<int>b; cin>>n;
阅读全文
摘要:用于求解有向带非负权图每个点到源点的最短路径问题 时间复杂度O(mlogm) int n,m,s; vector<pii>e[maxn];//pii:{去往的点,权值} int d[maxn],vis[maxn]; priority_queue<pii>q;//pii:{-与源点距离,点} void
阅读全文
摘要:Kahn算法 (判环,输出拓补序列) 时间复杂度O(n+e) int n,m; vector<int>e[105];//邻接表 vector<int>tp;//拓扑数组 int din[105];//入度表 bool toposort(){ queue<int>q; rep(i,1,n) if(di
阅读全文
摘要:欧拉定理: 若a与m互质,那么a^phi(m) 与 1 在模m的意义下 同余 其中phi(m)为欧拉函数; 表达式phi(m)=m*(求和)((pi-1)/pi)(pi为m的因数) 扩展欧拉定理: 用于降幂 当b<phi(m)时 ,a^b 与 a^b 在 模m意义下 同余 当b>=phi(m)时,a
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/5440/ 题意: 给定a,b数组,遍历b数组,按照条件使a数组增加值,求最后的a数组 思路: 模拟 #include<bits/stdc++.h> #define rep(i,a,n)
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1069 题意: 共有m1^m2支试管,一开始有n种单个细胞,第i个细胞每秒能分裂出si个完全相同的细胞(细胞个数的变化:1->si->si*si->si*si*si->...,很重要) 现在求能让任意一种细胞能够被试管均
阅读全文
摘要:素数筛:筛取1~n范围内的素数 埃氏筛 时间复杂度O(nloglogn) vector<int>prim; bool vis[maxn]; void e(int n){ rep(i,2,n){ if(!vis[i]){ prim.pb(i); for(int j=i*i;j<=n;j+=i)vis[
阅读全文
摘要:1.整数唯一分解定理 任意正整数都可以表示为其质因子的乘积 注意1不是质数,因此一定不是质因子 一个数本身也不是其质因子,除非它是质数 发现一个数的约数个数有以下公式 s=(a1+1)(a2+1)····(ak+1) 其中ai为第i个质因子的幂次 然而质因数和约数是不同的概念,约数可以是合数 2.任
阅读全文
摘要:用于求 矩阵A^k 的问题(其中A为n行n列的矩阵) 1.快速求解fibonacci第n项 (n>3时,[f[n],f[n-1]]=[f[2],f[1]]*A 其中矩阵A.c[1][1]=A.c[1][2]=A.c[2][1]=1,A.c[2][2]=0) matrix结构体 int n; stru
阅读全文
摘要:同余式 若 a%m = b%m 则 表示为 a 模等于(三条杠latex不会打) b (mod p) 乘法逆元 若a,b互质,且 a*x 模等于 1 (mod b) 那么称x为a 模 b 的乘法逆元 费马小引理 若p为质数,且a,p互质,那么 a^(p-1) 模等于 1 (mod p) 即a^(p-
阅读全文
摘要:求 a^b (modp) 时间复杂度O(logn) 符合结合律 (一个整数n,二进制位数为 logn+1) int quickpow(ll a,int b,int p){ int res=1; while(b){ if(b&1) res=res*a%p; a=a*a%p; b>>=1; } retu
阅读全文
摘要:扩欧: 用于求 不定方程 的 一组 整数解 通解形式: x=x0+b/gcd(a,b) y=y0-a/gcd(a,b) ax+by=gcd(a,b)时 求特解的方法 int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b); } int ex
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P8599 题意:给定n,求其有多少种带分数表达形式(即a+ b/c = n)(其中a,b,c这些数字在1~9中只出现一次) 思路: 枚举全排列,再枚举i,j,表示0~i范围数字是a,i+1~j范围数字是b,j+1~8范围数
阅读全文
摘要:ST 表用于 查询 静态数组 区间最大值,最小值 f[i][j]代表以i开头,区间长度为pow(2,j)的区间最大值/最小值 其左端点为i,右端点为i+ (1<<j) -1 运用倍增的思想,转移方程 f[i][j]=max(f[i][j-1],f[i + (1<<j-1)] [j-1]) 将该区间
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/F 题意: 给定一个长度为n的数组a,规定若其一个子数组 长度为偶数 并且数组内 有两个不相同的数字 且 数量相同 ,则该数组为双生数组 求数组a中有多少个双生数组 思路: 纯暴力枚举每一个区间显然复杂度O
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/C 题意: 推箱子,给定一个n*n的0 1矩阵,要求把1全部推到左上角大小为n/2 * n/2 的矩阵中,输出交换的次数以及每次交换的数字坐标 思路: 神奇 为了让左上角都是1,不妨移动左上角的0。每找到一
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/6134/ 题意: 给定一个长度为n的数组a,一个模数m。每次可以对数组的一个元素+1或-1,让你求对某个x,对数组元素操作后,使(ai-x)%m==0 的最小操作数 思路: 使(ai-x
阅读全文
摘要:题目链接:https://www.lanqiao.cn/problems/102/learning/?page=1&first_category_id=1&second_category_id=3 题意: 一排杯子,青蛙可以跨过0或1或2个青蛙,跳进空杯子中。求从初始局面转化到题目给定局面所需要的最
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/6138/ 题意: 给定两个长度为n的数组a,数组b。 操作一次:选定任意的l,r(其中1<=l<=r<=n),反转数组a的数字顺序 让你统计 在所有操作情况下 数组a与数组b 对应数字
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/L 题意: 从1~n任意选三个数(不能重复)可以组成一个三元组(x,y,z),要求三对数中有两对互为质数 求最多的方案数,并打印出来 思路: 不会Orz,甚至打表也打不出来,打出来还能看出规律来的是真佬 小
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/D 题意: 给定一个长度为n的01串s,令k成为01串的段长度。 对于每一段01串,可以完成以下操作:1.反置段内所有的0/1 2.任意地排列0和1 规定一个串的贡献度为:操作完成后,排列在一起的1消除,只
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/G 题意: 给定一个整数n,模数k 生成数列 ai= i%k (1<=i<=n),让你求数列从大到小重新排列后,前k个元素的和 思路: debug了好几个小时,终于过了。(逐渐开始理解了一切)) 首先,一个
阅读全文
摘要:题目链接:https://www.lanqiao.cn/problems/97/learning/?page=1&first_category_id=1&second_category_id=3 题意: 给定长度为n的数组,要求求出(ai+···+aj)(i<=j)这样的连续区间之和%k==0的个数
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/6137/ 题意: 给定一个长度为n的数组,求出三个数ai,ap,aq(ai!=ap,ap=aq)(i<p<q)的种类数量 思路: 时间复杂度需O(n),因此程序只能有一重循环搞定 不妨从
阅读全文
摘要:题目链接:https://www.lanqiao.cn/problems/96/learning/?page=1&first_category_id=1&second_category_id=3 题意: 输出n所代表的excel列数,126:AZ 27:AA 28:AB 53:BA 思路: 感觉有点
阅读全文
摘要:
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/6121/ 题意: 有n个大小不同的蛋糕,A可以选择将两个蛋糕合并,B可以吃掉最左边或最右边的蛋糕。 A先开始,求A和B能合并/吃到的蛋糕总和 思路: 发现A总是先合并中间的,且合并方向与B吃的方向相反,所以最终
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/E 题意: 有n个小球,部分向左移动,部分向右移动,碰撞后交换速度。求第k次碰撞发生的时间 思路: 二分答案,当t增大,球碰撞次数增加,反之一定减小 可以把球看作穿过彼此,并认为向左移动的小球不动,向右移动
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/6126/ 题意: 给定一个长度为n的字符串,规定若该字符串一个abb形式的子串数量大于等于f,则满足条件 现在允许字符串改变任意一个字符(或者不改变),求可能满足条件的子串 思路: 按照
阅读全文
摘要:题目链接:https://www.lanqiao.cn/problems/94/learning/?page=1&first_category_id=1&second_category_id=3 题意: 给定长度为n的卡片排列,顺时针从1开始数,若卡片上的数字与数的数字相同则将此卡片收入囊中,下一个
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95336/C 题意: 给定一个字符串s,规定一个字符串平衡 当且仅当01子串数量=10子串数量 字符串中有p个?,?需要将其变为0或1 规定一个字符串的val为 将某个0/1反置后得到的字符串是平衡的 位置数量 求这
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95336/D 题意: 给定两个字符串a,b,这两个字符串的字符位置可以事先排列好,也可以通过任意次操作替换掉某个字符串的某个字符。 令s=a+b,求最少操作次数使s为回文字符串 思路: 发现a,b如果有相同的字符,就
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/C 题意: 给定3个二进制数a,b,c 共有两个操作,操作1:花费x的代价反置a或b的任意一位,操作2:花费y的代价交换a或b的两位(x<=y) 求令a^b=c的最小代价 思路: 发现当2x<=y时,即使交
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95337/E 题意: 给定一个3x3的棋盘,'X'表示小L走的棋子,'O'表示炸鸡走的棋子,'G'表示空位 现在轮到小L下棋,且小L拥有1次连续走两步的机会,求双方都走最优情况下,小L是否能够必胜 思路: 不是搜索或
阅读全文
摘要:题目链接:https://www.lanqiao.cn/problems/89/learning/?page=1&first_category_id=1&second_category_id=3 题意: 给定一个n*n的grid,每一行,每一列的都有经过次数的要求。要求输出从左上角到达右下角的路径信
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/B 题意: 给定a,b两个数组,有操作1:花费c1的代价删除ai,bi这一条记录 操作2:花费c2的代价交换ai,bi的值 求令a,b都成为最长不递减子序列的最低代价 思路: 类似与LIS,通过n方dp实现
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/problem/23054 题意: 初始数组为长度为n的全0数组,m次操作 操作1:使每个(i-0)mod d==0 的下标为i的数组元素+k 操作2:查询l~r范围的数组元素和 思路: 分块思想, 使lazy[i]表示原数组下标能被
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/6125/ 题意: 给定一个nnn的奶酪块,每次切掉坐标为(x,y,z)的一个方块,求每次奶酪块能够被11n的方块插入的总方案数 思路: 不能用三维数组进行模拟,所以开三个二维数组表示三个不同的平面,每次增1,当
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/J 题意: 刀的初始攻击力为x,磨刀石数量为y,回合数为n 磨刀一次 刀攻击力加1 刀每砍一次攻击力减1 攻击力为0时损坏 求n个回合刀能造成的总伤害 思路: 发现先磨刀比后磨刀更优,并且刀连续砍不比分段砍
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95338/I 题意: 给定一个排列,共有m次查询,每次查询输入l,r,k三个参数,返回数组l~r排序后 数组之前下标为k的 元素 的 经过排序后的下标(每次查询独立,即不改变原数组) 思路: 时间复杂度需要nlogn
阅读全文
摘要:两种操作时间复杂度O(logn),空间复杂度O(n) build方法 const int maxn=5e5+5; int n,m; int s[maxn]; void build(){ rep(i,1,n){ int x;cin>>x;change(i,x); } } lowbit方法(求x的最低位
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95335/C 题意: 给定一系列的字符串,要求输出在屏幕上显示所有字符串的最少操作次数 思路: 暴力求解!! 先将字符串排序,然后定义函数compre求两个字符串的公共前缀 发现每次显示一个字符串(不含第一个字符串和
阅读全文
摘要:题目链接:https://ac.nowcoder.com/acm/contest/95323/H 题意: 给定n个区间,要求填入每个下标的数字在区间范围内以此来构建排列 思路: 先按照左端点进行区间的排序,然后将每个左端点小于等于当前数字的区间压入优先队列 由于右端点大的能给以后操作留出更多的空间,
阅读全文