![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 50
平平无奇的小白呀
一个新手小白,请多多指教
展开
-
21天好习惯第一期-21
区间加修改涉及到线段树和差分 相邻值的差可以表示成差分,找区间内最大的差分可以用线段树相邻值的差可以表示成差分,找区间内最大的差分可以用线段树 求最大公因数可以用线段树,用更相减损术涉及到差分:gcd(a,b)=gcd(a,a-b)求最大公因数可以用线段树,用更相减损术涉及到差分:gcd(a,b)=gcd(a,a−b) a[i]为原数组,t[i]为差分数组(t[1]=a[1])a[i]为原数组,t[i]为差分数组(t[1]=a[1]) gcd(a[i],a[i+1],a[i+2],a[i+3],a[i+4]原创 2021-11-13 00:23:00 · 58 阅读 · 0 评论 -
21天好习惯第一期-19
悬线法求解最大矩型(DP) 1.有效竖线:除了两个端点以外,不覆盖任何一个障碍点的竖直线段1.有效竖线:除了两个端点以外,不覆盖任何一个障碍点的竖直线段 2.悬线:上端覆盖了一个障碍点或者到达整个矩形上边界的有效线段2.悬线:上端覆盖了一个障碍点或者到达整个矩形上边界的有效线段 如果把一条悬线向左右两个方向尽可能的移动,那么就得到了一个矩形。如果把一条悬线向左右两个方向尽可能的移动,那么就得到了一个矩形。 注意:悬线对应的矩型不一定是极大子矩阵,悬线定义中固定了悬线的下边界注意:悬线对应的矩型不一定是极大子原创 2021-11-13 00:21:27 · 202 阅读 · 0 评论 -
21天好习惯第一期-18
子问题:a[i]∼s[j]和b[k]∼b[l]组成的串是不是回文串 状态方程:f[i][j][k][l],表示a[i]\sims[j]和b[k]\simb[l]组成的串是不是回文串状态方程:f[i][j][k][l],表示a[i]∼s[j]和b[k]∼b[l]组成的串是不是回文串 j=i+len1-1,l=k+len2-1j=i+len1−1,l=k+len2−1 转移方程:转移方程: len1+len2<=1时组成的串一定是回文串,此时f[i][j][k][l]=true;len1+len2&l..原创 2021-11-13 00:20:51 · 176 阅读 · 0 评论 -
21天好习惯第一期-17
容斥原理 如果不考虑重复计算,步长step的贡献为m*\frac{\frac{m}{step}-1}{2}如果不考虑重复计算,步长step的贡献为m∗2stepm−1 考虑到会重复计算,如果m的因子x青蛙能踩到,在计算前用cnt[x]=1标记x应该被算一次考虑到会重复计算,如果m的因子x青蛙能踩到,在计算前用cnt[x]=1标记x应该被算一次 计算时从小到大遍历m的因子,tmp=cnt[i]-sum[i]表示i及i的倍数对答案的贡献情况计算时从小到大遍历m的因子,tmp=cnt[i]−sum[i]表示原创 2021-11-13 00:19:49 · 40 阅读 · 0 评论 -
21天好习惯第一期-16
大意: 有m个石头,标号从0\simm-1,有n只青蛙,所有青蛙一开始都在编号为0的石头上有m个石头,标号从0∼m−1,有n只青蛙,所有青蛙一开始都在编号为0的石头上 每只青蛙每次可以跳的距离为a[i],求所有青蛙能够占领的石头的编号之和每只青蛙每次可以跳的距离为a[i],求所有青蛙能够占领的石头的编号之和 思路:思路: 每个青蛙可以跳的位置应该是gcd(a[i],m)的倍数每个青蛙可以跳的位置应该是gcd(a[i],m)的倍数 如果gcd(a[i],m)|x,石子x会被第i个青蛙踩到如果gcd(a[i].原创 2021-11-13 00:11:11 · 39 阅读 · 0 评论 -
21天好习惯第一期-15
Frogs 大意: 有m个石头,标号从0\sim m-1,有n只青蛙,所有青蛙一开始都在编号为0的石头上有m个石头,标号从0∼m−1,有n只青蛙,所有青蛙一开始都在编号为0的石头上 每只青蛙每次可以跳的距离为a[i],求所有青蛙能够占领的石头的编号之和每只青蛙每次可以跳的距离为a[i],求所有青蛙能够占领的石头的编号之和 思路:思路: 每个青蛙可以跳的位置应该是gcd(a[i],m)的倍数每个青蛙可以跳的位置应该是gcd(a[i],m)的倍数 如果gcd(a[i],m)|x,石子x会被第i个青蛙踩到如原创 2021-11-12 22:52:45 · 189 阅读 · 0 评论 -
21天好习惯第一期-14
方格取数 J 思路: dp,只能走往左、右、下走而且不能走后头路,也就是只能往右下,右上走,所以每次先往右走,然后从下往上走一遍,再从上往下走一遍取最大值。、 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e3+7,inf=0x3f3f3f3f; inline ll read() { ll s = 0, w = 1; char ch = getch原创 2021-11-12 22:51:16 · 164 阅读 · 0 评论 -
21天好习惯第一期-13
A 直播获奖 思路: 留意数据范围,每个人的成绩在0\sim 6000∼600之间,可以用树状数组当桶来存每个分数的数量,然后利用二分来找到第k名对应的分数,二分满足单调性,虽然不连续,但最后一次比需要的分数大的分数就是答案。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+7; inline ll read() { ll s = 0, w = 1;原创 2021-11-12 22:50:06 · 39 阅读 · 0 评论 -
21天好习惯第一期-12
Network 我开始是想每加一条边就跑一次图,找割边的数量,特判了一下u、vu、v之间有两条边的情况,但还是没过,只过了20\%20%:code 思路: 先求出图中的割边(桥)的数量(可能有重边,输入时的重边应该算是一条边),并将同一个边双连通分量缩成一个点集,用sccno[i]sccno[i]去维护(并查集),并保留每个点的父结点fa[i]fa[i]。 接下来就考虑缩点后形成的树,fa[i]fa[i]为边,i\ini∈边双连通分量的祖先,树上边的数量就是割边的数量。 连接两台计算机,先找到他们对应的原创 2021-11-12 22:47:53 · 45 阅读 · 0 评论 -
21天好习惯第一期-11
D、小L的数列 D 思路: 引理:对于质数pp,若存在x<y<zx<y<z且x,y,zx,y,z都是pp的倍数,那么选出的序列一定不会让x,zx,z相邻。 先筛出1e5以内的所有素数,然后对序列排序 根据定理,对每个数zz,分解质因数(直接枚举质数来加速)pp,然后dp[z]=max(dp[z],dp[y]+1)dp[z]=max(dp[z],dp[y]+1),yy与zz有相同的质因数pp且最靠近它(y<zy<z) #include<bit...原创 2021-11-12 22:46:43 · 56 阅读 · 0 评论 -
21天好习惯第一期-8
什么是几何概型,与古典概型有什么区别? 1.定义: 当随机试验的样本空间是某个区域,并且任意一点落在度量 (长度、面积、体积)相同的子区域是等可能的,并且借助几何上的度量来合理规定的概率成为几何概型。 如果每个事件发生的概率只与构成该事件区域的长度(面积或体积或度数)成比例,则称这样的概率模型为几何概率模型,简称为几何概型。 2.区别: 古典概型与几何概型的主要区别在于:几何概型是另一类等可能概型,它与古典概型的区别在于试验的结果是无限个。 如何计算几何概型事件概率? P(A)=\frac{S_A}原创 2021-11-12 22:40:40 · 72 阅读 · 0 评论 -
21天好习惯第一期-6
什么是条件概率?如何计算条件概率?条件概率有哪些性质?利用条件概率计算上述“已知这个家庭有一个是女孩问这是另一个孩子是男孩的概率是多少”的概率问题。 定义: 设A,BA,B是两个事件且P(A)>0P(A)>0,称P(B|A)=\frac{P(AB)}{P(A)}P(B∣A)=P(A)P(AB)为在事件AA发生的条件下事件BB发生的条件概率。 计算方式及性质: 如果事件BB的概率P(B) > 0P(B)>0,那么Q(A) = P(A | B)Q(A)=P(A∣B)在所有事件...原创 2021-11-12 22:37:36 · 329 阅读 · 0 评论 -
21天良好习惯第5天
【IOI周赛-普及组】桃花村 题解讲的非常清楚,写个题解加深一下自己的印象 对原题抽象、建模后,对于每个op=1op=1的操作其实就是若干个一次函数y=A_i*(h_j-dis_i)y=Ai∗(hj−disi),求满足y=t_jy=tj的i的数量。dis_i=abs(i-x)disi=abs(i−x) 等式变完形后就是dis_i=h_j-t_j/A_idisi=hj−tj/Ai,显然对于该op=1op=1的操作,会爆炸的村庄需要满足以下两个条件: 1.A_j|t_jAj∣tj 2.d原创 2021-11-12 22:30:33 · 154 阅读 · 0 评论