隨後有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 ...