自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++详解 中缀表达式转化为后缀表达式

中缀表达式转化为后缀表达式算法思想细节首先明确什么是中缀表达式,什么是后缀表达式。中缀表达式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(eg:3+4)。附:中缀表达式不易被计算机处理。后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。转化思想:首先明确中缀转化为后缀过程中,需要转化的部分。其中包括加减乘除以及括号,数字的处理括号分为左括号和右括号。左括号直接进栈

2020-10-05 15:26:32 7910 118

原创 binary string

dad

2022-06-04 18:30:50 265

原创 指针遍历set集合

#include<bits/stdc++.h>using namespace std;set<int> s;int a[100];int main(){ s.clear(); int k = 9; int cnt = 0; for(int i = 1;i <= 10;++i) s.insert(i*k%7); // for(auto it = s.begin();it != s.end();it++) { //

2022-05-25 20:56:42 193

原创 Codeforces Round #753 (Div. 3)(A~E)题解

传送门题目大意假定第一行给出如下:abcdefghijklmnopqrstuvwxyz我们可以发现a在第一个位置,c在第三个位置那么我们要打出ac这个字符串手指就需要移动2下问给出一个字符串,手指需要移动几下才能打出来解题思路通过一维数组记录每一个字符的位置,然后每两个相邻的字符通过位置差可以得到手指移动的次数。解题代码#include<bits/stdc++.h>using namespace std;#define IO ios::sync_with_stdio(

2021-11-03 16:56:39 152

原创 KMP算法首战

KMP算法学习一、算法介绍       KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。       KMP算法其实就是一种改进的字符串匹配算法,关键是利用匹配后失败的信息,尽量减少模式串(W)与主串(T)的匹配次数以达到快速匹配的目的。具体实现就是实现一个next() 函数,函数本身包含了模式串的局部匹配信息。时间复杂度

2021-09-28 15:39:35 830

原创 Codeforces Round #738 (Div. 2)(A~D)题解

传送门题目大意给出n个数字,这n个数字可以选取一个[l,r]区间,按照a[l]&a[r],a[l+1]&a[r-1]…对于数字进行操作。问可以使得区间的最大值的最小情况是多少。解题思路由于这个题,对于区间的选取没有要求而且&操作只会降低元素的值。我们不妨假设所有数字都进行了一次与操作。解题代码#include<bits/stdc++.h>using namespace std;#define debug(a) cout << #a &l

2021-08-17 15:32:19 82

原创 Codeforces Round #735 (Div. 2)题解

       这一场div2主要偏向于公式的推导对于时间复杂度的优化。这要求我们对于生活中的一些数字图案具有一定的敏感度。       题目中给了我们许多的提示,比如1e5的数据量,如果我们采取逐个配对的方法,那么时间复杂度一定会超时。再考虑到各种数据结构的嵌套中,并没有一种适合的方法。此时,我们的思考方向就要偏向于规律、化简。我们不妨对于数据进行枚举来寻找其中的规律

2021-07-30 17:45:28 394

原创 Codeforces Round #726 (Div. 2)(A~E题解)

传送门题目大意:有t组样例,每组n个数字,可以给n个数字后添加任意个不限大小的正整数。使得所有数字的平均数为1。思路:分类讨论,当n个数字之和为n时,不用添加任何数字。当n个数字之和小于n时,可以添加一个整数使得n+1个数字之和为n+1,所以答案为1当n个数字之和大于n时,在最后一直添加0,直到满足题意,所以答案为n-ans代码:#include<bits/stdc++.h>using namespace std;#define debug(a) cout <&

2021-06-19 18:25:30 293

原创 Educational Codeforces Round 110 (Rated for Div. 2)(A~D题解)

传送门题目大意:一场比赛四个人,点数高的获胜。所有人分数不同第一个人和第二个人先比赛胜出进入决赛,第三个人和第四个人先比赛胜出进入决赛,最后进入决赛的两人比赛。问进入决赛的两人是否是场上所有人中分数最高的两个人。思路:前两个人的最高分大于后两个人的最低分,后两个人的最高分大于前两个人的最低分。代码:#include<bits/stdc++.h>using namespace std;#define debug(a) cout << #a <&lt

2021-06-10 18:47:04 178

