摘要:
【题意】给定DAG带边权连通图,保证所有点都能到达终点n,每个点等概率沿边走,求起点1到终点n的期望长度。n<=10^5。 【算法】期望DP 【题解】f[i]表示到终点n的期望长度。 f[n]=0 f[i]=(f[j]+e[i].w)/k[i],i-->j,k[i]是i的出度。 因为是点x等概率出发 阅读全文
摘要:
【题意】给定n*m的数字矩阵,要求横着切A-1刀,对每块再分别竖着切B-1刀,是最小子矩阵最大。 【算法】二分+贪心 【题解】还记得提高组2015跳石头吗?这道题做法一致,只不过拓展到二维而已。 二分最小子矩阵值,考虑行,对于每一刀贪心一行一行拓展到能切马上切。 对于行贪心中得到的若干行,通过列贪心 阅读全文
摘要:
【题意】给定一排n根杆高度hi,一个常数C,杆升高x的代价为x^2,相邻两杆之间架设电话线代价为高度差*C,求总代价最小。 【算法】DP+辅助数组优化 【题解】令f[i][j]表示第i根杆高度为j的最小代价。 f[i][j]=min(f[i-1][k]+C*|j-k|+(a[i]-j)^2)。复杂度 阅读全文
摘要:
【题意】给定n,求∑gcd(i,n),(1<=i<=n),n<=2^32 【算法】数论(欧拉函数,gcd) 【题解】批量求gcd的题目常常可以反过来枚举gcd的值。 记f(g)为gcd(i,n)=g的i的个数,则有ans=∑f(g)*g,g|n。 gcd(i,n)=g即gcd(i/g,n/g)=1, 阅读全文
摘要:
【题意】n个点的树,m条链,求将一条边的权值置为0使得最大链长最小。 【算法】二分+树上差分 【题解】 最大值最小化问题,先考虑二分最大链长。 对所有链长>mid的链整体+1(树上差分)。 然后扫一遍,对[在所有不满足链上]的边取最大值并check。 具体做法:对于二分的最大链长,将所有链长>mid 阅读全文
摘要:
【题意】n头牛,其中最高h。给定r组关系a和b,要求满足h[b]>=h[a]且a、b之间都小于min(h[a],h[b]),求第i头牛可能的最高高度。 【算法】差分 【题解】容易发现r组关系只能包含或不相交。 先假设所有牛是最高高度。 对于一组关系(a,b)显然只需要让区间[a+1,b-1]整体-1 阅读全文
摘要:
【题意】给定n个点的树,m次求[a,b]和[c,d]中各选出一个点的最大距离。abcd是标号区间,n,m<=10^5 【算法】LCA+树的直径理论+线段树 【题解】 树的直径性质:距离树上任意点最远的点一定是直径的一端。此结论在点集中依然试用。 那么根据性质,容易得到答案路径的两端一定是[a,b]直 阅读全文
摘要:
【题意】给定n个元素,m次给一段区间染色为i,求最终颜色。 【算法】并查集 【题解】因为一个点只受最后一次染色影响,所以倒过来每次将染色区间用并查集合并,父亲指向最右边的点。 细节: 1.fa[n+1]=n+1!!!界外点要赋值为自身!!! 2.swap(l,r),涉及双端点的题都要注意。 #inc 阅读全文
摘要:
第一题 n个m位二进制,求异或值域总和。 【题解】异或值域 >使用线性基,解决去重问题。 m位二进制 >拆位,每位根据01数量可以用组合数快速统计总和。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #incl 阅读全文
摘要:
【题目】洛谷10月月赛R1 提高组 【题意】给定n*n棋盘和<=16个棋子,给几个棋子种类和攻击范围,现我方只有一马,求能否吃王。 【算法】状压+BFS 【题解】16种棋子中,马不能吃马,直接处理马和王,那么就剩13个棋子,可以压成2^13表示棋盘现有棋子存活状态。 然后对vis[2^13][n][ 阅读全文
摘要:
【题目】洛谷10月月赛R1 提高组 【题意】求n!在k进制下末尾0的个数,n<=1e18,k<=1e16。 【题解】考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数。 每个质因数在n!中的数量,以2为例是n/2+n/4+n/8...这样统计。(含x个就被统计x次) 最后得到凑出的k的个数 阅读全文
摘要:
【题目】洛谷10月月赛R1 提高组 【算法】递推DP+树状数组 【题解】列出DP递推方程,然后用树状数组维护前后缀和。 #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #d 阅读全文
摘要:
【题目】C. Qualification Rounds 【题意】给定n个问题和K个人,给定每个人知道的问题列表,求能否找到一个非空问题集合,满足每个人知道的集合中问题数量都不超过集合总题数的一半。n<=10^5,k<=4。 【算法】数学结论 【题解】当k<=4时,结论:若存在合法方案,则一定存在选择 阅读全文
摘要:
【题意】已知n天股价,每天可以买入一股或卖出一股或不作为,最后必须持0股,求最大收益。 【算法】堆 贪心? 【题解】 不作为思想:【不作为=买入再卖出】 根据不作为思想,可以推出中转站思想。 中转站思想:【买卖可以借助中转站,差值累加】 做法:从左到右,每次将两个-v加入堆,然后取大堆顶出来组成买卖 阅读全文
摘要:
【题意】给定n个点的树,每个点属于一个分类,求每个分类中(至少有2个点)最远的两点距离。n<=200000 【算法】LCA 【题解】结论:树上任意点集中最远的两点一定包含点集中深度最大的点(求树的直径的结论是该结论的特殊情况) 证明:如果有路径不包含深度最大的点,那么用深度最大的点替换在LCA同一侧 阅读全文
摘要:
【题意】给定n道题,每月末发放工资m,要求从1解到n,每道题需要在当月初付费ai,下月初付费bi,多道题可以安排在同月,求最少月数。 【算法】DP 【题解】参考自:【bzoj1700】Problem Solving 解题 dp by GXZlegend 因为当月的选择同时关系着当月和下月,贪心是错误 阅读全文
摘要:
【题意】给定无向连通图,要求添加最少的边使全图变成边双连通分量。 【算法】Tarjan缩点 【题解】首先边双缩点,得到一棵树(无向无环图)。 入度为1的点就是叶子,两个LCA为根的叶子间合并最高效,直接将两个叶子并入双连通分量后建新图。 若没有两个LCA为根的叶子则往下换根。 ans=(num+1) 阅读全文
摘要:
【题意】n头牛,一些向前一些向后,每次可以使连续k头牛转身,求使旋转次数最小的k。 【算法】贪心 【题解】这题题解很迷,大概思想是k没有单调性,故枚举k,从左到右扫描遇到一只向后的牛就旋转一次。 贪心正确性易证:旋转前面已经好的显然不可能更优,故往后旋转。 然后还有结尾不足k头牛算错……为什么?不知 阅读全文
摘要:
【题意】给定无向图,现在可能有一些点已经被删除,只给出信息是c个点未被删除且不能到达结点1,求最少的删除点个数。 【算法】最小割 【题解】本题和1的区别是:1求的是最少的不能到达1的结点数,那么就把损坏点圈缩在不可达点的邻点。 本体求的是删除最少的点使c个点不可达,这样的要求就是典型的最小割。 每个 阅读全文
摘要:
【题意】给定n头牛,k个特色,给出每头牛拥有哪些特色的二进制对应数字,[i,j]平衡当且仅当第i~j头牛的所有特色数量都相等,求最长区间长度。 【算法】平衡树+数学转化 【题解】统计前缀和sum[i][j]表示前i头牛特色为j的数量,则区间i~j平衡需要满足: sum[j][1]-sum[i-1][ 阅读全文