摘要:
简单的dfs从1节点开始往下深搜,然后回溯记录路径 #include<bits/stdc++.h> using namespace std; const int N=1e4+10; vector<int>a[N]; int n,m; vector<int>p; void dfs(int x,int 阅读全文
摘要:
从一个点开始,每次都找与这个点最近的点,近队列,直到队列为空,是关于点的算法,时间复杂度为nlog(n) 模板: #define int long long using namespace std; const int N=9e5+10; int n,m; vector<pair<int,int>> 阅读全文
摘要:
平衡字符串的性质 将左括号看出1,右括号看成-1 (1)最后加起来是0 (2)中间一直要是正数 所以代码如下 using namespace std; int n; int dx[2]={1,-1}; int ans=0; void dfs(int cur,int x){ if(x<0)return 阅读全文
摘要:
next_permutation全排列公式 数据不大,直接暴力全排列模拟出数据即可 using namespace std; int p[9]={1,2,3,4,5,6,7,8,9}; int main(){ int a,b,c; cin>>a>>b>>c; int cnt=0; do{ int x 阅读全文
摘要:
dfs深搜就行,搜到就结束,然后用一个数组来记录路径,重点是回溯 using namespace std; int sum=0; int dx[4]={0,0,1,-1}; int dy[4]={1,-1,0,0}; int vis[20][20]; char mp[20][20]; char an 阅读全文
摘要:
每次都找最小的边,一直到n-1个边为止,是关于边的算法,时间复杂度为mlog(m) using namespace std; const int N=5e5+10; struct edge{ int u,v,w; }edge[N]; int fa[N]; int ans=0; int cnt=0; 阅读全文
摘要:
B - Minimize Abs 1 思维题 题意:给定一个范围,你选择一个数,使得 思路:如果A[i]在l,r中间,那么直接打印就行,如果不是就打印就近的 using namespace std; void solve(){ int n,l,r; cin>>n>>l>>r; for(int i=1 阅读全文
摘要:
2023 11 27 A. Cover in Water 题意是:有一片坑,可以进行两个操作,一个是在一个坑里倒水,一个是把水到在另一个坑里,如果一个坑的左右两边都有水,那么这个坑也会有水 思路:想想发现,只要有三个连续的坑,那么所有的坑都可以被填上,如果没有就只能一个一个的填。 using nam 阅读全文
摘要:
2023 11 27 A. Jagged Swaps 题意是:给你一个数组进行无数次的操作 问你能不能单调 思路:通过观察发现进行操作大的一定会被放在后面,所以一定会单调,但是操作是从2开始的,所以下表1的地方一定要是1 using namespace std; int a[20]; void so 阅读全文
摘要:
题意是:给定一个长度为 N 的数列,和 M 次询问,求出每一次询问的区间内数字的最大值。 ST表的基本功能是对区间进行查询,其核心使用的是倍增的思想 f[i][k]:意思是从第i个数开始往后2^k个数 f[i][k]=max(f[i][k-1],f[i+2^k-1][k-1]) 求【l,r】区间 m 阅读全文