11 2020 档案

摘要:地址:http://codeforces.com/contest/1457/problem/B 题意: n个房子,颜色为ci 每次操作可以对长度为k的一段房子里的任意一个房子进行任意染色(或不染),使得所有房子颜色相同的最少操作数。 解析: ci<=100,考虑枚举每一个ci 如果ci != i,说 阅读全文
posted @ 2020-11-30 15:15 liyexin 阅读(197) 评论(0) 推荐(0)
摘要:地址:http://codeforces.com/contest/1457/problem/A 题意: 有一个n*m的监狱,每一个格子有一个犯人,坐标为( r , c )的格子有一条逃生通道,犯人每一秒可以向相邻的一个格子移动,问所有犯人到达逃生通道最久需要多少秒。 解析: 离r,c的最远点,一定在 阅读全文
posted @ 2020-11-30 15:10 liyexin 阅读(162) 评论(0) 推荐(0)
摘要:关于最小生成树,网上有很多的资料,就不写这么多了~非常推荐 啊哈算法的讲解,这本书对最短路,最小生成树,都讲得非常棒~ 一:定义: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 简单来讲,就是搜索到的边子集所构成的树中,不但包括 阅读全文
posted @ 2020-11-26 20:44 liyexin 阅读(179) 评论(0) 推荐(0)
摘要:A:https://codeforces.com/contest/1454/problem/A 题意: 输出1~n的一个排列,满足每个i!=pi 解析: 偶数直接倒叙 奇数不能倒叙,因为中间点不符合。所以随便调下位置即可。比如先输出n,然后正序输出1~n-1 #include<iostream> # 阅读全文
posted @ 2020-11-25 20:50 liyexin 阅读(231) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/854/ 解析: 引入cnt[i]数组,表示到达当前这个点最短路的边数。 对于一个正常的正权图而言,每个点最多被更新n-1次,只会有n-1条边。 如果到达某个点,最短路边数>=n,那么,说明有重复点,至少n+1个点, 阅读全文
posted @ 2020-11-24 20:36 liyexin 阅读(240) 评论(0) 推荐(0)
摘要:一:Bellman_Ford 1:Dijkstra并不能解决带有负权边的图。 而Bellman_Ford算法可以。 2:核心代码: for(int i=1;i<=n-1;i++) { for(int j=1;j<=m;j++) { dis[v[j]]=min(dis[v[j]],backup[u[j 阅读全文
posted @ 2020-11-24 20:26 liyexin 阅读(151) 评论(0) 推荐(0)
摘要:地址:https://codeforces.com/contest/1452/problem/B 题意: 有n个盒子,每个盒子里面有a[i]个球,对于任意一个盒子,可以将里面的球全部发出来,分配给其余 n-1 个盒子使得 其余 n-1 个盒子球的数量要相等。现在求:向n个盒子中最少添加几个球才能实现 阅读全文
posted @ 2020-11-24 14:52 liyexin 阅读(220) 评论(0) 推荐(0)
摘要:地址:https://www.luogu.com.cn/problem/P3385 解析: 直接Bellman_ford,然后再遍历一遍,如果还能松弛,那么就说明有负权回路。 但是题里问的是顶点1能到达的负环,所以如果有负权回路但是1不能到,依然是NO 后台是有这么个样例: 3 3 2 3 -1 3 阅读全文
posted @ 2020-11-23 20:14 liyexin 阅读(205) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/855/ 解析: 图里含有负权边,所以考虑Bellman_ford算法。 Bellman_ford就是从局部扩展到全局,得的是局部最优解,与Dijkstra有着很大不同。 本题要求最多经过k条边到n点的最短距离,那么 阅读全文
posted @ 2020-11-23 16:46 liyexin 阅读(162) 评论(0) 推荐(0)
摘要:地址:http://codeforces.com/contest/1451/problem/B 题意: 给出只含01的字符串s, q次询问 每次给出L,R,是否在S中存在一个子字符串(这里的子字符串不可全连续,保证顺序一样)与[L,R]相同? 解析: 假设在[L,R]之外存在一个这样的子字符串,那么 阅读全文
posted @ 2020-11-23 15:38 liyexin 阅读(98) 评论(0) 推荐(0)
摘要:来自y总: 1:Floyd 三个for,枚举每一个点当做中转点对两点之间的距离进行松弛。其实就是个动态规划 #include<iostream> #include<cstring> #include<cstdio> #include<bitset> #include<queue> using nam 阅读全文
posted @ 2020-11-19 20:00 liyexin 阅读(119) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/1194/ 解析: 一:刚开始以为直接拓扑排序,然后累加奖金即可,每次奖金++ 但这样是不对的。 给出样例: 3 2 1 2 1 3 2和3其实在图中处于同等地位,它俩的奖金应该一样, 答案是101+100+100= 阅读全文
posted @ 2020-11-17 19:56 liyexin 阅读(210) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/166/ 题意: 求每个点所能到达的点数目,包含自身。 解析: 一:已知为有向无环图,那么可以考虑用拓扑排序。 假设有图: 1->2->3->4 5->3 拓扑排序结果: 1->2-5->3->4 那么求每个点所能到 阅读全文
posted @ 2020-11-17 19:45 liyexin 阅读(98) 评论(0) 推荐(0)
摘要:一:定义: 有向无环图(DAG) 百度是这么说的:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(To 阅读全文
posted @ 2020-11-17 19:15 liyexin 阅读(129) 评论(0) 推荐(0)
摘要:A:http://codeforces.com/contest/1447/problem/A 解析: 直接输出n个数,1~n即可。 #include<iostream> #include<cstdio> #include<cstdio> #include<cstring> #include<algo 阅读全文
posted @ 2020-11-16 20:52 liyexin 阅读(104) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/848/ 解析: y总先写的是一个无关重心的一个解法。即枚举每一个点,删掉它后,得出的剩余各个连通块中点数的最大值。 一:存图 邻接表,依然是熟悉的单链表,这里有多个单链表,也就是多个-1点,所以要全初始化为-1 无 阅读全文
posted @ 2020-11-15 22:18 liyexin 阅读(139) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/description/127/ 解析: 看到这种题,很容易想到,w,s的排序方法是关键点。 如果只排其中一个,不好想。 所以从局部出发,考虑交换两个相邻奶牛: 对于 i 牛 和 i+1 牛,我们对它俩进行分析。 发 阅读全文
posted @ 2020-11-13 20:56 liyexin 阅读(133) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/description/804/ 一: 本来想的是差分做,但是范围是不允许开这么大的数组的。l,r<=1e9 所以考虑离散化。 发现n只有1e5,n个加操作,m个L,R,最多用到n+L+R个区间,也就是3e5。所以开 阅读全文
posted @ 2020-11-13 16:40 liyexin 阅读(133) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/description/801/ 解析: 一:考虑暴力: for(i=1;i<=n;i++) for(j=1;j<=i;j++) if(check()) maxx 二:对于每一个i,看它之前的是否符合条件。考虑双指针 阅读全文
posted @ 2020-11-13 13:42 liyexin 阅读(129) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/141/ 解析: 1:在假设完全无差错的情况下,不同子串对应不同哈希值。 对于abcba,那么ab的哈希值应该等于ba的反转哈希值。 也就是说,根据一个字符串,迅速求出它的逆序字符串的反哈希值,如果两者相等,则两者为 阅读全文
posted @ 2020-11-12 19:03 liyexin 阅读(111) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/843/ 关于字符串哈希: 进制哈希。即把每个字符串按进制得出对应的数字。根据y总的模板,进制P取131可以很好地降低冲突概率 假设不出现冲突,那么每个子串,唯一对应一个P进制的哈希值。 先前缀处理一下所有前缀的哈希 阅读全文
posted @ 2020-11-11 20:02 liyexin 阅读(133) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/842/ 解析: 关于MOD:一般要取质数 ,要离2的整次幂尽可能远,降低冲突概率,这里取1e5+3 对一个数取模后,如何处理冲突?这里就用到了链表,链表里只有一个头节点,而这里有很多头节点,h[] 每个结点,对应着 阅读全文
posted @ 2020-11-10 19:58 liyexin 阅读(151) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/828/ 我的单链表笔记:https://www.cnblogs.com/liyexin/p/13954747.html 基本板子,只是这里注意一下,因为我这里的idx是从0开始,所以对题中的k来讲,k-1才行 #i 阅读全文
posted @ 2020-11-10 17:02 liyexin 阅读(157) 评论(0) 推荐(0)
摘要:一:定义 是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 二:数组模拟链表 定义: idx:存储当前已经用到 阅读全文
posted @ 2020-11-10 16:59 liyexin 阅读(102) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/156/ 这题和POJ2823是一样的 解析: 暴力,直接对于每k个都遍历一遍,很显然复杂度O(nk)的话行不通。 对于这类问题,有一个比较一致的思路,就是有些数字是无用的,或者用了几次后就要被扔掉的,后续根本就排不 阅读全文
posted @ 2020-11-09 19:25 liyexin 阅读(114) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/602/ 既然是离自己最近,可以想到栈 对于当前数,把它左边数的视为栈。 每次ai与栈顶比较, 如果发现栈顶<ai,说明它可以被栈顶仰视,记录下标。同时清掉栈顶。为什么要清掉呢?因为题目要求的是找最近,既然栈顶已经找 阅读全文
posted @ 2020-11-08 21:37 liyexin 阅读(103) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/83 没买课的话,应该是看不到题的,所以截个图。 暴力的做法,是对当前的每一个数,都往左遍历一遍。每次都一个不落地遍历,其实很多是无用功,很多数字在后续已经用不到了。 给个图示: 可以发现,对于当前的ai,它前面大于 阅读全文
posted @ 2020-11-08 21:21 liyexin 阅读(127) 评论(0) 推荐(0)
摘要:一:关于队列 (1)一种线性表 (2)允许在表的一端插入数据,在另一端删除元素。插入元素的这一端称之为队尾。删除元素的这一端为队首 (3)先进先出,就像排队一样 二:操作: 定义q[],hh队头,tt队尾 (1)插入 q[++tt]=x (2)弹出队头 hh++ (3)判断空 if(hh<=tt)为 阅读全文
posted @ 2020-11-07 21:07 liyexin 阅读(165) 评论(0) 推荐(0)
摘要:一:关于栈 (1)是一种线性存储结构 (2)限定只能在栈顶进行插入和删除操作。 (3)栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。 (4)先进后出,就像一个桶,往里放东西,最后放的肯定先被拿走 二:操作 定义st[],tt表示栈顶下标 (1)插入 st[+tt]=x (2)弹出栈顶 阅读全文
posted @ 2020-11-07 21:01 liyexin 阅读(129) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/841/ 解析: 这个题比较麻烦的一点就是k。第k个插入的数,不是树里的序号。经过一系列变换后,第k个插入的数在树里的序号会发生交换。 所以引入两个数组:ph[i]=x:表示第i次插入的数,在树中的序号为x。hp[i 阅读全文
posted @ 2020-11-07 20:26 liyexin 阅读(184) 评论(0) 推荐(0)
摘要:一:定义以及部分性质 1:堆中某个节点的值总是不大于或不小于其父节点的值; 2:堆总是一棵完全二叉树。 3:最后一个非叶结点是第n/2个结点。这里建堆的时候会用到,复杂度可以降到O(n); 二:关于建堆 如果一个点为u,那么它的左儿子为2*u,右儿子为2*u+1 对于小根堆来讲,每个以u为根节点的树 阅读全文
posted @ 2020-11-07 20:10 liyexin 阅读(168) 评论(0) 推荐(0)
摘要:A:http://codeforces.com/contest/1443/problem/A 解析: 考虑从2*n开始,每次+2构造 #include<cstdio> #include<cstring> #include<vector> #include<set> #include<algorith 阅读全文
posted @ 2020-11-03 21:39 liyexin 阅读(109) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/839/ 只是记录个板子,不做解析。 #include<cstdio> #include<cstring> #include<vector> #include<algorithm> #include<iostream 阅读全文
posted @ 2020-11-02 21:16 liyexin 阅读(129) 评论(0) 推荐(0)
摘要:地址:http://codeforces.com/contest/1445/problem/A 解析: 既然a[]是递增,那么b[]递减即可。遍历一遍即可。 #include<iostream> #include<algorithm> #include<cmath> using namespace 阅读全文
posted @ 2020-11-02 21:03 liyexin 阅读(114) 评论(0) 推荐(0)
摘要:地址:https://www.acwing.com/problem/content/145/ 没买课的话,应该打不开题。我就截个图吧,题意是很简单的。 解析: 关于位运算,我有个小笔记可供参考:https://www.cnblogs.com/liyexin/p/13914911.html 1:贪心思 阅读全文
posted @ 2020-11-02 17:30 liyexin 阅读(101) 评论(0) 推荐(0)
摘要:一:概念: 又称单词查找树,Trie树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 利用公共前缀,减少比较,节省空间。 二 阅读全文
posted @ 2020-11-02 17:03 liyexin 阅读(139) 评论(0) 推荐(0)
摘要:1:& (与运算符) 两个同为1,才为1,否则为0 2:| (或运算) 一个为1,即为1 3:^ (异或运算) 两个不同,为1,否则为0 4:<< (左移运算符) 各二进位全部左移若干位,高位丢弃,低位补0 比如:1<<7:10000000 5:>> (右移运算符) 各二进位全部右移若干位,高位补0 阅读全文
posted @ 2020-11-02 16:01 liyexin 阅读(248) 评论(0) 推荐(1)
摘要:地址:https://ac.nowcoder.com/acm/contest/8688/A 题意: 给出x,y,z,k的范围a,b,c,d求能组成多少种x+y+z=k 解析: 这是差分数组推导过程的入口:https://www.cnblogs.com/liyexin/p/11014218.html 阅读全文
posted @ 2020-11-01 14:29 liyexin 阅读(415) 评论(1) 推荐(1)