计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
2024-10-13 00:33:51
传送门
用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会
可能因为这个生成的随机数有循环的情况,不是完全均匀的
而且这题hash表的长度也可以开的很大
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#define INF 0x7f7f7f7f
#define ll long long
#define pii pair<ll,int>
#define MOD 10000005
using namespace std;
int n;
ll m;
pii H[MOD];
vector<int> vs;
void insert(ll x){
int t=x%MOD;
while(H[t].first&&H[t].first!=x){
t++;
if(t>=MOD){
t=;
}
}
if(!H[t].second) vs.push_back(t);
H[t]=make_pair(x,H[t].second+);
}
int main()
{
// freopen("data.in","r",stdin);
scanf("%d",&n);
scanf("%lld",&m);
for(int i=;i<=n/;i++){
ll t;scanf("%lld",&t);
insert(t);
for(int j=;j<=;j++){
ll q=(t*+)%m;
insert(q);
t=q;
}
}
ll ans=;
for(int i=;i<vs.size();i++){
ans+=((H[vs[i]].second+H[vs[i]].first)/(H[vs[i]].first+))*(H[vs[i]].first+);
}
printf("%lld\n",ans);
return ;
}
最新文章
- 【转载】使用Pandas对数据进行筛选和排序
- Mysql存储过程调用
- html和css的编码规范
- PAT 1009. 说反话 (20)
- Android拓展系列(10)--使用Android Studio阅读整个Android源码
- mysql创建表与索引
- Visual Studio创建跨平台移动应用_02.Cordova Extension
- Linux shell入门基础(三)
- HTML5画布(图像)
- JavaScript 公有 私有 静态属性和方法
- 开发框架(OrchardNoCMS)介绍(一)
- java服务器获取客户端ip
- thinkphp使用phpqrcode生成带logo二维码
- nginx启动脚本,手动编辑
- python 豆瓣采集
- haproxy配置文件详解和ACL功能
- 【原创】JAVA面试解析(有赞一面)
- 重读《Java编程思想》
- 一步一步学习IdentityServer3 (15) 授权模式那些事
- jQuery之scroll用法实例