
数据结构
_whaleshark0622_
ACM选手,邮箱whalesong0622@163.com,QQ联系方式847978232,加我好友备注一下学校和姓名就好啦~
展开
-
HDU 3038带权并查集
#include <bits/stdc++.h>#define ll long longconst 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 · 175 阅读 · 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 · 171 阅读 · 0 评论 -
tokitsukaze and Soldier 优先队列
https://ac.nowcoder.com/acm/problem/50439将人从大到小排列,这样子的好处在于万一队列新进来了人,当前人数大于这个人能接受的人数上限,可以从队列里删除人,且根据贪心肯定是删除队列里人值最小的人,那么就可以应用优先队列。反之没有贪心策略。#include <bits/stdc++.h>#define ll long longconst int maxn = 1e6 + 10;using namespace std;struct node{原创 2020-11-22 19:46:54 · 118 阅读 · 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 · 195 阅读 · 0 评论