![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
_whaleshark0622_
ACM选手,邮箱whalesong0622@163.com,QQ联系方式847978232,加我好友备注一下学校和姓名就好啦~
展开
-
HDU 3038带权并查集
#include <bits/stdc++.h> #define ll long long const int maxn = 1e6+10; using namespace std; int par[maxn]; int height[maxn]; int sum[maxn]; void init(){ for(int i = 0; i <= maxn; i++){ par[i] = i; height[i] = 0;原创 2021-05-04 16:01:37 · 126 阅读 · 0 评论 -
Codeforces 1493D GCD of an array 数论,数据结构
题意:给一个长度为n的数组,q次询问,每次修改a[i]乘等x,求每次修改完之后数组的gcd 思路 ①gcd由各个数的因子最小值构成,其中一个因子的数量如果到达n的话,那么这n个因子里的数量最小值就会对gcd有贡献 ②记录一个数有哪些因子可以通过map来记录,同时支持修改,删除和查最小值的数据结构就是multiset。 ③每次a[i]*x,可以先对x进行质因数分解,然后对原来的map和multiset进行维护。 维护思路: 如果之前已经有n个这个因子了,那么先对gcd除掉这个因子的贡献,然后加入这个数之后再原创 2021-03-29 20:32:34 · 137 阅读 · 0 评论 -
tokitsukaze and Soldier 优先队列
https://ac.nowcoder.com/acm/problem/50439 将人从大到小排列,这样子的好处在于万一队列新进来了人,当前人数大于这个人能接受的人数上限,可以从队列里删除人,且根据贪心肯定是删除队列里人值最小的人,那么就可以应用优先队列。 反之没有贪心策略。 #include <bits/stdc++.h> #define ll long long const int maxn = 1e6 + 10; using namespace std; struct node{原创 2020-11-22 19:46:54 · 87 阅读 · 0 评论 -
Codeforces 1484D Playlist
Codeforces 1484D 题意:一个循环链表,如果下一个数与当前数互质,那么删除下一个数。问被删除的数的坐标有哪些。 思路:利用next模拟链表,同时利用队列来保证一个数在状态不变的情况下不会被访问多次。 #include <bits/stdc++.h> using namespace std; void Solve() { int n; cin>>n; vector<int>v(n); for(auto &it:v)原创 2021-03-28 11:32:13 · 159 阅读 · 0 评论