随笔分类 - ACM算法
摘要:Codeforces Round #721 (Div. 2)(B-E) Codeforces Round #721 (Div. 2) C. Sequence Pair Weight 题意:给一个数组,求他的所有连续子串中,任取相等的两数的方案之和。 题解:这个题其实,造个全是1的数组乱搞算出来就差不
阅读全文
摘要:L - Two Buildings 题意:给水平上n条垂线的长度,选择其中两条线围成梯形,求出最大的梯形面积。 题解:首先贪心分析一下,要使面积最大,尽量使高(两条线水平距离)和两底(两条线长度)更大,所以我们可以先预处理出两组线,一组表示取出来放在左边的线,一组表示放在右边的线。 我们分析一下从左
阅读全文
摘要:传送门 C. Berland Regional 题意:一共2e5个学生,告诉你他们的学校和能力。设k表示一个队伍的人数,一个学校可以派出任意个队伍。问当k从1至n时,所有学校能派出最大能力之和。 题解:考虑暴力解法,先将学生放入学校的vector排序,枚举k与学校,易知学校人数不能整除k时,将会有余
阅读全文
摘要:传送门 D. Explorer Space 题意:给一个矩阵,告诉你每点相邻边的花费,求每个点k步后回到原点的最短距离。 题解:首先当k为奇数时,一定回不到原点直接输出-1。当k为偶数时,可以理解为该点用了k/2步走了出去,又用k/2步走了回来,易知要距离最短所以出去和回来的路径一定一样,所以题目就
阅读全文
摘要:传送门 题意:给一个长为n的数组,q次询问,区间l到r间需要最少分成多少段,使每一段的gcd等于1。 题解:易知拥有同一质因子的数不能在一段中,考虑将每一个数质因数分解,再利用序列自动机可以求出每一个数前缀的最近的一个不合法的位置,很明显每个数只会连向它之前的一个位置,数组便形成了一颗树。再来看问题
阅读全文
摘要:AtCoder Regular Contest 116(C~E) C - Multiple Sequences 题意:给一个n,m要求构造一个长为n的数组,使得每个后一位是前一位的倍数,并且所有值小于等于m,求方案数。 题解: 如何不重不漏的计算所有方案,我考虑枚举最后一位的值是多少,并求和。 那么
阅读全文
摘要:Educational Codeforces Round 107 (Rated for Div. 2) 传送门 E. Colorings and Dominoes 题意: 给一个n * m的矩阵,o表示可以安排为红格子或蓝格子,然后在将一个1 * 2大小的小矩阵放入大矩阵中,横着放只能放在两个蓝格子
阅读全文
摘要:Codeforces Round #714 (Div. 2) 传送门 B. AND Sequences 题意:给一个数组,求有多少中排列,使得所有i满足 a1 & a2 & … & ai = ai+1 & ai+2 & … & an 题解: 考虑 i 等于1时,若a[i]不为0,则ai+1 & ai
阅读全文
摘要:UVA1660 电视网络 Cable TV Network(最小割) 传送门 题意:给定一个n(n ⇐ 50)个点的无向图,求它的点联通度。即最少删除多少个点,使得图不连通。 题解: 关键思想枚举S,T。 当图不连通时,图中只要存在任意两点,使得S无法到T即可。 考虑如何建图,经典删点操作,将点拆点
阅读全文
摘要:UVA1184 Air Raid(最小割) 传送门 最小割又忘记了,菜! 题意:给一个无向图,求最少多少不相交的链经过所有的点(单独一个点也算链)。 题解: 首先要想到题目的一个关键,每个点被链经过以后最多能免费携带一个没被经过的其他点。如一条:1-4-3-5,第一个点是买的,4是1免费带的,3是4
阅读全文
摘要:CF362C Insertion Sort(DP) 传送门 题意:给一个排列,求对任意两个元素交换后,使总逆序对最小的方案数。 题解:首先要想到交换元素的贡献怎么算。 可以分成5份分析,设x,y交换: 1,p<x 对于p<x的情况,无论后面怎么变,p<x中的逆序对不会改变,对后面元素也不会造成影响。
阅读全文
摘要:CF709 C. Skyline Photo(线段树优化DP) 传送门 题意:给两个数组,分别表示分数和高度,你可以将数组分成若干段,每段贡献为其高度最低的分数,求最高分数和。 题解: 好题,首先先考虑n*n做法,f[i]表示将前i段分成若干段的最大值,则f[n]即表示答案,易得递推方程:f[i]=
阅读全文
摘要:牛客 栗酱的数列 (KMP) 传送门 题意:给a数组(n),b数组(m),模数k。问a有几个子串满足1<=i<=m,(a[i]+b[i])%k都相等。 题解:暴力匹配超时,这时候想到子串匹配算法KMP,但主要是有一个C=(a[i]+b[i]),要求一个串的值都等于C,而在一次匹配成功后,C可能会改变
阅读全文
摘要:牛客 动物园 (KMP) 传送门 题意:给一个字符串求num数组的乘积,num数组是前缀与后缀相同的个数,且前后缀不相交的个数; 题解:求KMP,易得长度为i的字符串不能由nex[i]>i/2的位置转移,且明显有单调性,所以我们可以从后,用类似并查集路径压缩的方式修改nex数组与num数组,并时间约
阅读全文
摘要:网络流模板与经典模型 1.模板 dinic模板(常规的最大流模板,算法效率能满足大部分题) #include<iostream> #include<queue> #include<cstring> #include<algorithm> using namespace std; #define ll
阅读全文
摘要:Codeforces Round #698 (Div. 2) D. Nezzar and Board https://codeforces.com/contest/1478/problem/D 题解:每次可以选择两个数x,y,增加一个2x-y到数堆中,我们可以发现一个规律,就是每次不管怎么组合,被增
阅读全文
摘要:ICPC分析 上海: 水题:M模拟,B模拟,G规律,D三分 银牌:C数位DP,I思维+DP 金牌:E规律,H结论+贪心,L结论+贪心 冠军:F区间DP,J题数据结构,K图论tarjan 南京: 水题:E水题暴力,L水题模拟,K:GCD 铜牌:F三分, 银牌:M树形DP,H贪心 金牌:D生成树 冠军题
阅读全文
摘要:tarjan算法 记1月9日至1月17日,tarjan算法暂时告一段落。 个人体会: 主要功能其一:求解连通分量,将图转化成树。树的特性很多,利用树的特性解题。 主要功能其二:求出并理解桥和割点,掌握生成和消除桥或割点的方法,算答案或算贡献。 算法能用的东西不多,但写题的过程还是很欢乐的,代码不长不
阅读全文
摘要:CF695 D. Sum of Paths(DP) 传送门 题意:给一个长度为n的区域,你可以任选起点走k步,每步可以向左或向右。同时每个点都有权值,走到点上即可加权值,问所有走的方案的权值之和,再有q次询问每次会更改一点权值,再求和。 题解:可恶的带修询问卡掉了我的记忆化搜索,不然就是个水题。有带
阅读全文
摘要:牛客挑战赛46_C题排列(前缀优化DP) 传送门 题意:给定超级逆序对为k,求长度为n的排列的方案数; 超级逆序对:满足 i<j 且 a[i]>a[j]+1 的二元组 (i,j); 题解:若题目是逆序对个数为k,对于从1到n的每一个数,从小至大的插入数组,都有(0,i-1)的安排方案,枚举每一个数,
阅读全文