自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020CCPC(威海)

加油

2020-10-24 14:06:17 219

原创 algorithm头文件下的常用函数

文章目录max()、min()和abs()swap()reverse()next_premutation()fill()sort()基本数据类型数组的排序结构体数组的排序容器的排序lower_bound()和upper_bound()max_element()、min_elementmax()、min()和abs()max(x,y)、min(x,y)分别访问x和y的最大值和最小值,且参数必须是两个。如果想返回三个数x、y、z的最大值,可以使用max(x,max(y,z))的写法.abs(x)返回x的

2020-08-18 11:14:53 183

原创 pair用法小结

文章目录定义初始化临时构建元素的访问常用函数比较操作数常见用途定义想要将两个元素绑在一起作为合成元素,又不想定义结构体,用pair.#include<map>//头文件pair<typename1,typename2> name;//定义初始化#include<cstdio>#include<iostream>#include<map>using namespace std;pair<string,int> p

2020-08-17 22:55:45 289

原创 stack用法小结

文章目录定义容器内元素访问常用函数push()top()pop()empty()size()常见用途定义翻译为栈,是实现一个后进先出的容器stack<typename> name;容器内元素访问用top()来访问栈顶元素常用函数push()push(x)将x入栈,O(1)#include<cstdio>#include<iostream>#include<stack>using namespace std;stack&l

2020-08-17 22:37:16 193

原创 priority_queue用法小结

文章目录定义容器内元素的访问常用函数push()top()pop()empty()size()优先级设置基本数据类型的设置结构体的优先级设置定义又称优先队列,底层用堆实现。队首元素一定是优先级最高的那一个。写法与其他STL相同priority_queue<typename> name;容器内元素的访问和队列不同,优先队列没有front()、back()函数,而是只能通过top()函数来访问队首元素#include<cstdio>#include<ios

2020-08-17 22:13:38 133

原创 queue用法小结

文章目录定义容器内元素的访问常用函数push()front()、back()pop()empty()size()定义队列,实现一个先进先出的容器queue<typename> name;容器内元素的访问由于是一个先进先出的容器,所以只能通过front()来访问队首元素,或者通过back()来访问队尾元素#include<cstdio>#include<iostream>#include<queue>using namespace s

2020-08-17 21:42:12 237

原创 map用法小结

文章目录定义map容器内元素的访问通过下标访问通过迭代器访问常用函数find()erase()size()clear()定义map为映射可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器),也可以建立string到int的类型map<typename1,typename2> mp;map容器内元素的访问通过下标访问map中键值是唯一的map以键从小到大自动排序it->first来访问键,it->second来访问值通过迭代器访问常用

2020-08-17 21:20:13 136

原创 string用法小结

文章目录定义访问通过下标通过迭代器访问常用函数operator+=compare operatorlength()/size()insert()erase()clear()substr()string::nposfind()replace()定义string只能用cin、cout,除非强制转换string s="abc";访问通过下标#include<cstdio>#include<iostream>using namespace std;string s="

2020-08-17 20:28:22 95

原创 set用法小结

文章目录概念set的定义set容器内元素的访问倒序遍历所有元素set常用函数insert()find()erase()size()clear()lower_bound(key_value)upper_bound(key_value)empty()swap()概念是一个内部自动有序且不含重复元素的容器C++ 11,还有unordered_set,去重但不排序set的定义set<typename> name;set<int> name;set<node>

2020-08-17 16:25:12 193

原创 vector用法小结

文章目录概念定义容器内元素的访问通过下标访问通过迭代器访问常用函数push_backpop_back()size()clear()insert()erase()概念vector像一个变长的数组.常见用途:(1)存储数据(2)用临接表存储图定义vector<typename> name;struct node{ int x,y;};vector<node> name;vector<int> vi[100];容器内元素的访问通过下标访问

2020-08-17 14:24:10 185

原创 1229. 日期问题

传送门做法很巧妙#include<bits/stdc++.h>using namespace std;int a,b,c;int p[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};bool check(int year,int month,int day){ if(!month||!day||month>12||day>31)return false; if(month!=2&&p[month]<da

2020-08-16 16:40:24 147

原创 1233. 全球变暖

