排序
风声sp
这个人很懒,还没想到说点啥
展开
-
hash排序----输出前m大的数
T最大100,n最大5e5,O(n)的方法才能勉强卡过去,因此,快速排序也不行,需要一种更快的非交换类排序方法,hash排序。因为数最大为5e5,我们用hash表来统计每个数出现的次数,将数字当成下标,那么从最大的数遍历到最小的数,就是从大到小的顺序。这种方法和数字的大小有关,本体中n有负数,处理过后n最大为1e6,所以时间复杂度内可以解决。代码部分#include <bits/stdc++...原创 2018-07-08 23:46:29 · 407 阅读 · 0 评论 -
Codeforces Round #489 (Div. 2) ---- A. Nastya and an Array
给了我们一个数组,可以给整个数组的元素加上一个数或者减去一个数,问多少次操作之后所有的数都变成了0因为每次操作都是针对整个数组的,那么不相同的数一定不可能同时变成0,因此我们只需要对数组去重即可,然后对于已经是0 的数,我们不需要给出操作,因此如果数组中有0,答案减去1这里记录一下去重的unique函数, len = unique(a,a+n) - a 要减去a的地址,这个函数是针对相...原创 2018-09-15 16:37:23 · 181 阅读 · 0 评论 -
Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2), problem: (D) Social Circles
传送门:http://codeforces.com/contest/1060/problem/D 感觉比c题好想多了,因为环可以有随便多个,自己和自己也可以成环,那就 记录l,和 r 然后两个数组sort一下,按下标配对就好了,配对取大的那个,所有对求和,然后加上n个人就是答案,代码如下。 #include <bits/stdc++.h>usin...原创 2018-10-05 11:15:40 · 2109 阅读 · 0 评论 -
P1525 关押罪犯
并查集,自己的思路和食物链这题非常的像,把在并查集中和父亲关系为 1 记为和父亲节点在同一个集合里面,0记为不在同一个集合里面,类似的可以推出一个节点和爷爷节点的关系为value[now] = (value[father[now]] + value[now]) % 2;对边排序,从大的边开始,尽量边链接的两个点不在一个集合里面,如果在,判断关系是不是 1 ,如果是就和 ans 变量取max,最...原创 2019-02-17 15:27:07 · 186 阅读 · 0 评论