自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 费解的开关

题目链接这里给出DFS和BFS代码,方便以后回忆。DFS:#include <bits/stdc++.h> using namespace std;int G[30][30],d[5]={0,0,1,0,-1},ans; void Rever(int r,int c)//翻转{ for(int i=0;i<5;i++) G[r+d[i]][c+d[(i+1)%5]]^=1;} void resdfs(int r,int c,int c

2020-07-04 20:32:27 719

原创 蓝桥杯——1的个数

题目链接思路:数据不大,可以直接暴力。这里给出数位dp的方法。#include <bits/stdc++.h>using namespace std;int a[10],dp[10][10],len;//dp[数位][状态]int dfs(int pos,int precnt,int limit){ if(pos>len) return precnt; if(!limit&&dp[pos][precnt]!=-

2020-07-03 00:13:52 229

原创 蓝桥杯——表达式计算

题目链接思路: 将中缀表达式转化为后缀表达式,完成表达式求值。这里采用辅助栈的方法,将中缀表达式转化为后缀表达式:给操作符设置优先级:map<char,int>mp; mp['#']=-1; mp['(']=mp[')']=0; mp['+']=mp['-']=1; mp['*']=mp['/']=2;这里设置了操作符#,并把优先级设为最低。将#放置在辅助栈的栈底,作用与链表中的头节点的作用类似。...

2020-07-02 15:24:59 163

原创 蓝桥杯——分考场

题目链接zhe'ge

2020-07-01 14:34:12 172

原创 蓝桥杯——合根植物

题目链接思路:并查集裸题。并查集注意最后更新路径压缩。#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+10;int par[maxn],vis[maxn];void init(int n){ for(int i=1;i<=n;i++) { par[i]=i; vis[i]=0; }}int fnd

2020-06-30 22:38:20 96

原创 蓝桥杯——小计算器

题目链接思路:模拟题。注意计算过程始终用十进制来保存结果,输出时再将结果转换为k进制。有一个坑,后面大概7题,计算结果有多处0。#include <bits/stdc++.h>using namespace std;map<char,int>mp;map<int,char>mpc;long long k_to_o(int k,string str){ long long ans=0; for(int i=0;i<str.si

2020-06-30 22:17:56 184

原创 字符匹配算法——Sunday算法及其优化

Sunday算法是一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,当发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高匹配速度。当匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则直接跳过,移动步长=模式串的长度+1;否则移动步长=模式串中最右端的字符到末尾的距离+1. Sunday算法的复杂度为O(n/m),最差复杂度为O(n*m)这里文本串S=GCGCBGAGTAACAGAG ,模式串P=CAG...

2020-05-13 15:17:57 965

原创 字符匹配算法——manacher

int len[1000];string init(string s)//s = "cbcbccde" , res ="[#c#b#c#b#c#c#d#e#]"{ string res="["; int n=s.size(); for(int i=0;i<n;i++) { res+='#'; res+=s[i]; } res+="#]"; cout<<res<.

2020-05-12 14:28:33 99

原创 字符匹配算法--KMP

文本串T模式串P求出P在T中出现的位置当T[i]与P[j]不匹配时T[i]与P[j]的前j个是相匹配的固定指针i,j移动到以P[j-1]为结尾的最长真相同前后缀的下一位例如:T="abbaabbbabaa"P="abbaaba"出现b a不匹配这样指针i只需遍历一次T,时间复杂度明显降低于是进行KMP算法时,最重要的是对模式串P的最长真前后缀的处理,即NXT数组NXT[i]存储以P[i]为结尾的最长相同真前后缀的下标(即长度减一)..

2020-05-09 00:16:20 202

原创 HDU 4512

#include <bits/stdc++.h>using namespace std;int a[210],b[210],dp[210][210];int main(){ int t,n; cin>>t; while(t--) { int ans=0; cin>>n; ...

2020-05-06 20:48:53 98

原创 HDU1160 FatMouse's Speed

http://acm.hdu.edu.cn/showproblem.php?pid=1160思路:这一题给出老鼠的体重和速度,要求最多的老鼠,使得它们的体重严格递增,速度严格递减。 刚开始时,我的想法是先按照速度从大到小排序,在此基础上求体重的LIS。但是这样wa了,原因是如果数据里有相同的速度时,速度那一维只能保证不增。 找到问题后,我发现速度应该从大到小,如果速度相同时,...

2020-05-06 10:30:06 168

原创 FJ的字符串

题目链接:FJ的字符串观察样例,可以发现规律:1 3 5 7 ……为A2 6 10 ……为B4 12 ……为C……即第2^i*(1+2j)个字符应为'A'+i#include <bits/stdc++.h>using namespace std;int main(){ string s; int n; cin>&gt...

2020-03-10 13:58:49 328

原创 2n皇后问题状压dp

蓝桥杯2n皇后问题分析:该题与给定状态下的n皇后问题相似,只不过在搜索时要用两层循环。在第一层循环里放置其中一种颜色的皇后,在第二层的循环中放置另一种颜色的皇后。#include <bits/stdc++.h>using namespace std;int upper,ans,n;int a[10];void dfs(int i,int col,int...

2020-03-10 13:47:56 283

原创 n皇后问题

HDU2553 n皇后问题#include <bits/stdc++.h>using namespace std;int upper,ans;void dfs(int col,int maindia,int condia)//限制条件下的列,主/副对角线{ if(col==upper) {ans++;return ;}//填满n位,可行数加1 ...

