摘要: 首先是正常使用stl进行链表的使用 双向链表无非是每个节点存储了上一个节点的指针和下一个节点 的指针,可以进行增删等操作,主要这样是O(1)复杂度 //手打链表 #include<iostream> using namespace std; const int MAXN= 100010; struc 阅读全文
posted @ 2024-02-28 21:25 lovevivi121 阅读(22) 评论(0) 推荐(0)
摘要: pair queue<pair<int,int> > q; 它可以将两种数据类型的值组合成一个值存入 队列中大体是这样操作: queue<pair<int,int> > q;//定义 q.push(make_pair(x,y));//入队 //取队首 xx=q.front().first;//第一个 阅读全文
posted @ 2024-02-28 21:25 lovevivi121 阅读(43) 评论(0) 推荐(0)
摘要: while (cin>>c)// 一直读入字符,直到Ctrl+z {} 阅读全文
posted @ 2024-02-27 21:25 lovevivi121 阅读(17) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; int n; void dfs(int x) { if(x == 1) { return; } if(x%2 == 0) { dfs(x/2); printf("%d ",x/2); return; } els 阅读全文
posted @ 2024-02-26 21:26 lovevivi121 阅读(29) 评论(0) 推荐(0)
摘要: 1.常规做法 这个做法还是比较简单的,就是把输入的数都存起来,然后反向遍历输出就好。代码就是我一年前的第一版,如下: #include<iostream> using namespace std; int x[100],c=0; int main(){ for(int i=0;;i++){ cin> 阅读全文
posted @ 2024-02-26 21:25 lovevivi121 阅读(24) 评论(0) 推荐(0)
摘要: include<bits/stdc++.h> using namespace std; set <int> st; int n; int main() { scanf("%d",&n); for(int i=0;i<n;i++) { int tmp; scanf("%d",&tmp); st.ins 阅读全文
posted @ 2024-02-25 21:25 lovevivi121 阅读(15) 评论(0) 推荐(0)
摘要: gcd递归实现辗转相除法 int gcd (int x,int y) { if(y) return gcd(y,x%y); else return x; } 最小公倍数怎么求?lcm n * m / gcd(n,m) 在scanf数组的时候注意语法 如何求多个数的最大公因数,其实就是求得两两之间的最 阅读全文
posted @ 2024-02-25 21:20 lovevivi121 阅读(26) 评论(0) 推荐(0)
摘要: auto check = [&] (int x) -> bool {}; function<bool(int, int)> cmp = [](int a, int b) {return a > b;}; 阅读全文
posted @ 2024-02-24 21:20 lovevivi121 阅读(22) 评论(0) 推荐(0)
摘要: Mutex package main import ( "fmt" "sync" ) var mu sync.Mutex var chain string func main() { chain = "main" A() fmt.Println(chain) } func A() { mu.Lock 阅读全文
posted @ 2024-02-23 21:20 lovevivi121 阅读(19) 评论(0) 推荐(0)
摘要: 管道channel 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的 goroutine 中容易发生竞态问题。为了保证数据交换的正确性,很多并发模型中必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。 阅读全文
posted @ 2024-02-22 21:20 lovevivi121 阅读(33) 评论(0) 推荐(0)