description
有一天,禎爺得到一堆蘋果,每個蘋果有乙個體積ai,他想從中任取兩個吃掉,並且剛好填飽肚子,禎爺想知道一共有多少種取法。
input
第一行:乙個整數c(c<=10),表示測試資料組數。
每組測試資料:
第一行:n,m分別表示蘋果數量和禎爺的肚子容量。
接下來n行,每行乙個整數ai,表示蘋果體積。
0 < n <= 100000, 0 <= m <= 1000000000, -1000000000 <= ai <= 1000000000
output
方案總數。
sample input2
2 51 4
3 10
5 5 5
sample output1
3hint
蘋果體積有負值。
解題思路:
如果用列舉的方式肯定會tle,這裡用到字典的方式進行處理。
map[v] = v的個數t
那麼如果v1+v1=m,那麼方法數為c(t1,2) = t1*(t1-1)/2
如果v1+v2 = m,那麼方法數為t1*t2/2
#include#includeusing namespace std;
map::iterator iter;
int main()
long long ways = 0;
cout<}
return 0;
}
XDOJ括號匹配
類別 字串處理 時間限制 2s記憶體限制 1000kb 問題描述 表示式中的合法括號為 這三種括號可以按照任意的次序巢狀使用。請寫乙個程式,判斷給定表示式中的括號是否匹配,既左右括號順序和數量都匹配。輸入說明 輸入為乙個表示式字串,長度不超過50。輸出說明 對輸入的表示式,若其中的括號是匹配的,則輸...
XDOJ快速排序
問題描述 採用快速排序演算法,排序輸入的n個整數,prvotkey 樞軸 每次選取陣列第乙個數。輸出快速排序第一趟排序的結果。輸入格式 輸入的第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數,空格隔開。輸出格式 按照要求排序後輸出,由空格分隔。樣例輸入 50 10 90 30 70 4...
XDOJ 分配寶藏
問題描述 兩個尋寶者找到乙個寶藏,裡面包含n件物品,每件物品的價值分別是w 0 w 1 w n 1 suma代表尋寶者a所獲物品價值總和,sumb代表尋寶者b所獲物品價值總和,請問怎麼分配才能使得兩人所獲物品價值總和差距最小,即兩人所獲物品價值總和之差的絕對值 suma sumb 最小。輸入說明 輸...