2020-03-10 01:42:14 130

原创 Gym - 101911C Bacteria

题目链接,点这里。。。本题可以用优先队列,也可以用set做这里给出用set模拟的代码#include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ set<LL> se; set<LL>::iterator it; LL x;...

2019-11-21 22:26:20 89

原创 数组参数的传递

数组名本身是地址常量,不是地址变量(指针),数组名作为参数传递时,退化为指针。int [1000]对应的数组名类型等价为 int * constconst修饰的是指针本身而不是指向的内容,即不是const int*,是个常量,无法被赋值。...

2019-11-10 19:32:19 101

原创 关于iterator的删除操作

1. 对于节点式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响2. 对于顺序式容器(vector,string,deque)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效 for(auto it=se.begin();it!=se.end();) { if(*it%2==0...

2019-11-09 10:46:05 579

原创 关于一个scanf输入操作

原题输入为x或x(y),其中x,y都为整数除了常规的字符串外,还可以int x=0,y=0;scanf("%d(%d)",&x,&y);若输入不带括号,y=0

2019-09-23 17:00:16 217

原创 二分图

const int maxn=305;int nx,ny,MIN;int wx[maxn],wy[maxn];int visx[maxn],visy[maxn];int G[maxn][maxn];int maty[maxn];int dfs(int u){ visx[u]=true; for(int i=1;i<=ny;i++){ ...

2019-08-25 21:58:43 91

原创 网络流EK

const int maxn=500;int r[maxn][maxn];int pre[maxn];bool vis[maxn];bool bfs(int s,int t){ queue<int>que; memset(pre,0,sizeof(pre)); memset(vis,false,sizeof(vis)); ...

2019-08-25 21:55:00 605

原创 主席树

#include <bits/stdc++.h>using namespace std;const int MAX_N=1e5+10;struct node{int ls,rs,sum;}tree[MAX_N*40];int a[MAX_N],p[MAX_N],tr[MAX_N],CNT;vector<int>ve;void disc(int n...

2019-08-25 21:32:28 84

原创 kmp与exkmp

int nxt[MAX_N],n,m;string s,t;//文本串,模式串int kmp()//模式串在文本串中的个数{ nxt[0]=-1;//模式串相同前后缀(长度-1) for(int i=1;i<m;i++) { int j=nxt[i-1]; whil...

2019-08-25 21:25:15 116

原创 普通莫队

#include <bits/stdc++.h>using namespace std;const int MAX_N=1e6+10;struct node{int i,l,r,pos;}que[MAX_N];//第i个询问的左右区间,分块位置bool cmp(node a,node b){ return a.pos==b.pos?a.r<b....

2019-08-25 21:22:44 135

原创 凸包

struct point{ int x,y;};bool cmp(point a,point b)//自左到右,下到上{ if(a.x!=b.x) return a.x<b.x; return a.y<b.y;}int cross(point a,point b,point c,point d)//叉乘...

2019-08-25 21:22:13 134

原创 背包

01背包fill(dp,dp+MAX_N,0); for(int i=1;i<=n;i++)//n种物品 for(int v=V;v>=w[i];v--)//逆序 dp[v]=max(dp[v],dp[v-w[i]]+c[i]);//不拿或拿完全背包 fill(dp,dp+MAX_N,0); for(int i=1...

2019-08-25 21:21:48 136

原创 子序列

LIS ( O(nlogn )最长严格递增子序列for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);...

2019-08-24 23:42:51 156

原创 次小生成树模板

int maxd[MAX_N][MAX_N];//两点间的单一最大距离vector<int>G[MAX_N];//邻接表int par[MAX_N];struct edge{ int u,v,cost; bool vis;}E[1000000];bool cmp(edge a,edge b){ return a.cost&l...

2019-08-22 13:57:37 106

原创 快速幂模板与矩阵快速幂模板

typedef long long LL;LL quick_mul(LL x,LL y,LL m)//快速乘,时间复杂度为O(1){ return (x*y-(long long)((long double)x/m*y)*m+m)%m;}int binary_pow(LL a,LL b,int m)//a^b%m,若m为长整型需要二分乘或快速乘{ int ans=1;...

2019-08-22 10:27:21 88

原创 并查集模板与cruskal模板

int par[MAX_N];void init(int n)//初始化{ for(int i=1;i<=n;i++) par[i]=i;}int Find(int x)//寻找根节点{ if(x==par[x]) return x; return par[x]=Find(par[x]);//路径压缩}void unit...

2019-08-22 08:58:11 110

原创 整数与字符串相互转化

#include<iostream>#include<string>#include<sstream>//所需头文件 using namespace std;int main(){ int n; string str; stringstream s; while(cin>>n){ s.clear();//多次使用,清空s ...

2019-06-23 21:22:01 130

原创 牛顿迭代

#include <cstdio>#include <cstring>#include <cmath>int main(){ int t; scanf("%d",&t); while (t--){ double Y; scanf("%lf",&Y); double x[8] = {1};//用数组来表示x的i次方 w...

2019-06-23 21:21:43 78

原创 细节

scanf区别%f和%lf。严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。scanf函数在输入整型数据时不能接受空格、制表符Tab、回车等;gets函数能够接受空格、制表符Tab和回车等;string不能接受cin带空格的字符串;cin不能接受以空格为字符;getchar()接受以空格,回车为字符;getline()...

2019-03-19 18:02:36 216 3

空空如也

空空如也

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

TA关注的人

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