题目链接:http://hihocoder.com/problemset/problem/1300 给一个字符串,只包含'('和')',问存在多少个子串似的括号是匹配的. 匹配规则在题干中描(蒻)述(语)得(文)非常烂! 维护一个栈,栈中保存'('的下标.当遇到')'并且栈非空的时候,说明已经匹配到一对括号.取出栈顶'('的位置idx.并且记录此时状态,dp(i)=dp(idx-1)+1. #include <algorithm> #include <iostream> #incl…
题目链接: http://hihocoder.com/problemset/problem/1300 题解: 先用栈预处理出每个‘)’匹配的‘(’的位子,放在pos数组中. dp[i]表示以i结尾的合法子串个数,则易知转移方程: dp[i]=dp[pos[i]-1]+1: 代码: #include<iostream> #include<cstdio> #include<stack> using namespace std; typedef long long LL; ;…
正解:单调栈/dp 解题报告: 先放个传送门qwq 话说这题是放在了dp的题单里呢?但是听说好像用单调栈就可以做掉所以我就落实下单调栈的解法好了qwq (umm主要如果dp做好像是要斜率优化凸壳维护双端队列巴拉巴拉可能要以后再来搞了qwq) 先解释题意...我觉得我是傻逼,,,这题我因为没懂题意卡了好几周了有... 是酱婶的,就是说给一些气球,开始它们都只是瘪的,都还没打气 然后给你这些气球的横坐标和最大半径 然后问你,我现在一个个给气球打气,打到不能打为止,问你每个气球的半径 (,,,我之前一…
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1不为空,将S1栈顶元素弹出至输出序列 操作c 如果输入序列不为空,将第一个元素压入栈S2 操作d 如果栈S2不为空,将S2栈顶元素弹出至输出序列 如果一个1~n的排列P可以通过一系列操作使得输出序列为1,2,…,(n-1),n,Tom就称P是一个“可双栈排序排列”.例如(1,3,2,4)就是一个“可…
目录 前言吐槽 思路 错误 代码 /* 前言吐槽 我真的不知道是咋做的 不过大约就是栈的斜率优化 哪位大佬见识广,给看看吧(乞讨) 思路 s是值等于a[i]的前缀和 转移方程$f[i]=max(f[i],f[j-1]+a[i]*(s[i]-s[j]+1)*(s[i]-s[j]+1))$ 不难写出暴力方程(by wxyww) //@baoli memset(f,-0x3f,sizeof(f)); f[0]=0; for(int i=1;i<=n;++i) { for(int j=1;j<=i;+…
题意: 给你n个数hi,你刚开始在第1个数的位置,你需要跳到第n个数的位置. 1.对于i.j(i<j) 如果满足 max(hi+1,-,hj−1)<min(hi,hj) max(hi,hj)<min(hi+1,-,hj−1) 那么就可以从i直接一步跳到j位置 2.如果j=i+1,那么也可以直接跳过去 问你从第一个位置跳到第n个位置,最少需要跳多少次 题解: 我们设dp[i]表示:从第一个位置跳到第i个位置最小需要跳多少次 我们最重要的就是找在[1,i-1]这个区间内的k,哪个位置可以跳到…
Codeforces 题目传送门 & 洛谷题目传送门 Yet another 自己搞出来的难度 \(\ge 2800\) 的题 介绍一个奇奇怪怪的 \(n\log n\) 的做法.首先特判掉字符串中全是 \(0\) 的情况,这种情况答案显然为 \(n\).我们假设字符串中 \(1\) 的位置为 \(p_1,p_2,\cdots,p_k\).考虑当我们已经求出了 \(s[1...p_i]\) 可以得到多少个不同的 01 串后,怎样求出 \(s[1...p_{i+1}]\) 可以得到多少个不同的 0…
C. Longest Regular Bracket Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/5/C Description This is yet another problem dealing with regular bracket sequences. We should remind you that a bracket sequence…
题目链接 BZOJ3235 题解 求出每个点为顶点,分别求出左上,左下,右上,右下的矩形的个数\(g[i][j]\) 并预处理出\(f[i][j]\)表示点\((i,j)\)到四个角的矩形内合法矩形个数 就可以容斥计数啦 枚举顶点\((i,j)\),乘上另一侧矩形个数,如图: 但是会算重,对于这样的情况 减去即可 求\(g[i][j]\)数组,枚举每一行,使用单调栈即可 复杂度\(O(n^2)\) #include<algorithm> #include<iostream> #in…
A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石,拥有A的能量:第二种魔法石叫做地冈石,拥有B的能量:而第三种,则是最神奇的天玄石,拥有无可比拟的C的能量! 但是有一天,沈宝宝太调皮了,把一颗天玄石玩丢了…… “这可玩大发了,这样我会被天行廖责备的.”沈宝宝悲伤的说到,“怎么办呢?” 这时候沈宝宝望了望窗外的飞过…