![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 59
Tiya_s
一枚ECNU甜菜
展开
-
CF——E. Replace With the Previous, Minimize
题目链接题目大意:给定一个字符串,问在执行k次操作后字典序最小的字符串是什么?一次操作的定义:对于任意一个字符串中的字母s,将字符串内所有为s的字母转换为s-1即b可以转换为a,c可以转换为b,……,z可以转换为y。基本思路:因为是要将字符串转换为字典序最小的字符串,因此执行的操作优先考虑下标较小的字符对于操作的理解:对于某个字母m,如果要将其转换为a,则执行m-a次操作,我们可以将整个字符串中的所有[a,m]区间内的字母都转换为a。(可以手动从m开始模拟,理解为逐步翻牌的感觉)转换为代码思原创 2022-05-11 13:41:09 · 370 阅读 · 0 评论 -
Leetcode第 69 场双周赛_用邮票贴满网格图
问题描述给定一个n*m大小的棋盘,每个棋盘格都有一个值1或0,现需要你利用给定的长度为stampWidth*stampHeight的长方形去覆盖棋盘格为0的区域。问题链接:用邮票贴满网格图覆盖准则为:长方形不能旋转长方形尺寸固定允许重叠覆盖长方形不能覆盖到棋盘格为1的区域长方形数量不限长方形必须完全在矩阵内基本思路由题可知,长方形的覆盖可以重叠,因此对于每一个值为0的棋盘格,都需要被覆盖。如果使用二维数组pos[i][j],pos[i][j]=0代表棋盘格(i,j)没有覆盖并且本来原创 2022-01-11 00:58:51 · 219 阅读 · 0 评论 -
p3834——主席树模板题
最近遇到好多题目都是关于主席树的,但是菜菜没有学过,因此学习了一下主席树的模板。这个up大大讲的特别好!参考:网页链接https://www.bilibili.com/video/BV1C4411u7rK?from=search&seid=9313032007306021838#include<bits/stdc++.h>using namespace std;const int maxn=2e5+10;int n,m;int cnt;struct node{原创 2021-05-10 16:44:26 · 103 阅读 · 0 评论 -
CF——intersting array线段树
很大部分借鉴了此链接感谢!上次全部传参数,这次尝试一下结构体存区间,少传一点参数……阿巴阿巴阿巴特别容易错的是位运算,不要忘记加括号,或者直接+代替|不太对还有数组的大小开4倍比较好#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;const int NN=2e5+5;struct Node{ int原创 2020-07-27 14:09:09 · 113 阅读 · 0 评论 -
CF——powerful array莫队模版
极大部分借鉴了此链接至今不太理解莫队的奇偶排序和分块思想带来的超大变化……先整理模版再说#include<iostream>#include<cmath>#include<set>#include<map>#include<algorithm>#include<cstdio>using namespace std;const int NN=1e6+5;struct Node{ int L,R; i原创 2020-07-27 08:48:01 · 112 阅读 · 0 评论 -
KMP算法基础模版
#include<bits/stdc++.h>using namespace std;const int NN=100;string A,B;int next[NN];void getnext(){ memset(next,0,sizeof(next)); next[0]=-1; next[1]=0;//长度为1的字符串,设定next为0 int i=1,j; int len=0; while(i<B.length()-1)原创 2020-06-10 16:39:58 · 71 阅读 · 0 评论 -
最短路三种算法模版
(1)floyd适合多点源最短路#include<bits/stdc++.h>using namespace std;const int INF=10000;const int MAX=1000;int d[MAX][MAX];int n;//下面的循环的首位0/1按题目意思决定void init(){ for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(j==i)d[i][j]原创 2020-06-06 11:40:00 · 124 阅读 · 0 评论