随笔分类 -  前缀和

摘要:题目链接 【题目翻译】 给你两个长度都为n的正整数数组,让你把A数组通过两种操作变成B数组。 支持的两种操作: 1.R操作:把A数组翻转。 2.P操作:把A数组变成A数组的前缀和数组,即a[i]=∑a[j] (1 【题解】 因为P操作是求前缀和操作,而且两个数组中每个数字最少是1。 所以如果数组比较 阅读全文
posted @ 2020-06-04 21:45 AWCXV 阅读(255) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 先把所给的压缩形式的字符串转成二进制 然后对获得的01数组做一个前缀和(a[i][j]=以(i,j)为右下角,(1,1)为左上角的矩形内的数字的和) 这样就能O(1)复杂度获得一个长度为x的正方形的区间和了。 这样。我们直接暴力从1..n 阅读全文
posted @ 2019-04-15 22:58 AWCXV 阅读(302) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 把a[i]处理成前缀和 离散化. 枚举i从1..n假设a[i]是区间和的a[r] 显然我们需要找到a[r] a[l] 【代码】 cpp include define ll long long using namespace std; co 阅读全文
posted @ 2019-04-10 16:25 AWCXV 阅读(113) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 枚举三分线(离散后)的位置 然后根据预处理的前缀和,快速算出两个队伍的分数。 【代码】 java include using namespace std; const int N = 2e5; int n,m; int a[N+10],b 阅读全文
posted @ 2019-03-26 15:03 AWCXV 阅读(75) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你n个矩形。 让你找出一个点(x,y) 使得这个点在其中至少(n 1)个矩形中。 【题解】 若干个矩形交在一起的话。 它们所有的公共区域也会是一个矩形。 这个矩形的左下角坐标为(max(x1i),max(y1i)) 这个矩形的右上角坐标为$(m 阅读全文
posted @ 2018-08-28 08:06 AWCXV 阅读(179) 评论(0) 推荐(1) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然在没有一直往右走然后走到头再往上走一格再往左走到头之前。 肯定是一直在蛇形走位。。 这个蛇形走位的答案贡献可以预处理出来。很容易。 然后蛇形走位之后走到最右再掉头的这个过程也能倒推出来。 考虑sum[i]和sum[i+1]的 阅读全文
posted @ 2018-08-10 16:52 AWCXV 阅读(111) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 找个规律会发现 M[i][j] = M[i 2 L][j] = M[i][j 2 L] 先预处理出来(1,1) (2L,2L)这个矩阵以及他的二维前缀和 那么对于要求的(x0,y0) (x1,y1)这个矩阵。 可以用若干个(1, 阅读全文
posted @ 2018-08-02 10:34 AWCXV 阅读(184) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 f[i][j][k]表示第i行前j列刷了k次,最大满意度 f[][j][k]=max{f[i][l][k],f[i][l][k 1]+max{zero(l+1,j),one(l+1,j)} } g[i][j]表示前i行刷了j次的 阅读全文
posted @ 2018-04-23 20:17 AWCXV 阅读(152) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 一开始以为可以炸多次。 然后发现是一次。 那么久直接做个前缀和就好了 枚举正方形的左上角。 然后刚好和网格对齐的话。 肯定没有放在(x+0.1,y+0.1)这个地方好。 这样可以把边缘的炸掉。 然后为了方便处理。 x和y都递增1 阅读全文
posted @ 2018-03-20 08:52 AWCXV 阅读(176) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 dfs序 进入的位置设为1出去的设为 1则某个点进去的位置的dfs序的前缀和就是这个点到根节点的路径数。 (可以巧妙的把那些分叉路径去掉。 修改成公路后。就把下面的那个点(深度高的)的进入和出去的值都设置为0 用线段树维护区间和 阅读全文
posted @ 2018-03-15 23:32 AWCXV 阅读(144) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用单调队列求出l[i]和r[i] 分别表示i的左边最近的大于a[i]的数的位置以及i右边最近的大于a[i]的数的位置。 则l[i]+1..r[i] 1就是a[i]这个数作为最小数的最大管辖区间了。 写个前缀和就好。 然后取a[i 阅读全文
posted @ 2018-02-21 19:42 AWCXV 阅读(106) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 ans初值值为a[1..n]中1的个数。 接下来考虑以2为结尾的最长上升子序列的个数。 枚举中间点i. 计算1..i 1中1的个数cnt1。 计算i..n中2的个数cnt2。 ans = max(ans,cnt1+cnt2) 写 阅读全文
posted @ 2018-02-15 11:01 AWCXV 阅读(143) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用pre[i][j]表示第i行前j列的和。 然后枚举连续座位的最左上点。 (有两种可能向右或向下k个。 则还需要处理出pre2[i][j]表示第j列前i行的和。 (都可以O(N^2)求出 然后pre[i][j+k 1] pre[ 阅读全文
posted @ 2018-02-01 01:49 AWCXV 阅读(168) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写个前缀和 和 一个后缀和。 (即前i个字符A所代表的数字的和以及前i个字符B所代表的数字的和。。 然后枚举前i个字符翻转。 求B对应数字的最大值 枚举i..n这些字符翻转 求B对应数字的最大值 两个同时求最大值就是答案了。 【 阅读全文
posted @ 2018-01-22 14:00 AWCXV 阅读(110) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举中间那一段从哪里开始、哪里结束就好 注意为空的话,就全是a. 用前缀和优化一下。 【代码】 cpp include using namespace std; const int N = 5e3; string s; int 阅读全文
posted @ 2017-10-24 07:12 AWCXV 阅读(121) 评论(0) 推荐(0) 编辑
摘要:time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Very soon there will be a parade of v... 阅读全文
posted @ 2017-10-06 19:22 AWCXV 阅读(113) 评论(0) 推荐(0) 编辑
摘要:time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard output Bob has a favorite number k and ai o... 阅读全文
posted @ 2017-10-06 19:22 AWCXV 阅读(96) 评论(0) 推荐(0) 编辑
摘要:time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Vasya’s telephone contains n photos. ... 阅读全文
posted @ 2017-10-06 19:22 AWCXV 阅读(134) 评论(0) 推荐(0) 编辑
摘要:time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Little Vlad is fond of popular comput... 阅读全文
posted @ 2017-10-06 19:22 AWCXV 阅读(85) 评论(0) 推荐(0) 编辑
摘要:【题目链接】:http://codeforces.com/contest/776/problem/C【题意】 让你找区间[i,j] 使得sum[i..j]=k^t,这里t=0,1,2,3.. -10=0,t=1,2,3... 前缀和 pre[i]-pre[j] =k^t... 阅读全文
posted @ 2017-10-04 18:45 AWCXV 阅读(157) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示