c++
codeducker
逢山开路,遇水架桥
展开
-
并查集模板
并查集 无权并查集(路径压缩) 并查集(非rank优化)//注意我写的第一位不能有0哦,因为我的强迫症让我不想初始化 int fa[10005]; inline int find(int u){ if ( 0==fa[u]) return fa[u]=u; int x=u,t; while(x!=fa[x]) x=fa[x]; while(u!=x){ t=fa[u];fa[u]=x;u=t; } return x; } inline void un(int u,原创 2021-08-23 00:20:41 · 71 阅读 · 0 评论 -
多线程学习笔记6
std::shared_future 这个对象的get()可以调用多次 int run1( ){ cout<<"thread_id : "<<std::this_thread::get_id()<<endl; for(int i=1;i<=1e2;i++){ cout<<1; } std::chrono::seconds dura(2);//等待5秒 std::this_thread::sleep_for(dura);//休息dura原创 2021-08-23 00:06:08 · 122 阅读 · 0 评论 -
维护有删除操作的动态区间中位数
维护有删除操作的动态区间中位数 一般常用的维护区间中位数的方法是用大顶堆与小顶堆来操作 但是如果涉及到删除操作那么用这种方法便不是很好操作(也许是我太菜) 构造开始 我们维护删除操作的方法就是用set模拟大小顶堆 那么既然用的set,那么我们的区间里的每个数都必须是不同的 , 我大概想了下 , 如果要有相同值的话 , 我们就要用map了 ,这里我直接贴set的代码了,有空再更新map的代码,对了,用map来维护的话,我们记得要erase掉map的value==0的key这样才能保证我们的取begin值是最大原创 2021-08-20 23:33:57 · 372 阅读 · 0 评论 -
多线程学习笔记5
std::async std::future #include<future> std::async是一个函数模板 , 用来启用一个异步任务 , 启动起来之后 , 返回一个std::future(类模板)对象 启动一个异步任务 : 创建一个线程并开始执行对应的线程入口函数 , 返回一个std::future对象 std::future里面就含有线程入口函数返回的结果( 线程返回结果 ) , 我们通过调用它的成员函数get()来获取 std::future提供了一种访问异步操作结果的机制原创 2021-08-17 21:31:52 · 127 阅读 · 0 评论 -
多线程学习笔记4
std::condition_variable notify_one() wait class A{ public: std::unique_lock<std::mutex> my_move(){ std::unique_lock<std::mutex> tem(my_mutex1); return tem; } void inmRQ(){ for(int i=1;i<=100000000;i++){ cout<<原创 2021-08-13 21:50:22 · 162 阅读 · 0 评论 -
多线程学习笔记3
std::lock() 一次锁住>=2个互斥量 (谨慎使用) 它不存在因为多个线程因为锁的顺序而导致的死锁风险 只有同时锁住才会继续向下执行(要么都锁住,要么都不锁) std::lock(my_mutex1,my_mutex2,..); my_mutex1.unlock();//解锁还是要继续写 my_mutex2.unlock(); std::adopt_lock 在用这个参数前,我们一定要记得先lock std::lock()与std::lock_guard结合使用 有了std::adop原创 2021-08-11 23:47:52 · 134 阅读 · 0 评论 -
多线程学习笔记2
创建多个线程 vector<thread> g; void myjob(int num){ cout<<num<<endl; } for(int i=1;i<=10;i++){ g.push_back(thread (myjob,i)); } for(auto item=g.begin();item!=g.end();item++){ item->join(); } 线程执行的顺序是乱的 , 这与操作系统内部对线程的运行调度机制有关 数据共享原创 2021-08-10 21:46:03 · 230 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2) C题补题记录
Codeforces Round #737 (Div. 2) C题补题记录 C. Moamen and XOR 题目链接 题目大意 : 给一个大小为 n 的数组 a , 所有ai满足 ai<2^k 求满足 a1&a2&a3&…&an≥a1⊕a2⊕a3⊕…⊕ana1&a2&a3&…&an≥a1⊕a2⊕a3⊕…⊕an. 的a数组数目 简记为x>=y 思路 : 先分奇偶讨论 , 然后按每一位去讨论 n%2==0时 每一位只原创 2021-08-10 11:35:55 · 108 阅读 · 0 评论 -
多线程学习笔记1
多线程 注 : 看着视频教程的手写笔记 , 如有错误 , 评论更正 #include<iostream> #include<cstdio> #include<thread> #include<stdlib.h> using namespace std; void myprint(){ cout<<"子线程开始了"<<endl; cout<<"子线程结束了"<<endl; } int ma原创 2021-08-09 00:02:30 · 316 阅读 · 0 评论