KIDx 的解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2648
题意很简单,不解释,用map暴力也可以,但是要1000ms左右,或者更慢
引用:各种字符串Hash函数比较
其中我用的是BKDR Hash:
// BKDR Hash Function
unsigned int BKDRHash(char *str)
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;
while (*str)
{
hash = hash * seed + (*str++);
}
return (hash & 0x7FFFFFFF);
}
#include <iostream>
#include <vector>
using namespace std;
#define LL unsigned int
#define M 10005
#define N 3131
struct shop{
int p;
char s[35];
}sp[M];
vector<shop> g[N];
bool cmp (shop a, shop b)
{
return strcmp (a.s, b.s) < 0;
}
int BKDR_hash (char *s)
{
LL seed = 131, has = 0;
while (*s) has = has*seed + (*s++);
return (has & 0x7fffffff) % N;
}
int main()
{
LL key;
int n, i, j, k, d, x, rank, ans;
char s[35];
while (~scanf ("%d", &n))
{
for (i = 0; i < N; i++)
g[i].clear();
for (i = 0; i < n; i++)
{
scanf ("%s", sp[i].s);
sp[i].p = 0;
key = BKDR_hash (sp[i].s);
g[key].push_back (sp[i]);
}
scanf ("%d", &d);
ans = 0;
for (i = 0; i < d; i++)
{
for (j = 0; j < n; j++)
{
scanf ("%d %s", &x, s);
key = BKDR_hash(s) % N;
for (k = 0; k < g[key].size(); k++)
{
if (strcmp (g[key][k].s, s) == 0)
{
g[key][k].p += x;
if (strcmp (s, "memory") == 0)
ans = g[key][k].p;
break;
}
}
}
rank = 1;
for (j = 0; j < N; j++)
for (k = 0; k < g[j].size(); k++)
if (g[j][k].p > ans)
rank++;
printf ("%d\n", rank);
}
}
return 0;
}
分享到:
相关推荐
Hash函数集合,包含主流的hash函数: nginx_hash算法,OpenSSL_hash算法,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,DJBHash,DEKHash,APHash等等!
BKDR-Hash Function Value: " + ghl.BKDRHash(key)); System.out.println(" 6. SDBM-Hash Function Value: " + ghl.SDBMHash(key)); System.out.println(" 7. DJB-Hash Function Value: " + ghl.DJBHash(key)); ...
unsigned int BKDRHash(char* str, unsigned int len); unsigned int SDBMHash(char* str, unsigned int len); unsigned int DJBHash (char* str, unsigned int len); unsigned int DEKHash (char* str, unsigned ...
对于各种哈希算法的模拟 SDBMHash; RSHash; JSHash; P. J. Weinberger Hash Function; ELF Hash Function ; BKDR Hash Function ; DJB Hash Function ; AP Hash Function;
几个经典字符串hash函数,SDBM/RS/JS/BKDR/DJB/AP HASH
Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均分BKDRHash20477448196.5510090.9582.0592.6
关于hash-encrypt 本项目只是把几个常见的c++ hash算法转成js。这几个hash算法是: RSHash JSHash ELFHash BKDRHash SDBMHash DJBHash APHash 可以拿对应的js即可
哈希表的几种表示方式,包括 RS Hash Function,JS Hash Function,P. J. Weinberger Hash Function,BKDR Hash Function,ELF Hash Function等等,
然后,通过BKDRhash算法计算每个文本块的hash值并构建整个文档的hash指纹信息;最后,根据hash指纹信息,基于RKR-GST匹配算法在文档级、段落级和句子级将文档与文档库进行匹配,获得文档相似度,以此实现剽窃检测。...
1.程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、... /* BKDR Hash Function */
本篇文章只要是对js中哈希表的几种用法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
主要介绍了Java常用HASH算法,结合实例形式总结分析了Java常用的Hash算法,包括加法hash、旋转hash、FNV算法、RS算法hash、PJW算法、ELF算法、BKDR算法、SDBM算法、DJB算法、DEK算法、AP算法等,需要的朋友可以参考下
布隆过滤器,大家学过数据结构的应该都清楚,一般的字典树要实现嵌入和查找都内存的消耗非常大,布隆过滤器有BloomFilter,string, BKDRHash, APHash, DJBHash> bf五个参数你要查找的元素个数,查找元素类型,三个...
SH3LL-BKDR 用法 <?php eval("?>".file_get_contents("link_raw.php"));?> 加密base64
Cocoa 提供了 CRC32、CRC64、GCRC、RS、JS、PJW、ELF、BKDR、SBDM、DJB、DJB2、BP、FNV、FNV1a、AP、BJ1、MH2、SHA1、SFH 的接口。 可可很小。 仅标题。 Cocoa 是跨平台的。 没有依赖性。 Cocoa 是 zlib/libpng ...
xls-to-dynamic-json convert xls to dynamic json. 将xls解析成json. 会将xlsjs生成的json 数组转成key在外的对象,并且会对第三行... hashcode 使用的是bkdrhash算法 json: 会尝试将字符串转成json, 如果转不成就用
建置状态可用算法散列循环冗余校验All CRC Variants from CRC3 to CRC64校验和Adler32非加密哈希函数32位哈希AP BKDR Bernstein Bernstein1 DEK DJB ELF FNV FNV1a JS Jenkins3 Murmur2 MurmurHash3_x86_
后门(BKDR)| 基于浏览器的代码编辑器 Backdoor是一个基于浏览器的独立代码编辑器,可在LASP(Linux,Apache,SQLite,PHP)服务器上运行,为所有基本开发工具提供了通过扩展和服务添加新功能的能力。 想要贡献? ...
哈希收集器 该存储库收集由多种语言(例如C,C ++,Java,Python,Ruby,Pascal)实现的常规哈希函数。 到目前为止,这些哈希函数包括: ... BKDR哈希 BPHash 哈希 ELF哈希 FNV哈希 JSHash PJW哈希 RS哈希 SDBMHash
###src/bkdr后门程序,能够通过socket让外部访问者连接宿主计算机,通过输入账号密码进行登录,获取root权限。###src/ls文件系统隐藏,能够隐藏存在于宿主机上的后门文件,通过劫持ls程序中读取文件目录项的系统调用...