藍橋杯 面對藍橋杯的基礎演算法複習快速總結

2021-09-23 13:29:12 字數 4374 閱讀 1968

搜尋:

1.dfs(八皇后迭代)

#include using namespace std;

int n,tot = 0;

int a[20];

bool is_ok(int row)

return true;

}void dfs(int row) ,,,,,,,,,,,};

int bk[105][105] = ;

struct nodenode,p;

queueque;

vectorans;

void bfs()

} }}int main()

3.記憶化搜尋

基礎圖論:

1.圖的遍歷(尤拉迴路)

/*

尤拉通路_1375:騎馬修柵欄(fence)

*/#include #include using namespace std;

const int max = 505;

int maxx = -1,minx = 2e9;

int maze[max][max],cnt = 1;

int dot[max];

vectorpath;

int f,x,y;

void dfs(int cur)

for(int i = 1 ; i <= maxx; i++)

} //cout<>f;

for(int i = 0 ; i < f; i++)

//cout<<"maxx = "<= 0; i--) ,s,e,cnt = 1;

double dis[105],ans = 0;

struct node node[105];

struct eage eage;

//priority_queuepq;

//bool operator < (const eage &a,const eage &b)

vector> g;

void init()

int size_s = g[s].size();

//cout<<"size_s = "} cnt++;

bk[cur] = 1;

int size_cur = g[cur].size();

for(int i = 0; i < size_cur; i++)

} }}int main()

cin>>m;

g.clear();

g.resize(105);

for(int i = 0 ; i >a>>b;

eage.w = cal(node[a].x,node[a].y,node[b].x,node[b].y);

eage.v = b;

g[a].push_back(eage);

eage.v = a;

g[b].push_back(eage);

} cin>>s>>e;

init();

//print_dis();

dij();

//print_dis();

printf("%.2f",dis[e]);

return 0;}/*

50 0

2 02 2

0 23 1

51 2

1 31 4

2 53 5

1 5*/

/*spfa*/

#includeusing namespace std;

const int max = 100010,inf = 2e8;

struct eage eage;

vector> g;

queueque;

int n,m,x,y,z;

int bk[max] = ,dis[max];

void init()

dis[1]=0;

}void spfa()

}} }

}int main()

// for(int i = 1; i <= n; i++)eage[max];

bool cmp(const eage &a,const eage &b)

void init()

int find_pre(int v)

bool merge(int u,int v)

return false;

}int main()

sort(eage+1,eage+e+1,cmp);

for(int i = 1 ; i <= e; i++)

return 0;

}

#include using namespace std;

const int max = 110,inf= 2e8;

int n,e,x,y,z,cnt = 1,bk[max] = ;

struct node node;

vector> g;

priority_queueque;

bool operator < (const node &a,const node &b)

void prim()

int q = que.top().v;

//cout<<"q = "<>n>>e;

g.resize(max);

g.clear();

for(int i =1 ; i <= e; i++)

prim();

return 0;

}

5.lca

6.求割點

7.樹的直徑

基礎dp模板:

1.最長上公升子串行lis

#include using namespace std;

int dp[105] = ;//儲存

int ans = -1;

int main()

}cout<<"ans = "<2.最長公共子串行lcs

/*lcs*/

#include using namespace std;

int dp[105][105] = ;

int main()

for(int i = 0 ; i < len_a; i++)else}}

cout<<"ans = "《其他:

樹的建立

/*前中求後*/

#include #include #include #include #include using namespace std;

struct bitree ;

string per,in;

int flag = 0;

bitree* build(int l,int r,int s,int e)

} root->lc = build(l,k-1,s+1,s+k-l);

root->rc = build(k+1,r,s+k-l+1,e);

if(l == r)

root->len_ = 1;

else

root->len_ = root->rc->len_ + root->lc->len_;

return root;

}void postorder(bitree* root)

int main()

線段樹模板

/*2.例1最大最小值的差*/

#include using namespace std;

const int n = 5001;

int value[n],maxx = -1,minx = 2e8;

struct nodest[4*n];

void creat_st(int xl,int xr,int root)

//開始遞迴

int mid = (xl + xr)/2;

creat_st(xl,mid,2*root);

creat_st(mid+1,xr,2*root+1);

//開始回溯

st[root].maxx = max(st[2*root].maxx,st[2*root+1].maxx);

st[root].minx = min(st[2*root].minx,st[2*root+1].minx);

}void print_st(int xl,int xr,int root)else if(xl > mid)else

}}int main()

creat_st(1,n,1);

update(4,10,1,n,1);

//print_st1(1);

query(1,4,1);

cout<<"maxx = "

}

藍橋杯 8 16複習

字串轉化字元陣列char 陣列名 字串名.tochararray 以逗號為分界將字串存入字串 整數陣列 只做arr到brr的轉換就是存入string 陣列 scanner sc newscanner system.in string arr sc.nextline string brr arr.sp...

藍橋杯基礎

問題描述 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 1.年份是4的倍數而不是100的倍數 2.年份是400的倍數。其他的年份都不是閏年。輸入格式 輸入包含乙個整數y,表示當前的年份。輸出格式 輸出一行,如果給定的年份是閏年,則輸出yes,否則輸出no。說明 當試題指定你...

演算法基礎 藍橋杯入門演算法

1.動態陣列 vectora push back pop.back size clear 可能存在空間 問題,用 vector swap v 來解決。2.集合 set v.insert erase cout 比較方式 bool operator const people rhs const 迭代器 ...