当前位置:实例文章 » 其他实例» [文章]Yjmstr的算法竞赛模板(updating)

Yjmstr的算法竞赛模板(updating)

发布人:shili8 发布时间:2024-11-07 22:10 阅读次数:0

**YJMSTR 的算法竞赛模板 (Updating)****前言**

作为一个算法竞赛爱好者,写出高效、可维护的代码是非常重要的。以下是 YJMSTR 的算法竞赛模板,包含了常见的数据结构和算法实现。

**模板结构**

markdown# 模板名称##问题描述## 数据范围## 输入输出格式## 提示和约束###代码实现#### [数据结构]

#### [算法]

#### [其他]


**常见的数据结构**

### 数组
cpp#include <iostream>
#include <vector>

using namespace std;

int main() {
 int n;
 cin >> n;
 vector<int> arr(n);
 for (int i =0; i < n; i++) {
 cin >> arr[i];
 }
 // ...
}


### 链表
cpp#include <iostream>
#include <list>

using namespace std;

struct Node {
 int data;
 Node* next;
};

Node* createList(int n) {
 Node* head = new Node();
 Node* cur = head;
 for (int i =0; i < n; i++) {
 cur->data = i;
 cur->next = new Node();
 cur = cur->next;
 }
 return head;
}

void printList(Node* head) {
 while (head != nullptr) {
 cout << head->data << " ";
 head = head->next;
 }
}


### 栈和队列
cpp#include <iostream>
#include <stack>

using namespace std;

int main() {
 stack<int> s;
 // ...
}

// 队列实现#include <queue>

int main() {
 queue<int> q;
 // ...
}


**常见的算法**

### 二分查找
cpp#include <iostream>
#include <vector>

using namespace std;

int binarySearch(vector<int>& arr, int target) {
 int left =0;
 int right = arr.size() -1;
 while (left <= right) {
 int mid = left + (right - left) /2;
 if (arr[mid] == target) {
 return mid;
 } else if (arr[mid] < target) {
 left = mid +1;
 } else {
 right = mid -1;
 }
 }
 return -1; // 未找到}


### DFS和BFS
cpp#include <iostream>
#include <vector>

using namespace std;

void dfs(vector<vector<int>>& grid, int x, int y) {
 if (x < 0 || y < 0 || x >= grid.size() || y >= grid[0].size()) return;
 // ...
}

void bfs(vector<vector<int>>& grid, int x, int y) {
 queue<pair<int, int>> q;
 q.push({x, y});
 while (!q.empty()) {
 int curX = q.front().first;
 int curY = q.front().second;
 // ...
 q.pop();
 }
}


**其他**

### 位运算
cpp#include <iostream>

using namespace std;

int main() {
 int a =5; //101 int b =3; //011 int result = a & b; //001 cout << result << endl;
}


### 数学运算
cpp#include <iostream>

using namespace std;

int main() {
 long long n;
 cin >> n;
 long long result = (n * (n +1)) /2;
 cout << result << endl;
}


以上是 YJMSTR 的算法竞赛模板,包含了常见的数据结构和算法实现。希望对你有所帮助!

相关标签:算法图论数据结构
其他信息

其他资源

Top