计蒜客 成绩统计 (Hash表)
**链接 : ** 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表)的更多相关文章
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
- 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] ...
- 计蒜客 作弊揭发者(string的应用)
鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- 计蒜客 等边三角形 dfs
题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...
- 计蒜客 方程的解数 dfs
题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...
- 计蒜客 买书 dfs
题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...
- 计蒜客:Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
随机推荐
- leetcode 217 Contains Duplicate 数组中是否有反复的数字
Contains Duplicate Total Accepted: 26477 Total Submissions: 73478 My Submissions Given an array o ...
- P4700 算
P4700 算 时间: 1000ms / 空间: 125829120KiB / Java类名: Main 背景 zhx和他的妹子出去玩. 描述
- windows 下 opencv 3.x 的安装及常见问题的解决
1. 下载与配置 下载地址:Releases - OpenCV library(选择合适的平台和版本) 配置步骤见:VS 2013 统一修改所有工程的目录配置(以 boost.opencv3 的安装为 ...
- mysql_mssql_access_2017年最新手机号段归属地数据库(17年4月更新)360569记录
mysql,mssql,access 三种格式免费分享给大家,末尾有下载地址 2017年4月最新版手机号段归属地,也叫手机归属地数据库 共360569条记录,三种格式:MYSQL,MSSQL,acc ...
- FSDataInputStream对象 读取数据
- 父页面调用子页面js的方法
iframe子页面调用父页面javascript函数的方法今天遇到一个iframe子页面调用父页面js函数的需求,解决起来很简单,但是在chrome浏览器遇到一点小问题.顺便写一下iframe的父页面 ...
- [App Store Connect帮助]一、 App Store Connect 使用入门(3)首页概述
从首页可以访问 App Store Connect 的各个部分.您仅能访问每个部分中与您的用户职能相关联的功能. [提示]通过点按任何页面顶部的“App Store Connect”,您可以随时返回 ...
- Linux下sublime 无法输入中文的解决
个人认为linux下的编辑器,对于小白来说,最好用的就是sublime了,但是,安装之后敲代码无法输入中文 ,很尴尬. 百度后,发现了解决方法. 项目链接:https://github.com/lyf ...
- maven+ssm+oracle实现简单的增删改查
首先看一下项目结构 第一步先导入jar包 pom.xml <properties> <spring.version>4.3.18.RELEASE</spring.vers ...
- Elasticsearch搜索常用API(利用Kibana来操作)
上面我们已经介绍了Elasticsearch的一些基本操作,这篇文章属于进阶篇,我们一起来学习. 前面我们创建了sdb和user文档,现在我们来看如何查询user中所有的文档呢? GET /sdb/u ...