小 b 給小 a 出了這樣一道題:
給定乙個長為 nn 的序列 aa 和乙個長為 mm 的序列 bb,在 aa 和 bb 中各取乙個數相加,可以得到 n\times mn×m 個數,他想知道把這些數從小到大排序,第 kk 個數是多少(下標從 11 開始)。
小 a 不會做,他想讓你幫他解決這個問題。
第一行三個整數 n,m,kn,m,k,表示 aa 和 bb 的長度以及小 a 想知道的是第 kk 小;
第二行 nn 個整數,第 ii 個數表示 a_iai;
第三行 mm 個整數,第 ii 個數表示 b_ibi。
output
一行乙個整數,表示答案。
對於前 10\%10% 的資料,保證 1\leq n,m\leq 1001≤n,m≤100;
對於前 20\%20% 的資料,保證 1\leq n,m\leq 2\times10^31≤n,m≤2×103;
對於另 20\%20% 的資料,保證 1\leq n,m \leq 2\times 10^51≤n,m≤2×105, 1 \le a_i, b_i \le 10001≤ai,bi≤1000;
對於另 30\%30% 的資料,保證 1\leq n,m \leq 2\times 10^5, 1\leq k \leq 2\times 10^51≤n,m≤2×105,1≤k≤2×105;
對於剩下 30\%30% 的資料,保證 1\leq n,m \leq 10^61≤n,m≤106, 1 \leq k \leq n \times m1≤k≤n×m, 1 \leq a_i,b_i \leq 10^91≤ai,bi≤109,這部分資料有一定梯度。
部分輸入檔案較大,請注意讀入方式對效率的影響。
input
2 3 52 21 3 2
5暴力得了10分。
正解是二分,從1-2e9開始找。
然後找mid 返回是否 大於 k個。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #includeview code7 #include 8 #include 9
using
namespace
std;
10 typedef long
long
ll;11
const
int inf=0x7fffffff;12
const
int n=1000000+100;13
intn,m;
14ll k;
15ll a[n],b[n];
16bool check(int
x)17
24if(cnt>=k) return0;
25return1;
26}27int
main()
2843 printf("
%lld\n
",l);
4445
46return0;
47 }
計蒜客題目 Home Work
臨近開學了,大家都忙著收拾行李準備返校,但 i love c 卻不為此擔心 因為他的心思全在暑假作業上 目前為止還未開動。暑假作業是很多張試卷,我們這些從試卷裡爬出來的人都知道,卷子上的題目有選擇題 填空題 簡答題 證明題等。而做選擇題的好處就在於工作量很少,但又因為選擇題題目都普遍很長。如果有 5...
計蒜客題目 加一
陣列內存放了一些個位數字,組成乙個大數 從高位到低位 現在將這個數加 1,並輸出加一以後的結果。例如 a 2,3,1,1,4 則結果為 2,3,1,1,5 a 7,8,9 則結果為 7,9,0 第一行輸入乙個正整數 n 1 n 100 接下來的一行,輸入用空格分隔的 n 個 0 到 9 的非負整數組...
計蒜客題目 奇怪的國家
有乙個奇怪的國家,裡面的國民對於事情的態度永遠只有兩面。當兩個人遇到一起討論乙個事情的時候 兩個持贊同觀點的人遇到一起後會對這個事情都繼續贊同 乙個持贊同觀點的人遇到乙個持不贊同觀點的人的時候,兩人都會不再繼續贊同 兩個持不贊同觀點的人遇到一起討論後反而會對這個事情開始贊同。輸入包括兩行,每行包括 ...