二分
蔡珏
这个作者很懒,什么都没留下…
展开
-
1611F - ATM and Students详细题解(*1800,线段树维护前缀和;双指针算法(思维))
1611F - ATM and Students题目大意:给你一个数组a,找到最大连续段[l,r][l,r][l,r]:al+al+1+...+ar+s>=0al+al+1+...+ar+s>=0al+al+1+...+ar+s>=0 (条件1)al+al+1+...+ar+s<0al+al+1+...+ar+s<0al+al+1+...+ar+s<0 (条件2)或者l到n都满足al+al+1+...+an+s>=0l到n都满足al+al+1+...+原创 2021-12-03 16:29:51 · 701 阅读 · 0 评论 -
CF1132D Streessful Training(二分+贪心+优先队列*2300)
#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>typedef long long ll;using namespace std;const int N = 3e5 + 10;ll n, k;ll a[N], b[N];struct node { ll a; ll b; ll c; bool oper原创 2021-11-10 21:33:23 · 372 阅读 · 0 评论 -
K-th Number(尺取)
题意:有T组数据。 每组数据给定长度为 N的数组 A,对所有长度大于等于 k 的连续子段,取出其第 k 大放入数组 B 中。求数组 B 的第 M 大。思路:二分答案x检查可行性,x是B数组的第M大所以B数组就有M个大于等于x的数,求有多少个大于X的数就是求有多少个区间的第K大大于X。s[i]表示从1-i大于等于X的数量利用这个求一个区间的第K大是否大于x,再通过尺取长度为K的区间即可。#include<bits/stdc++.h>using namespace std;#define e原创 2021-11-10 15:37:43 · 360 阅读 · 0 评论 -
[NOIP2012]借教室
从线段树的思路来看就是维护区间最小值,对最小值进行更新,某一次小于0,则输出这次为答案我的代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 1e6 + 10;int n, m, a[N];struct node { int l; int r; int lz; int w;} tr[N << 2];原创 2021-11-09 16:43:01 · 61 阅读 · 0 评论