02 2022 档案
摘要:2022.2.22 一个有“爱”的日子,注定不会平凡(对于24oier来说),原因是gg让我们参加与大连理工大学的对抗赛。 为此队友都准备好各种板子,上了比赛才发现根本没有 可怜了zhanghao的50多张板子:-) 首先是熟悉的类IOI赛制,仅不过排行榜在最后一小时会被封,估计是为了更加刺激吧。拿
阅读全文
摘要:##【基础算法】第三章 二分算法 ###例一 数列分段 题目描述 对于给定的一个长度为N的正整数数列A,现在将其分成M段,并要求每段连续,且每段和的最大值最小。 输入格式 第1行包含两个正整数N,M。 第2行包含N个空格隔开的非负整数A。 输出格式 仅包含一个正整数,即每段和最大值最小为多少。 样例
阅读全文
摘要:##最小时间 ###题目描述 有n个物品,第i个物品有两个属性k,b,表示它在时刻 的价值为k*x+b。 当前处于时刻0,你可以选择不超过m个物品,使得存在非负整数时刻t,你选择的所有物品的总价值大于等于S。 给出S,求t的最小值。 ###输入格式 第一行三个整数n,m,S。 接下来n行,第i行两个
阅读全文
摘要:【基础算法】第二章 贪心算法 例一 奶牛晒衣服 题目描述 有n件衣服,第i件衣服的湿度为h。 在自然条件下,每件衣服每分钟都可以自然晒干A点湿度。 在烘干机作用下,可以选择一件衣服,用一分钟的时间晒干B点湿度。 求出晒干所有衣服的最少时间(湿度为0为干)。 输入格式 第一行三个正整数N,A,B。 接
阅读全文
摘要:##【基础算法】第一章 递推算法 ###例一 错排问题 很简单的递推 a[i]=(i-1)*(a[i-2]+a[i-1]); ####Code #include <bits/stdc++.h> using namespace std; int main(){ int n; long long a[1
阅读全文
摘要:#T1 洛谷P3374 树状数组2 ###题目描述 如题,已知一个数列,你需要进行下面两种操作: ·将某一个数加上 xxx ·求出某区间每一个数的和 ###输入格式 第一行包含两个正整数 n,mn,mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 nnn 个用空格分隔的整数,其中第 i
阅读全文
摘要:#树状数组 ###定义 ·已知一个数列,你需要进行下面两个操作: ·将某一个数加上x ·求出区间的和 ####例: lowbit(x):x的二进制表示中最低位的1所表示的数值 lowbit(20)=lowbit(10100)=00100=4 int lowbit(int x){ return x&(
阅读全文
摘要:#ST表 ###定义 ·也叫RMQ算法 ·给定序列,要求O(1)求区间(l,r)的最小值 ·F[i][j]代表i到i+2j-1的最小值。 ·F[i][j]=min(f[i][j-1],f[i+2(j-1)][j-1]) ·O(nlogn)预处理 设k为最大的正整数满足2k<=r-l+1 Min(l,
阅读全文
摘要:#树上背包 给一颗树,每个节点上有一个物品,每个体积为wi,价值为vi。 选了一个点必须选它的父亲。 问总体积不超过m的情况下总价值最大值 f[u][j]代表在以u为根的子树中,选了j的体积,能得到的最大价值 ·首先i一定要选 ·枚举给每个子树v分配多少体积k f[u][j]=max(f[u][j]
阅读全文
摘要:#LCA ###倍增 f[i][j]代表i的2^j级父亲 f[i][j]=f[f[i][j-1]][j-1] 有了f数组,如何计算“u向上跳k步到达哪个点”? 对k作二进制分解,枚举所有二进制位。 如果第i位为1,那么令u=f[u][i] O(nlogn) 预处理 for(int i=1;i<=n;
阅读全文
摘要:#tarjan算法 无向图的上的tarjan与有向图同理,只不过没有横叉边。 对于边(u,v),若low[v]>dfn[u],则 (u,v)是桥,若low[v]>=dfn[u],则u是割点(只有一个儿子的根节点除外) void tarjan(int u,int fa){ dfn[u]=low[u]=
阅读全文
摘要:#单源最短路 void spfa(){ memset(dis,0x3f,sizeof(dis)); dis[s]=0; z[top=1]=s; for(int j=1;j<=top;j++){ int now=z[j];vis[now]=0; for(int i=head[now];i;i=nxt[
阅读全文