題目鏈結
很神仙的題目啊,考場上只會$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的矩陣,然後給定每一行的異或和,每一列的異或和,求方案數。思路 如果合法,方案數是...