原创 Codeforces Round #515 (Div. 3)(A~E题解)

传送门题目大意:从0~n的路上每个m个距离就有一个灯,现在有一辆火车在路上,挡住了部分灯,问有几个灯可以被看见。思路:容斥原则,get(n)-get®+get(l-1)代码:#include<bits/stdc++.h>using namespace std;#define debug(a) cout << #a << ": " << a << endl;#define LL long long #define IO io

2021-06-08 23:39:52 146 1

原创 Codeforces Round #724 (Div. 2) (A~D)题解

传送门题目大意:有n个数字,可以添加m个数字,使得n+m个数字两两之间差值的绝对值都存在在当前的数组中。思路:首先,如果数组中有负数。例如:-5,3对于这两个数字来说,|3-(-5)| = 8,会不断衍生更大的数字,无法满足条件。其次,通过枚举情况,我们发现所有数字之间满足是非零最小数的所有整数倍。代码:#include<bits/stdc++.h>using namespace std;#define debug(a) cout << #a << "

2021-06-07 19:11:31 136

原创 Python复习题总结

What is CJKV?CJKV. Initialism of Chinese, Japanese, Korean and Vietnamese: East Asian languages heavily influenced by the Chinese writing system and vocabulary.Who is Guido van Rossum?Guido van Rossum is a noted Dutch computer programmer and aut.

2021-05-09 20:52:48 427

原创 Codeforces Round #719 (Div. 3) (A~E题解)

传送门题目大意:每一个字母代表一种工作,总共有26种工作。如果青云能够坚持将一种共工作做完在去做下一类型的工作,那么认为青云是好的,输出“YES”.否则,输出“NO”思路:考察,哪种情况下青云的工作顺序是好的呢。那就是青云在转换做下一类型工作的时候不会再去做之前的工作,那样我们认为青云的工作顺序是好的。例如:三份工作A、B、A。我们认为AAB,BAA是好的工作顺序。而ABA是不好的工作顺序。代码:#include<bits/stdc++.h>using namesp

2021-05-07 18:30:11 81

原创 五天制作一个Shell(day1)创建文本初体验

通过sh文件创建txt文件第一步,在文件夹打开终端第二步、输入touch min.sh。新建一个min.sh文件第三步、通过vi/vim模式打开sh文件第四步、重头戏到了,输入i字符进入编写模式。然后,第一行输入#!\bin\sh这个是头文件。第二行输入touch test.txt新建文本的操作。这个时候按Esc进入命令行模式,输入:wq保存文件并退出。下图摘自:https://www.runoob.com/linux/linux-vim.html最后一步,执行sh文件。输入s

2021-04-26 22:34:46 519

原创 Codeforces Round #674 (Div. 3) (题解)

传送门题目大意:有一栋公寓有n层楼,除了第一层只有两户外其他每一层都有x户。从第一层依次往上从1开始发放门牌号求某个门牌号在第几层思路:如果小于等于2,则在第一层否则n-=2,用n/k来计算在第几层代码:#include<bits/stdc++.h>using namespace std;void solve(){ int n,x; cin >> n >> x; if(n <= 2) cout <<

2021-04-10 20:01:39 173

原创 Codeforces Round #706 (Div. 2)(题解)

传送门题目大意:给出一组数据n,k;是都可以找出k个字符串使得s=a1+a2+…+ak+a(k+1) + res(ak) + …+res(a2)+res(a1)思路:对称寻找相同字符,将剩余补充到ak+1代码:#include<iostream>using namespace std;void solve(){ int n,k; cin >> n >> k; string s; cin >> s; if(k == 0

2021-04-09 18:17:01 155 3

原创 Codeforces Round #677 (Div. 3)(题解)

传送门题目大意:有一个电话亭,只能按照1,11,111,1111,2,22,222这种顺序打电话,问要打某个电话需要按键的次数思路:要给下一个数打电话必须把之前的数字要按的键全按了。例如:要给222,打电话要将1,11,111,1111这10个键都按了。每次加上10*(n-1)+nbit*(nbit - 1) /2;#include<bits/stdc++.h>using namespace std;#define LL long long #define IO ios::

2021-04-07 09:52:32 125

