- 博客(32)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 第十一届蓝桥杯大赛软件类省赛第二场C/C++大学B组(10月17日)
签到题:答案624#include<iostream>using namespace std;int sum;void jisuan(int x){ while(x){ if(x%10==2) sum++; x/=10; }}int main(){ for(int i=1;i<=2020;i++) jisuan(i); cout<<sum<<endl; return 0;}答案:2481215暴力枚举分子分母即可。#in.
2020-10-18 17:15:07
15449
4
原创 十大排序算法(数据结构)
排序文章目录排序内部排序一、插入排序1.直接插入排序2.折半插入排序3.希尔排序二、交换排序1.冒泡排序2.快速排序三、选择排序1.简单选择排序2.堆排序四、归并排序和基数排序1.二路归并排序(merge sort)2.桶排序(计数排序)3,基数排序五、王道中的实现细节1.快速排序2.堆排序(非递归)3.归并排序4.基数排序内部排序一、插入排序基本思想:每次将一个待排序的记录按其关键字大小插入前面已经排好序的子序列中。1.直接插入排序给定一个整数数组 q[],将该数组升序排列。以第一个元素
2022-05-24 09:40:49
492
原创 KMP算法
KMP字符串#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1000010;int n,m;char s[N],p[N]; int ne[N];int main(){ cin>>n>>p+1; //下标从1开始 cin>>m>>s+1;
2022-03-27 16:58:28
98
1
原创 表达式求值(栈的应用)
表达式求值操作步骤:#include<iostream>#include<algorithm>#include<cstring>#include<unordered_map>#include<stack>using namespace std;stack<char> op; //符号栈stack<int> num; //数字串void eval() //操作:弹出两个操作数和一个运算符
2022-03-27 16:13:13
104
原创 Setsuna的K数列(二进制)
Setsuna的K数列#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int N=1000,mod=1e9+7;typedef long long LL;int main(){ int n,k; cin>>n>>k; int sum=0,a=1; while(n
2022-03-27 10:21:48
623
原创 Komorebi的数学课(快速幂)
Komorebi的数学课#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;const int N=100010,mod=1e9+7;typedef long long LL;typedef pair<int,int>PII;int n,m;LL qmi(int a, int b, int p){
2022-03-27 10:18:08
145
原创 C. Jury Meeting
题目链接题意给定一个长度为n的数组,可以进行任意排序(n!种排序),从左到右每个数减1,如果减为0则跳过,循环直至所有都为0求不存在某个数出现连续减2次的排列组合个数可以发现只需关注最大值a和次大值b的关系,因为小于他们的数都会在某次循环中减为0,且每次循环至少在最大值a处间隔开,因此其它数不可能连续减两次1:取出数组中的最大值a和次大值b情况一:如果a=b时 a b循环的次数同样多,同时减为0,答案为n!。情况二:如果a=b+1时 当a=2,b=1时,只有顺序{2,1}才可以,因此只
2021-09-09 17:12:53
186
原创 D. Say No to Palindromes
D. Say No to Palindromes题意:给定只包含a,b,c的字符串长度为n提供m次询问,每个询问一个区间l,r问需要修改最少的字母(修改为a,b,c)使得修改后的字符串不存在长度至少为2的回文串求最小的修改数————————————————————————————————因此si≠si+1 (因为它是长度的回文2)和si≠si+2(因为它是长度的回文3),又因为只包含a,b,c,所以si=si+3。于是发现字符串是abc,acb,bac,bca,cab,cba循环中的一种那
2021-08-01 22:33:56
173
原创 Codeforces Round #726 (Div. 2)E1、E2(思维题)
E1. Erase and Extend (Easy Version)E2. Erase and Extend (Hard Version)大致题意:给定一个长度为n的字符串s,可以对其进行两种操作:(删除最后一个字符、复制字符串s=s+s),问可以得到长度为k的字典序最小的目标串 。样例:解析:寻找最小字典序前缀即可,对其进行循环输出长度k即可找最小字典序前缀:1、i==1开始,如果s[i]<s[0],则更新最小字典序长度L=i+12、如果s[i]>s[0],就删去后面的所有,
2021-06-19 10:27:31
213
原创 L. Spicy Restaurant
L. Spicy Restaurant题意:无向图的每个顶点有一个属性wi,Q个询问,第i个询问给定顶点p和价值a,问距离p最近的wi<a的i距离p有多远题解:w的范围很小,直接做100次BFS,j计算d[i][j]表示离i最近的属性值恰号为j的点的距离即可。时间复杂度O(100(n+m)+Q)。代码:#include<iostream> #include<queue>#include<algorithm>#include<cstring&
2021-06-01 12:51:00
800
转载 蓝桥杯作物杂交(c++版 DFS)
作物杂交1. 问题描述:作物杂交是作物栽培中重要的一步。已知有 N种作物 (编号 1 至 N ),第 i 种作物从播种到成熟的时间为 Ti。作物之间两两可以进行杂交,杂交时间取两种中时间较长的一方。如作物 A 种植时间为 5 天,作物 B 种植时间为 7 天,则 AB 杂交花费的时间为 7 天。作物杂交会产生固定的作物,新产生的作物仍然属于 N 种作物中的一种。初始时,拥有其中 M种作物的种子 (数量无限,可以支持多次杂交)。同时可以进行多个杂交过程。求问对于给定的目标种子,最少需要多少天能够得到。
2021-04-04 18:33:30
2317
7
原创 Codeforces Round #688 (Div. 2)B. Suffix Operations
B. Suffix Operations传送门后缀+1,后缀-1操作前可以改变一个值求最少操作数使得数组值相等在不考虑改变一个值的情况下就等于差分数组的绝对值求和差分数组b[i]考虑可以改变一个值,(使得当前值与后者或前者相等):情况1 、改变a[1],使得a[1]==a[2],可减少操作数d=abs(a[2]-a[1]);情况2、改变a[n],使得a[n]==a[n-1], 可减少操作数d=abs(a[n]-a[n-1]);情况3、改变a[i],可减少操作数d=b[i]+b[i-1]-
2020-12-05 17:56:36
129
2
原创 B. Fox And Two Dots(dfs)
B. Fox And Two Dots添加链接描述题意:给定一个n×m的字符矩阵, 判断是否存在一个有四个点以上的相同字符组成的循环,如图:题解:从第一个点开始依次枚举,一直向上下左右四个方向深搜每一个字符相同的点,如果深搜回到初始位置且已经搜到4个点以上,则说明存在;dfs(i,j,ans):i,j代表初始#include<iostream>#include<cstring>#include<algorithm>using namespace std;
2020-09-12 18:46:10
193
原创 Codeforces Round #659 (B. Koa and the Beach (Easy Version(DP)&Hard Version)
B1. Koa and the Beach (Easy Version)题目链接题意:有n个海域,给出每个海域的初始深度,2*k秒为一个循环,前k秒每秒深度+1,后k秒每秒深度-1,你要游到另一边去,每秒可以游到下一个海域或者停留在当前海域,如果当前海域深度大于l,你就会淹死。问你是否能游到另一边。方法:DPf[i][j]代表j秒时是否能到达i海域的状态;f[i][j]可以从f[i][j-1]或者f[i-1][j-1]两个状态过来;#include<iostream>#i
2020-07-28 20:53:20
247
原创 #659 (Div. 2)C. String Transformation 1(思维)
题目链接题解:1**.如果出现a[i]>b[i]则无解;**2.我们首先从小的开始选择字母,对于选定的字母,选择的字母都有其要变成的值,我们让他们都变成要变成字母里的最小的一个,这样既不会影响其他字母的转换,也能够使得答案数最少,比如:aaa–>cdg,那么选择的字母是 ′a′ ,把它变成 ′c′ ,然后把其都变成 ′c′ 。#include<iostream>#include<cstring>#include<algorithm>#inc
2020-07-27 21:20:41
187
原创 C. Element Extermination(数组模拟栈,贪心)
C. Element Extermination传送门题意:给定一个数组,如果a(i)<a(i+1),你可以删除其中一个,问是否可以经过任意次操作后使得数组中只有一个元素。题解:用数组模拟栈1.如果栈数组中没有元素,就插入进去2.如果栈数组中有元素,但a(i)小于数组栈顶元素,就插入其中3.如果栈数组中有元素且a(i)大于数组栈顶元素,就先插入,再删除栈中可删除的最多元素。代码解释:using namespace std;int skt[300010],tt;int main()
2020-07-06 12:26:45
406
原创 Codeforces Round #654 (Div. 2)A-E2题解
A. Magical Sticks题意:给你n个数字,其中的数字可以随机组合,问可以组合形成最多同时几个数相等题解:找规律即可,如果n为偶数,则有n/2个,反正(n+1)/2个#include<iostream>#include<cstring>#include<algorithm> using namespace std;int main(){ int t; cin>>t; while(t--){ int n; cin>&
2020-07-02 00:44:33
1590
1
原创 Codeforces Round #652 (Div. 2)ABCD题解
A. FashionabLee传送门题意:判断n多边形是否同时有平行于x轴和y轴的边;题解:不难发现4*k=n的多边形都满足,其余均不满足;#include<iostream>#include<algorithm>#include<cstring>using namespace std;int main(){ int t,n; cin>>t; while(t--){ cin>>n; if(n%4==0) cout&l
2020-06-24 01:17:48
234
原创 快速排序与归并排序(模板)
快速排序归并排序分治思想(不停的细分,在合起来,用两个指针i,j分别指向两个有序数组,不停的从中取出当前剩余元素中最小的,也可以看成不断的将小的移动到当前位置)代码模板:void merge(int a[],int l,int r){ if(l>=r) return; int mid=(l+r)>>1; merge(a,l,mid); merge(a,mid+1,r);//分 int i=l,j=mid+1; for(int k=l;k<=r;k++
2020-06-22 12:28:53
227
原创 Codeforces Round #651 (Div. 2)ABCD题解
A. Maximum GCD题目链接除以2即可#include<iostream>using namespace std;int main(){ int n; int t; scanf("%d",&t); while(t--){ cin>>n; cout<<n/2<<endl; } return 0;}B. GCD Compression题目链接题解:我们可以将奇数和偶数分开配对,这样每对数字的和就可以被2整除。请
2020-06-21 08:38:16
354
原创 Codeforces Round #650 (Div. 3)ABCD题解
题目链接:A. Short Substrings添加链接描述B. Even Array添加链接描述C. Social Distance添加链接描述D. Task On The Board添加链接描述A. Short Substrings题意:将字符串a的所有长度为2的子串连接形成新字符串,算出原字符串a题解:直接跳过重复的即可#include<iostream>#include<algorithm>#include<cstring>using nam
2020-06-17 14:16:32
318
原创 Codeforces Round #649 (Div. 2)ABC题解
A. XXXXX题目链接:A. XXXXX题意:找出数组a[ ]的最大子数组,且这个子数组只能从开头删除几个(可能是零或全部)元素或者从结尾删除几个(可能是零或全部)元素。,使得子数组不可被x整除。题解**:我们可以知道如果一个数可以被x整除,那么减去一个不可被x整除的数字后这个数字就不能被x整除了。**这里有三种情况:1.a[ ]数组总和不能被x整除,答案为n;2.a[ ]数组总和不可被x整除且数组中存在不可被x整除的数,答案为n减去包括这个数的最小个元素,即n-min(i,n-1+1)(i为这
2020-06-14 08:50:21
379
原创 Educational Codeforces Round 89 (Rated for Div. 2)ABC题解
A. Shovels and Swords判断各种情况即可。#include <iostream>#include<algorithm>using namespace std;int t,a,b;int main(){ scanf("%d",&t); while(t--){ scanf("%d%d",&a,&b); int ans=0,ax; if(a==0||b==0||(a==1&&b==1)) cou
2020-06-12 08:34:13
305
原创 #648 (Div. 2)(A. Matrix Game、B. Trouble Sort、C. Rotation Matching)
Codeforces Round #648 (Div. 2)(A、B、C)A. Matrix Game题意:有一个n行m列的矩阵,有0和1两个状态, Ashish 和Vivek每次可以走一步将0变为1,Ashish先走,每一步都需要保证当前所在行和列全为0,问最终谁赢。题解:只需要求出有多少行为0和有多少列为0,最后求其最小值,就是可以走的总步数。为奇数时Ashish赢,反之Vivek赢。#include<iostream>#include<algorithm>#incl
2020-06-08 10:06:28
274
1
原创 C++STL用法解析
STL的三个基本组成部分迭代器算法容器(一)迭代器迭代器实际上就是面向对象版本的指针。用法:e.g:vector<string>A;vector<string>::iterator Aiterator;//定义迭代器for(Aiterator=A.begin();Aiterator!=A.end();++Aiterator){cout<<*Aiterator<<endl;//使用迭代器循环显示A中内容}(二)算法对容器进行处
2020-06-07 11:47:20
484
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人