有一个结论:在线段(长为L)上任取两点,截取的线段期望长度是L/3 知道这个结论后这题就可以做了 但还是要分类大讨论+公式化简,用前缀和做 #include <bits/stdc++.h>#define _for(i,a,b) for(int i=a;i<b;++i)#define _rep(i,a ...
分类:
其他好文 时间:
2020-04-30 23:25:38
阅读次数:
65
"Question" $\text{Solution:}$ 首先有一个基础$dp:$设$dp_i$表示前$i$个物品装完的最小价值,$sum[i]$是$C$的前缀和则: $dp_i=\min_{j=slope(q[tail],i)$的时候,出队。因为它前面的点的斜率是要小于这个点与上一个点所连直线的 ...
分类:
其他好文 时间:
2020-04-30 13:23:24
阅读次数:
57
计数问题小技巧 转化为前缀和,后缀和形式 二项式反演 可以直接将”恰好“转化为”不多于“,”不少于“,有时可以很好的简化问题 但要满足如下要求 $$ f(x) = \sum_{i = 0}^x {x \choose i}g(i)\\ g(x) = \sum_{i=0}^x ( 1)^{x i}{x\ ...
分类:
其他好文 时间:
2020-04-26 20:31:21
阅读次数:
72
用两个栈来模拟光标的移动,sum来维护A栈的前缀和,f用来维护最大值。 1 #include <iostream> 2 #include <algorithm> 3 #include <stack> 4 using namespace std; 5 stack<int> A, B; 6 conste ...
分类:
其他好文 时间:
2020-04-26 15:31:11
阅读次数:
61
这道题数据范围比较小,可以想到一种比较暴力的做法,就是枚举,先用前缀和计算 我们枚举两个端点,将数据分为三段,之后枚举26个字母,就能知道答案是多少 这里有一个小技巧就是,我们在枚举26个字母的时候,就能够算出中间这段的最大值是哪个字母,在这个同时,可以算出两边取哪个更好 #include<bits ...
分类:
其他好文 时间:
2020-04-26 10:31:08
阅读次数:
66
A. Candies and Two Sisters(水题) "所有题目链接" 代码 B. Construct the String(简单构造) 代码 D. Anti Sudoku(水题) ...
分类:
其他好文 时间:
2020-04-25 23:09:40
阅读次数:
58
维护序列并支持两种操作 区间加 区间查询最大前缀和(指 $\sum_{i=1}^xa_i$ ) ...
分类:
其他好文 时间:
2020-04-22 20:12:35
阅读次数:
100
比较简单的dp,第一眼的想法肯定直接转移,这样是n^3的复杂度,因此我们需要一些小技巧 仔细观察发现,可以用前缀和来维护答案,这样转移就很快了,只需要找到两个边界点就行 我分了a<b和a>b两种方式讨论,这样比较直观一些。 #include<algorithm> #include<iostream> ...
分类:
其他好文 时间:
2020-04-22 16:19:44
阅读次数:
56
Description 求 $\sum_{i=x1}^{x2}\sum_{j=y1}^{y2}C[i][j]\%p$。 Solution 组合数有一个式子:$C[i][j]=C[i 1][j 1]+C[i 1][j]$。 我们可以这样理解一下这个式子:这是一个前缀和,如果我们先枚举 j 再枚举 i, ...
分类:
其他好文 时间:
2020-04-22 16:13:05
阅读次数:
48
"原题链接" 这题挺锻炼思维的qwq 首先题目中序列的大小比较方式是和字符串的大小比较方式一样的, 序列中第一个数较小的序列的排名总是小于序列中第一个数较大的序列的排名, 故算出$F[i][j]$表示, 第一个数为$j$的规模为$i$的序列的个数, 对其做个前缀和, 就可以确定满足要求的序列的第一个 ...