牛客NOIP提高組R1 A中位數 二分

2022-04-30 04:00:09 字數 1393 閱讀 2033

題目鏈結

很神仙的題目啊,考場上只會$n^2$的暴力。。

考慮直接二分乙個$mid$,我們來判斷最終答案是否可能大於$x$。

判斷的時候記錄一下字首最小值即可,

設$s[i]$表示$1-i$中有多少比它大的,要求的長度為$len$,我們記下$s[i - len]$的最小值為$mi$

若$s[i] - mi > 0$,那麼說明在長度至少為$len$的區間中,大於$mid$的數和小於$mid$的數相互抵消後仍然有比$mid$大的數,此時$mid$是合法的

第一次做這種二分答案,但答案不是給出的數的題。神仙啊qwq

/*

*/#include

#include

#include

#include

#include

#include

#include

#include

#define pair pair#define mp(x, y) make_pair(x, y)

#define fi first

#define se second#include

#include

//#define int long long

#define ll long long

//#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1<<22, stdin), p1 == p2) ? eof : *p1++)

//char buf[(1 << 22)], *p1 = buf, *p2 = buf;

using

namespace

std;

const

int maxn = 1e5 + 10, inf = 1e9 + 10, mod = 1e9 + 7

;const

double eps = 1e-9

;inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *f;

}int

n, len, s[maxn], a[maxn];

int check(int

x)

return0;

} int

main()

printf("%d

", ans);

return0;

}/*5 47 2 3 2 6

*/

牛客NOIP普及組R1 C括號 dp

題目鏈結 maya普及組的dp都要想很長時間,我真是越來越菜了qwq 設 f i j 表示當前到第 i 個位置,剩下 j 個左括號沒被匹配 轉移的時候判斷一下即可 include include include include include include include include defi...

牛客網提高組round 1

1.60pts 用堆來實現維護中位數。用大跟堆維護小於中位數的數,用小跟堆維護比中位數大的數。若兩堆元素之差大於一,把中位數push進較少元素的堆,把較多元素堆的堆頂作為中位數,pop。o n 2log n includeusing namespace std struct cmp1 struct ...

牛客NOIP暑期七天營 提高組3

今天是被打爆的一天,t3就是用正解做的,但是好像zz了,只得了30分。t1由於沒判不合法的情況,也只有15分 果然是乙個拿不到noip一等獎的人 畢竟noip都準備改名了?a 破碎的矩陣。題意 給出n,m,表示有n m的矩陣,然後給定每一行的異或和,每一列的異或和,求方案數。思路 如果合法,方案數是...