传送门用bfs做不难,但用scanf(%c),要注意。每次都输出检查一下#include<bits/stdc++.h>using namespace std;const int maxn=1e3+100;char s[maxn][maxn];bool ok[maxn][maxn];int n,cnt;bool flag;struct node{ int x,y;};queue<node> p;int dx[4]={0,1,0,-1},dy[4]={1,0

2020-08-16 13:55:59 104

原创 1240. 完全二叉树的权值

本来没什么好说的,但是没有用longlong,反正蓝桥杯不限时,直接全部都改成longlong,省的漏要点传送门#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+10;int n;int a[maxn];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i].

2020-08-16 12:32:37 105

原创 走方格

很明显DP#include<bits/stdc++.h>using namespace std;const int maxn=40;int dp[maxn][maxn];int n,m;int main(){ scanf("%d%d",&n,&m); dp[1][1]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if((i+1)&1||j&1) dp[i+1][.

2020-08-16 11:19:26 104

原创 买不到的数目

文章目录前言思路前言比完智算之道复赛我才知道自己的基础是如此的薄弱.9月份蓝桥杯一定要准备充分。传送门思路如果a,b均是正整数且互质,那么由ax+by,x>=0,y>=0,不能凑出的最大正整数是ab-a-b证明不太会,比赛的时候只能枚举找规律了#include<bits/stdc++.h>using namespace std;typedef long long ll;int x,y;int main(){ scanf("%d%d",&x,&

2020-08-15 22:59:51 87

原创 Educational Codeforces Round 93 (Rated for Div. 2)ABCD

A. Bad Triangle题意: 问是否有不能组成三角形的情况思路:因为是有序的,所以用最小的两个和最大的组合查看是否是三角形即可传送门#include<bits/stdc++.h>using namespace std;const int maxn=5e4+100;int t;int a[maxn];int main(){ scanf("%d",&t); while(t--){ int n;scanf("%d",&n); for(int i

2020-08-15 20:31:57 171 1

原创 CodeForces - 125ABC

文章目录A - Measuring Lengths in Baden CodeForces - 125AB - Simple XML CodeForces - 125BC - Hobbits' Party CodeForces - 125CA - Measuring Lengths in Baden CodeForces - 125A进制转换,但要注意一个细节,n最后等于2时,y要加1,y等于12,x要加1传送门#include<bits/stdc++.h>using namesp

2020-08-14 14:29:45 194

原创 Codeforces Round #664 (Div. 2)ABCD

文章目录A. Boboniu Likes to Color BallsB. Boboniu Plays ChessC. Boboniu and Bit OperationsA. Boboniu Likes to Color Balls传送门题意:给出r个红球,g个绿球,b个蓝球,w个白球。每消耗红、绿、蓝球各1个,白球数量增加3个。最后问能不能组成一个回文串思路:如果球数只有一个奇数次或者没有奇数次球,那么能组成回文串。当进行一次消耗红、绿、蓝球各1个,白球数量增加3个后,球数都各自由奇变偶,由偶

2020-08-13 21:36:56 92

原创 二进制枚举

文章目录前言二进制特性引例代码模板题前言补cf一道题偶然接触的。需要一些位运算的知识参考二进制特性含有N个元素的集合的所有子集个数为2 ^ N。含0个元素,C(0,N)含1个元素,C(1,N). . .含N个元素,C(N,N)C(0,N)+ C(1,N)+ C(N,N)=2 ^ N引例5根不同的木棍,我们用0表示不选1表示选择,从00000到11111等于【0,2 ^ 5 - 1】代码若n=4的话,(1<<n )=10000,所以第一层循环为0000到

2020-08-13 21:07:41 91

