日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nyoj-138-找球号(二)----hash算法之除留余数法+vector

發(fā)布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nyoj-138-找球号(二)----hash算法之除留余数法+vector 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

找球號(二)

時間限制:1000?ms ?|? 內(nèi)存限制:65535?KB 難度:5 描述
在某一國度里流行著一種游戲。游戲規(guī)則為:現(xiàn)有一堆球中,每個球上都有一個整數(shù)編號i(0<=i<=100000000),編號可重復,還有一個空箱子,現(xiàn)在有兩種動作:一種是"ADD",表示向空箱子里放m(0<m<=100)個球,另一種是"QUERY”,表示說出M(0<M<=100)個隨機整數(shù)ki(0<=ki<=100000100),分別判斷編號為ki 的球是否在這個空箱子中(存在為"YES",否則為"NO"),先答出者為勝。現(xiàn)在有一個人想玩玩這個游戲,但他又很懶。他希望你能幫助他取得勝利。 輸入
第一行有一個整數(shù)n(0<n<=10000);
隨后有n行;
每行可能出現(xiàn)如下的任意一種形式:
第一種:
一個字符串"ADD",接著是一個整數(shù)m,隨后有m個i;
第二種:
一個字符串"QUERY”,接著是一個整數(shù)M,隨后有M個ki;

輸出
輸出每次詢問的結(jié)果"YES"或"NO".
樣例輸入
2 ADD 5 34 343 54 6 2 QUERY 4 34 54 33 66
樣例輸出
YES YES NO NO
#include<stdio.h> #include<string.h> #include<vector> using namespace std; #define M 12345 vector<int> hash[M]; void ADD(int x) {int h=x%M;hash[h].push_back(x);//把每個取余之后的值壓入vector; } void Query(int x) {int h=x%M;bool flag=false;for(int i=0;i<hash[h].size();i++)//每次取余之后查找此余數(shù)所存的值{if(x==hash[h][i]){flag=true;printf("YES\n");break;}}if(!flag) printf("NO\n"); } int main() {int N,n,m,i,a,b;char str[10];scanf("%d",&N);while(N--){scanf("%s",str);if(strcmp(str,"ADD")==0){getchar();scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a);ADD(a);}}else{scanf("%d",&m);for(i=0;i<m;i++){scanf("%d",&b);Query(b);}}} }

在網(wǎng)上看到一個比較優(yōu)秀的代碼,但有點看不懂,請大神指教,如下:

#include<stdio.h> unsigned int hash[3125005] = {0}; int main() {int i,a,t,n;char str[10];scanf("%d", &t);while(t--){scanf("%s %d", str, &n);if(str[0] == 'A'){for(i = 0; i < n; ++i){scanf("%d", &a);hash[a / 32] |= 1 << (a % 32);}}else if(str[0] == 'Q'){for(i = 0; i < n; ++i){scanf("%d", &a);if(hash[a / 32] & (1 << (a % 32)))printf("YES\n");elseprintf("NO\n");}}}return 0; }

總結(jié)

以上是生活随笔為你收集整理的nyoj-138-找球号(二)----hash算法之除留余数法+vector的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。