原创 Codeforces Round #686 (Div. 3) (题解)

传送门题目大意:给一个自然数n,给出1~n的排序,使得第i个位置上的a[i]不等于i思路:错误想法:逆序输出,因为5,4,3,2,1中3的位置上还是3正确思路:将头结点放到尾节点。例如:2,3,4,5,1#include<bits/stdc++.h>using namespace std;#define LL long long #define IO ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)void solve(){

2021-04-05 14:03:38 211

原创 Codeforces Round #712 (Div. 2) (题解)

传送门题目大意:给定一个字符串,你可以给任意位置插入一个‘a’,如果可以使字符串不为回文串,那么输出YES并输出任意满足的情况如果不可以,输出NO思路:如果字符串全为a,则输出NO否则输出YES.从左到右直到第一个不为a找左边有多少个a,记为l,从右到左直到第一个不为a找右边有多少个a,记为r如果l == r ,则将a加在字符串末尾否则,将a加在字符串a多的那一边代码:#include<bits/stdc++.h>using namespace std;#def

2021-04-04 17:33:38 251

原创 Codeforces Round #710 (Div. 3)(题解)

传送门题目大意:已知按列排序的某个位置的数求按行排序的相同位置的数思路:先计算给出的那个数按列排序的位置,然后在转化为按行排序的相同位置的数。#include<bits/stdc++.h>using namespace std;#define LL long long #define IO ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)void slove(){ LL n,m,x; cin >> n >

2021-03-27 17:23:23 192

原创 算法数据与分析 第二章(上) 快乐的递归

递归递归是数据结构中比较经典和不太好理解掌握的算法(我个人这么觉得,小声哔哔)就字面意思而言,递归就是先递后归,其实就是先找到an和an-1的关系,然后用f(an) = g(an)*f(an-1)来替代f(an)。话不多说,我们先上一个阿克曼函数的代码瞧瞧#include<iostream>using namespace std;int ack(int m,int n){ if(m == 0) return n+1; else if(n == 0) return ack(m-

2021-03-17 19:48:02 124

原创 Codeforce 1493D GCD of an Array(实用学习)

传送门思路:其一,在这个题中主要学到了multiset这个函数。属于set集合具有自动排序的功能。我们把每个数字分解成它的因子集。如果某个数字的集合数量达到n,那么表明每个数字都有那个因子。其二,学到了一个数学结论,(a/b)%mod=(a*b^mod-2)%mod;代码如下:#include<bits/stdc++.h>using namespace std;#define ll long longconst int maxn = 200010;const ll mod =

2021-03-13 12:20:57 114

原创 Corderforce 1493C K-beautiful Strings (贪心题解)

传送门思路:从后往前贪心。如果当前位置在遍历过程中,满足题意,则输出答案。代码如下:#include<iostream>#include<string>#include<algorithm>#include<cstring>using namespace std;int cnt[26];int get(int n,int k){ return (k-n%k)%k;}int main(){ int n,k,t; cin &g

2021-03-10 21:53:34 137

原创 Corderforce 1493B Planet Lapituletti (暴力破解)

传送门思路:镜像问题,我们首先找到能够镜像识别的数字,包括0,1,2,5,8.由于给定的h,m的数据较小,我们可以直接从那一分钟开始遍历所有的时间直到第二天00:00.在这,我做了一个小的优化。同时,也出现了问题wrong了。我把小时和分钟分别找到之后离它们最近的时间。代码如下:#include<iostream>#include<cstdio>using namespace std;int f(int a){ switch(a) { case 0:retu

2021-03-10 14:33:58 161

原创 Codeforces A. Anti-knapsack (找规律详解)(Round #705 Div.2)

链接: [link](https://codeforc.es/contest/1493/problem/A).思路:我经验比较少在经过几次数据测试后,发现这个题属于一个找规律的简单的数论。首先,大于k的数字肯定是要输出的。其次,等于k的数据不用输出。最后,我们考察小于k的数字,在小于k的数字当中,从k/2向上取整开始,数字之间肯定加不到k。例如:n=7,k=5;输出:6,7,3,4代码如下:#include<iostream>#include<set>#include&

2021-03-10 14:08:56 94

空空如也

空空如也

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

TA关注的人

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