nyoj 找球號 二)

2021-07-24 19:34:35 字數 1381 閱讀 9899

隨後有n行;

每行可能出現如下的任意一種形式:

第一種:

乙個字串"add",接著是乙個整數m,隨後有m個i;

第二種:

乙個字串"query」,接著是乙個整數m,隨後有m個ki;

add 5 34 343 54 6 2

query 4 34 54 33 66

yesno

no 方法一(vector容器):

#include#include#include#includeusing namespace std;

vectora(100000001);

int main()

}else if(!strcmp(s,"query"))}}

return 0;

}

ps:這種方法還是比較好用的。。

方法二(hash表):

#include

#include

#include

#include

#include

#include

using

namespace

std;  

#define n 1000010

#define clr(arr, what) memset(arr, what, sizeof(arr))

const

intfib = 111123;  

intkey[n], head[n], next[n];  

inttop;  

void

add(

intn)  

intmain()  

}  else

printf(flag == true

? "yes\n"

: "no\n"

);  

flag = false

;  }  

}  }  

return

0;  

}   ps:這種方法對我等小白來說有點難,待我先提公升**能力後再水此法。。

方法三(位儲存水過):

#include

unsigned int

hash[3125005] = ;    

intmain()    

}    

else

if(str[0] == 

'q')    

}   

}  return

0;    

}    

ps:3125005怎麼來的?因為最大值是10^7+10。用32來除法雜湊,(10^7+10)/32 ~~3125000.3125,所以取3125005。為什麼是用32來雜湊呢?資料說了數值不會超過32位。

nyoj 找球號 一)

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 在某一國度裡流行著一種遊戲。遊戲規則為 在一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,現在說乙個隨機整數k 0 k 100000100 判斷編號為k的球是否在這堆球中 存在為 yes 否則為 n...

nyoj 題目138 找球號(二)

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在某一國度裡流行著一種遊戲。遊戲規則為 現有一堆球中,每個球上都有乙個整數編號i 0 i 100000000 編號可重複,還有乙個空箱子,現在有兩種動作 一種是 add 表示向空箱子裡放m 0 輸入 第一行有乙個整數n 0 輸出...

NYOJ 138 找球號(二) 雜湊

這道題我最開始是用的map標記來寫的,但寫完後發現tle了,後來看別人的題解才知道是要用雜湊來做,就學了一下雜湊。但還是不太明白,為啥map標記會超時?這裡貼個用map寫的tle了的 include include include include using namespace std map m ...