**链接 : ** Here!

**思路 : ** 如果用 $STL$ 的 $map$ 或者是使用 $unordered\underline{}map$ 的话是会 $T$ 的, 所以得手写一个 $hash表$. 其实这个题题意一开始看的话还是蛮难以理解的. 但是如果理解了题意, 这道题就非常简单了.

题目样例解析 : 小 $K$ 一共采访了 $5$ 个同学, 他们反馈的结果是 $1, 1, 2, 2, 3$ . 那么, 最优解为 $9$, 下面给出一个表, 表示最优解的详细情况. 首先先给 $5$ 名同学编号 $1, 2, 3, 4, 5$ , $1$ 号同学和 $2$ 号同学都说有 $1$ 个人跟他们成绩一样, 因此可以把 $1,2$ 放到一个集合中, 发现满足要求, 不需要添加新同学($+0$). $3$ 号同学和 $4$ 号同学都说有 $2$ 个人跟他们成绩一样, 因此可以把 $3, 4$ 放到一个集合中, 发现不满足要求, 需要添加新同学($+1$). $5$ 号同学说有 $3$ 个人跟他成绩一样, 因此可以把 $5$ 放到一个集合中, 发现不满足要求, 需要添加新同学($+3$). 因此答案就是 $5 + 0 + 1 + 3 = 9$

**思路 : ** 注意数据范围!注意数据范围!!!


#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long ll;
const int MAX_N = 10000019; ll _hash[MAX_N + 10] = {0}, _count[MAX_N + 10];
ll N, M;
ll _seed; void insert_hash(ll x) {
ll pos = (x % MAX_N);
// 处理hash冲突, 如果模一个素数的话...应该很少遇到冲突
while (_hash[pos] != x && _hash[pos] != 0) {
pos = pos + 1;
pos %= MAX_N;
}
if (_hash[pos] == 0) {
_hash[pos] = x;
}
++_count[pos];
} int main() {
scanf("%lld%lld", &N, &M);
for (int i = 0 ; i * 100 < N ; ++i) {
scanf("%lld", &_seed);
for (int j = 0 ; j < 100 ; ++j) {
insert_hash(_seed + 1);
_seed = (_seed * 109 + 107) % M;
}
}
ll ans = 0;
for (int i = 0 ; i < MAX_N ; ++i) {
if (_hash[i] == 0) continue;
ans += ((_count[i] % (_hash[i]) == 0) ? _count[i] : (ll)(_count[i] / (_hash[i]) + 1) * (ll)(_hash[i]));
}
printf("%lld\n", ans);
return 0;
}

计蒜客 成绩统计 (Hash表)的更多相关文章

  1. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  2. 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)

    https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...

  3. 2019icpc徐州站 Cat 计蒜客 - 42540 && The Answer to the Ultimate Question of Life, The Universe, and Everything. 计蒜客 - 42545

    VJ链接:https://vjudge.net/contest/412095#problem/A Cat 计蒜客 - 42540 题意: 给你一个区间[L,R],给你现在拥有的钱S.你需要从[L,R] ...

  4. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  5. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  6. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  7. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  8. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  9. 计蒜客:Entertainment Box

    Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...

随机推荐

  1. 怎样对Android设备进行网络抓包

    问题描写叙述: 前段时间自己的app訪问server的url总是会出现间接性失败的问题,于是和server的同事开了个会.提出了他们server存在的这个bug,我的同事自然说自己的server没问题 ...

  2. Android应用资源

    Java刚開始学习的人直接在Java源代码使用"hello" 和123 类型的字符串和整型.但时间长了就会忘记当初定义的原因,有经验的或许会定义字符串常量ResultSet.TYP ...

  3. apt --fix-broken install

    1 自动修复安装出现broken的package 但是,如果还是失败的话,就需要手动进行干预了.

  4. regEx in Groovy

    // 使用正则 得到非纯XML文件中的信息 // Response 经常得到的不是纯XML def pattern = ~/(<NewDataSet>).*(<\/NewDataSe ...

  5. bzoj3332: 旧试题

    这题就是最大生成树. 把两个点之间的期望建边排序. 把相同的期望一起做,那么在这个做之前,这些有着相同期望的点两两肯定不连,否则就输出No了. 相同的做完之后,再次for一遍check一下有没有两两之 ...

  6. qtree4

    https://zybuluo.com/ysner/note/1236834 题面 给出一棵边带权的节点数量为\(n\)的树,初始树上所有节点都是白色.有两种操作: 改变节点\(x\)的颜色,即白变黑 ...

  7. 洛谷 P4178 Tree —— 点分治

    题目:https://www.luogu.org/problemnew/show/P4178 这道题要把 dep( dis? ) 加入一个 tmp 数组里,排序,计算点对,复杂度很美: 没有写 sor ...

  8. TS流解析 四

    一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等 ...

  9. Spark 机器学习 ---Word2Vec

    package Spark_MLlib import org.apache.spark.ml.feature.Word2Vec import org.apache.spark.sql.SparkSes ...

  10. A. Train and Peter

    A. Train and Peter time limit per test 1 second memory limit per test 64 megabytes input standard in ...