P3564 [POI2014]BAR-Salad Bar】的更多相关文章

t老师的做法好神…… 题目描述 桌面上有 n 个水果,分别是苹果和橘子.Bytea需要从水果中选择连续的一个区间,并从左到右或从右到左拿水果,且过程中橘子的数量必须始终不小于苹果的数量.求最长的区间大小. 输入格式 第一行一个整数 n($1 \le n \le 100000$),表示水果个数. 接下来一行共有 n 个字符$a_1, a_2, ..., a_n (a_i \in \{j,p\})$,分别表示苹果和橘子(波兰语). 输出格式 输出一行共一个数字,表示最长的区间大小. 样例输入 6 j…
题意 长度为\(n(1 \le n \le 1000000)\)的\(01\)字符串.找一个最长的连续子串\(S\),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的\(1\)的个数不小于\(0\)的个数. 分析 首先对\(i\)求出\(l_i, r_i\),\(l_i\)表示在区间\([l_i, i]\)从左往右一直取,\(1\)的个数总是不少于\(0\)的个数的最远\(l_i\).\(r_i\)同理.由于前缀和前后差绝对值为\(1\),所以我们可以开一个数组在\(O(n)\)内求出这…
Description 有一个长度为n的字符串,每一位只会是p或j.你需要取出一个子串S(从左到右或从右到左一个一个取出),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数.你需要最大化|S|. Input 第一行一个数n,第二行一个长度n的字符串. Output S的最大长度. 单调栈预处理出每个左端点向右延伸的最右位置和每个右端点向左延伸的最左位置,然后随便用数据结构维护一下就行了 #include<cstdio> ],l[],r[],ss[],sp=,ans…
题解 波兰人的j是苹果,p是橘子 还真是跟中国过不去啊= =写的时候很难受 我们先求出每个点作为起点,能延伸到的最大长度,这个可以处理成前缀和,查询一下区间最小值是不是小于0,用st表实现,如果区间最小值大于等于0,那么这段区间,以该点作为起点是合法的 然后求出每个点作为终点能延伸到的最大长度,处理成后缀和 然后枚举每个点作为起点,找出能延伸的最长右端点,然后再次二分答案,如果二分到的是mid,且mid到ri[i]中的最小值小于等于该点,那么右端点一定可以再往右,否则往左 三次二分答案,三次st…
https://loj.ac/problem/2430 是的我BZOJ又没卡过……懒得卡了. 参考:https://blog.csdn.net/zqh_wz/article/details/52887289 参考的$O(n)$预处理我反正没看懂……设$L[i]$为i向左能够取到的最远位置,$R[i]$同理. 则我们$O(nlogn)$就能求出来,就是前缀和维护一个st表区间最小值,这样二分答案只要check这个区间最小值+前面没有取到的贡献就行了. 判断的话实际转换成求$L,R$必须满足$L[R…
题目链接 BZOJ3521 题解 容易想到用前缀和搞 如果我们令\(p\)为\(1\),\(j\)为\(-1\),记前缀和为\(s[i]\) 我们就是要找到一段区间\([l,r]\),使得 \[\forall i \in [l,r] \quad s[i] - s[l - 1] \ge 0\] \[\forall i \in [l - 1,r - 1] \quad s[r] - s[i] \ge 0\] 所以说\(s[l - 1]\)是区间\([l - 1,r]\)的最小值,\(s[r]\)是区间…
题目大意: 一个长度为$n(n\leq10^6)$的字符串,每一位只会是$p$或$j$.你需要取出一个子串$S$(从左到右或从右到左一个一个取出),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的$p$的个数不小于$j$的个数.你需要最大化$|S|$. 思路: 令$p$为$1$,$j$为$-1$.用$sum[i]$表示$1\sim i$的前缀和,则题目所求相当于找到一个最长的区间$[l,r]$,满足$\forall i\in[l,r],sum[l-1]\le sum[i]\le sum[…
传送门 我是来帮加藤大佬写题解的--全世界都没找到加藤大佬写法的说明--很难受-- 首先我们把\(p\)看成\(1\),\(j\)看成\(-1\),一个区间满足条件就意味着这个区间的所有前缀和都大于等于\(0\),所有后缀和都大于等于\(0\) 我们记录一下前缀和,所有前缀和大于等于\(0\)就是\(sum[i]-sum[l-1]\geq 0\),所有后缀和都大于等于\(0\)就意味着\(sum[n]-sum[i-1]\geq sum[n]-sum[r]\),即\(sum[i-1]\leq su…
1.通知栏 public static int getStatusBarHeight() { Resources resources = Resources.getSystem(); int resourceId = Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { return resour…
Android Navigation Bar Status Bar   与StatusBar和NavigationBar相关的东西有两种,一是控制它们的显示与隐藏,二是控制它们的透明与否及背景. 在2.3及以前,StatusBar只能显示与隐藏,即全屏模式,通过WindowManager.LayoutParams.FLAG_FULLSCREEN来实现: getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 并可通过以下…