博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ 138 找球号(二)
阅读量:6792 次
发布时间:2019-06-26

本文共 1850 字,大约阅读时间需要 6 分钟。

1 #include
2 #include
3 #define N 1000010 4 #define MOD 110023 5 int ind,key[N],next[N],order[N];//key[i]保存第i个小球的编号, 6 //next[]保存当出现冲突时同一余数对应的多个编号的值 7 //order[i]保存余数为i时对应的球的序号,进而找到其编号 8 void add(int n) 9 {10 int remainder;11 remainder=n%MOD;12 key[ind]=n; 13 next[ind]=order[remainder]; 14 order[remainder]=ind;15 ind++;16 }17 int main()18 {19 int i,j,n,m,number,tmp;20 char cmd[6];21 memset(order,-1,sizeof(order));22 scanf("%d",&n);23 while(n--){24 scanf("%s%d",cmd,&m);25 if(*cmd=='A'){26 for(i=0;i

以前只知道哈希算法,但没有认真练习过,今天练习了一下,感觉哈希查找效率很高!

贴上最优代码:

1   2 #include 
3 #include
4 #include
5 using namespace std; 6 7 unsigned int a[3125010] = {
0} ; 8 9 int main()10 {11 int n , m , x ;12 int i ;13 char op[10] ;14 scanf("%d", &n ) ;15 while( n-- > 0 )16 {17 fflush( stdin ) ;18 memset( op , 0 , sizeof(op) );19 scanf("%s", op ) ;20 if( strcmp( op , "ADD" ) == 0 )21 {22 scanf("%d", &m ) ;23 for( i = 0 ; i < m ; i++ )24 {25 scanf("%d", &x ) ;26 27 a[x/32] |= 1 << ( x % 32 ) ;28 }29 }30 else31 {32 scanf("%d", &m ) ;33 for( i = 0 ; i < m ; i++ )34 {35 scanf("%d", &x ) ;36 37 if( ( a[x/32] & ( 1 << ( x % 32 ))) )38 {39 printf("YES\n") ;40 }41 else42 printf("NO\n") ;43 }44 }45 }46 return 0 ;47 }

 

转载于:https://www.cnblogs.com/shihuajie/archive/2013/03/21/2973611.html

你可能感兴趣的文章
underscore源码解析1
查看>>
html5从0到1-html5的简易数据库开发(18)
查看>>
spring cloud gateway 全局过滤器
查看>>
RAP Mock 工具模拟数据
查看>>
Confluence 6 确定一个生产系统备份方案
查看>>
在Chrome浏览器中保存的密码有多安全?
查看>>
撩人情话(三)
查看>>
JetBrains Product Pack for Students
查看>>
内存顺序(Memory Order)
查看>>
shiro实战系列(一)之入门实战
查看>>
BGP-RR 路由反射器工作原理
查看>>
算法作业:求一个集合中所有子集元素之和
查看>>
Linux内核驱动之延时 【转】
查看>>
Portal的简单使用
查看>>
springmvc4环境简单搭建和定时任务
查看>>
分布式锁的实现方式——ACID数据库、缓存或者是zk
查看>>
机器人在水下的精彩生活:探索更神秘的海洋世界
查看>>
和我一起学CSLA.NET----创建业务对象3
查看>>
Autodesk云计算-- HomeStyler在线家居设计平台
查看>>
linux rtc 接口【转】
查看>>