原创 智算之道2020复赛题目

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e3+10;ll dp[maxn];struct node{ int x,y;}a[maxn];bool cmp(const node&a,const node&b){ if(a.x!=b.x) return a.x<b.x; else a.y<b.y;}int main(){ ..

2020-08-12 10:28:36 163

原创 Codeforces Round #662 (Div. 2)AB

文章目录A. Rainbow Dash, Fluttershy and Chess ColoringB. Applejack and StoragesA. Rainbow Dash, Fluttershy and Chess Coloring传送门规律题。适当的时候也要大胆猜测#include<bits/stdc++.h>using namespace std;int t;int main(){ scanf("%d",&t); while(t--){ int n

2020-08-10 11:19:35 81

原创 B 分子

文章目录这道题非常好懂,但做起来好像并不是很容易,非常打怵。传送门#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5;char a[maxn+100];ll sum,num,cnt,ans;int main(){ scanf("%s",(a+1)); int len=strlen(a+1); for(int i=1;i<=len;){ if(a

2020-08-09 13:42:32 108

原创 Codeforces Round #661 (Div. 3)ABCD

文章目录前言A. Remove SmallestB. Gifts FixingC. Boats CompetitionD. Binary String To Subsequences前言捋一下ABC的思路,补出D题A. Remove Smallest#include<bits/stdc++.h>using namespace std;const int maxn=100;int a[maxn],t;int main(){ scanf("%d",&t); while

2020-08-08 21:31:14 86

原创 二叉排序树

文章目录前言定义二叉排序树常用函数建树查找查找指定value值的结点查找最大结点值查找最小结点值查找前驱查找后继插入删除遍历树的高度思考前言数据结构中,线性表分为无序线性表和有序线性表无序线性表就是无序,插入和删除没有任何规律,查找时要遍历整棵树,效率低有序线性表:有较高插入和删除效率,并且具备较高查找效率。因此二叉排序树诞生参考定义二叉排序树又称二叉查找树、二叉搜索树。是一种特殊的二叉树。若左子树不为空,则二叉树上所有结点的值均小于或等于它根结点的值若右子树为不空,而二叉树上所有结

2020-08-07 20:44:33 191

原创 二叉树基础

文章目录前言定义基本形态相关术语性质二叉树遍历前序遍历中序遍历后序遍历前言二叉树在我之前数据结构课程中学过,但很不系统甚至已经忘干净了。这次吴永辉教授暑假训练计划中有很多关于二叉树的训练,让我重新学习二叉树。希望通过这次学习,能对二叉树有更深的、系统的理解。二叉树有一般二叉树、完全二叉树、满二叉树、线索二叉树、霍尔曼数、二叉排序树、平衡二叉树、红黑树、B树。二叉树是一种树形结构的一个重要类型。一般树可以转化为二叉树,并且二叉树的存储结构和算法都较为简单,因此二叉树很重要。二叉树的特点是每个节点最

2020-08-06 22:49:27 123

原创 博弈论入门

文章目录前言定义巴什博弈(Bash Game)裸题HDU 2149斐波那契博弈(Fibonacci's Game)裸题威佐夫博弈(Wythoff Game)裸题尼姆博弈(Nimm Game)裸题画P/N分析前言简单学了博弈论,推导难度大。先了解了几个经典的博弈论和P/N分析法。SG函数,打算后面再学。定义博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈论可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不

2020-08-06 15:29:50 258

原创 Codeforces Round #660 (Div. 2)AB

文章目录ABA传送门题意:定义了一个x,x是两个不同的素数相乘,n是由4个不同的数相加得到的,其中3个是素数,1个为正整数。思路:小于31肯定不符合条件。固定3个x,让第四个数不与这三个数相同即可。再给三个重复的特殊情况即可#include<bits/stdc++.h>using namespace std;int t;int num=30;int main(){ scanf("%d",&t); while(t--){ int n;scanf("%d",&

2020-08-04 21:18:47 570

原创 Educational Codeforces Round 92 (Rated for Div. 2)ABC

文章目录AB——Array WalkC. Good StringA传送门这道题注意的就是l<=x<y<=r,l<=LCM(x,y)<=r.那么我们就让x=l就可以了,lcm(x,2x)==2x,让其lcm尽可能小#include<bits/stdc++.h>using namespace std;int t;int main(){ scanf("%d",&t); while(t--){ int x,y;scanf("%d%d",

2020-08-04 17:22:17 72

原创 2020年百度之星初赛三第3题——Permutation

传送门2020年百度之星初赛三第3题,这道题其实并不是很难,但当时比赛的时候没有做出来。一个原因就是,当时在纸上举例子的时候数算错了,还有一个没有将举出的例子汇总到一块观察,导致没有推出来.这道题1e6开二位数组是不可能了,找到规律就好做了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6;ll dp[maxn+10];int t;void init(){

2020-08-04 15:52:27 146

原创 智算之道初赛第三场-鳖

传送门这道题在比赛的时候就遇到了麻烦,补题也是。感觉是一道很好的模拟题。#include<cstdio>using namespace std;const int maxn=4e5+100;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&am

2020-08-01 22:03:59 118

原创 Family View HDU - 5880

传送门这道题本身不难,但对空间卡的特别死,不能用memset#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include <cctype>#include <algorithm>using namespace std;const int maxn=1e6+10;int trie[maxn][26],fail[maxn],fla

2020-07-30 20:44:40 116

原创 AC自动机

文章目录前言步骤构造Trie树通过BFS构造fail指针扫描目标进行匹配模板模板题感想前言AC自动机是一种多模匹配算法。给出一个目标T和多个模式P1、P2、P3、…、pn,问你有多少个模式在T中出现过,并给出在T中匹配的位置。复杂度O(n),n为T的长度步骤构造Trie树构造一棵Trie树,作为AC自动机算法的数据结构。将多个模式Pi插入Trie树中。不仅有此前Trie树的性质,节点还增加一个fail指针。如果当前点匹配失败,则将指向当前匹配的字符的指针转移到fail指针指向的地方,使得当

2020-07-29 18:07:39 67

原创 HDU 2072 单词数

HDU 2072题目是不难,但是输入有点难,可能碰到的情况还是少了点要是能把这位博主总结的13道题给做一下,应该就差不多了吧#include<cstdio>#include<iostream>#include<cstring>#include<sstream>using namespace std;const int maxn=2e6+5;int tree[maxn][30];bool flagg[maxn];int tot;str

2020-07-28 15:09:51 69

原创 HDU 1251 统计难题

传送门模板题,节点数量尽可能开大点。输入方式注意一下#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn=2e6+5;int tree[maxn][30];bool flagg[maxn];int tot;char s[maxn];int a[maxn];void insert_(char *str){ int len

2020-07-28 14:45:09 71

原创 Phone List POJ - 3630

传送门、模板题,主要是对find的灵活运用#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn =1e5+5;int tree[maxn][12];bool flagg[maxn];int tot;int t,n;char s[maxn][12];int a[maxn];void insert_(char *str){

2020-07-28 14:01:17 63

原创 Shortest Prefixes POJ - 2001

传送门字典树的第一题,算是一个模板题,稍微变一下即可。关于输入,可以按control(command)+z然后回车#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn =2e4+5;int tree[maxn][30];bool flagg[maxn];int tot;char s[maxn][maxn];int a[maxn]

2020-07-28 12:04:13 57

原创 Trie字典树

文章目录前言基本性质模板前言Trie树是一种树形结构。典型应用是用于统计,排列和保存大量的字符串(不仅限于字符串,比如电话号码),所以经常被搜索引擎系统用于文本词频统计。优点:利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串的比较。其基本操作有:查找、插入和删除,当然删除操作比较少见。参考参考基本性质1.根结点不包含字符,除根结点外,每个节点只包含一个字符。2.将从根结点到某一节点的路上经过的节点所包含的字符连接起来,就是该节点对应的字符串。3.对于每个节点,其所有子节点

2020-07-28 12:00:09 87

原创 Power Strings POJ - 2406

传送门hash的模板题,但要用scanf否则超时。也可以用KMP算法来做#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int maxn=1e6+10;const int seed=131;typedef long long ll;ll _base[maxn],_hash[maxn];int len;char s[maxn];ll str_

2020-07-27 22:42:42 69

原创 KMP算法

文章目录前言思路前言KMP算法是一种改进后的字符串匹配算法。通过辅助数组实现跳过扫描不必要的目标字符串,以达到优化效果。思路KMP有两个难点:前缀函数的求法和如何利用这个函数所反映的有效信息避免不必要的检测...

2020-07-27 21:39:20 50

原创 String HDU - 4821

传送门文章目录前言思路代码前言终于解决了这道题,之前看了一下午题解,都没看明白,现在终于清楚一点了。不管目前有什么样的困难,只要坚持不放弃,就可能出现转机。思路hash+map去重,思路非常的巧妙。我现在感觉跟KMP思想有点像。如果我们简单的暴力枚举,那么它会出现回退,这浪费了很多时间。我们不让他回退,直接一点一点后移。还有就是循环边界要想的特别清楚,可以举几个例子代码#include<cstdio>#include<map>#include<cstr

2020-07-27 10:57:13 77

空空如也

空空如也

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

TA关注的人

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