- 博客(9)
- 收藏
- 关注
原创 AcWing 164.可达性统计(图论+拓扑排序+位运算)
AcWing 164.可达性统计好久没发博客了,上一次发还是上一次。题目链接标签:拓扑排序+位运算+搜索题意:给定一张 N 个点 M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。题解:题目给定的是有向无环图,每个点都去遍历一遍的话那么时间会爆,我们可以先把这张图化为拓扑排序的序列,这样从后像前扫,前面的点的状态可以由后面的点的状态转移而来。而这道题如果直接去表示每个状态的话,空间上会爆,所以得进行压位运算,用STL中的 bitset 可以使空间减少32倍。附图:AC代
2021-10-28 22:26:33 239
原创 最短Hamilton路径
最短Hamilton路径二进制状态压缩的应用Hamilton路径的定义是从0到n-1不重不漏地经过每个点一次。思路:我们可以采用一个n位的二进制数,用其第i(0<=i< n)为1表示第i个点已经被经过,0表示还没被经过,这样我们可以使用f[i,j] (0<=i<2^n,0<=j< n)表示二进制i时,且目前处于j点的最短路径,这样n位全是1的状态代表的是经过所有点的最短路状态。1.初始化:先把f数组初始化成正无穷,f[1,0]=0表示在起点0,最短路径也是0。
2021-08-11 23:40:45 258
原创 P1955 [NOI2015] 程序自动分析
P1955 [NOI2015] 程序自动分析https://www.luogu.com.cn/problem/P1955.离散化+并查集这道题是一个并查集的经典题目,因为这个题目的数据太大,我们无法直接用f[i]=i来初始化所有的结点,但是输入的数量只有n,可以先进行离散化再进行根节点的初始化。这道题的离散化不需要保持数据的保序性,所以我们可以借助哈希来离散化,也就是STL中的unordered_map来进行离散化。如果需要保持有序性我们需要进行1.去重(可以用到unique去重函数)2.排序3.
2021-08-07 00:26:15 138
原创 AcWing 133 蚯蚓(队列)
AcWing 133 蚯蚓链接1.我们先把原序列排序,因为不管怎么切,先被切的蚯蚓分成的两部分一定比后切的蚯蚓分成的两部分大(较大的部分和较大的部分比较,较小的部分和较小的部分比较),所以我们可以省去每一秒增加每只蚯蚓的长度这个操作,转换成在查询砍那只蚯蚓时,把增加的长度算到蚯蚓的总长度上。(具体证明方法可以查看《算法进阶指南》)2.我们可以维护三个队列,方便存原长度和切完两部分的长度,队列元素从大到小。3.寻找每次砍哪一只蚯蚓就是在队列1、队列2、队列3的队头找一个算上增加的长度最大的蚯蚓,之后
2021-07-26 20:50:12 164
原创 洛谷P1175 表达式的转换(栈的应用)
洛谷 P1175 表达式的转换链接.题意:给定一个中缀表达式,让我们输出转化为后缀表达式后计算的每一步。题解:1.将中缀表达式转化为后缀表达式。2.利用栈,应用后缀表达式的运算法则实现运算。#include<iostream>#include<cmath>#include<vector>#include<map>#include <cctype>#include<stack>#include<
2021-07-25 22:17:27 493 2
原创 Educational Codeforces Round 109 (Rated for Div. 2) ABCD
直达门:https://codeforces.com/contest/1525.唠嗑:zpx好菜,还一直bb。A. Potion-making题目链接.直接上图:挺简单的一题,直接上代码吧。。。#include<iostream>#include<cmath>#include<vector>#include<map>#include<stack>#include<queue>#include<cstrin
2021-05-18 13:50:29 205 3
原创 单调栈
单调栈唠嗑:寒假遇到过,当时没能弄懂,昨天在算法进阶指南看到,再一次理解之后感觉对它的认识更近了一步,写一写记录一下,也理一下思路。分类:单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大模板:单调栈的题目解决的代码格式比较相似,下面是单调栈主体部分的模板。伪代码: stack<int> st;//此处一般需要给数组最后添加结束标志符,一般在st的最后一个元素加入,为了让栈中的元素可以完全弹出,这得结合题目来看,
2021-05-12 15:52:40 165
原创 Educational Codeforces Round 108 (Rated for Div. 2)A,B,C,D
Educational Codeforces Round 108 (Rated for Div. 2)唠嗑:好好补题,整理博客,let‘s go!A. Red and Blue Beans题目链接.直接上图:题意:输入t组数据,每组测试案例有三个数,第一个数表示red的数目和第二个数表示blue的数目。1.把这些分成多组,确保每组至少有一个red或者blue。2.red和blue的差值不能超过第三个数,问能否符合要求地分完。题解:比较简单的贪心,取出red和blue中较小的值,这个值就
2021-05-10 17:30:58 546 3
原创 Codeforces Round #720 (div2) AB
Codeforces Round #720 (div2)Codeforces Round #720 (Div. 2)唠嗑:这是尝试写的第一篇博客,挺早就想写了,但是不知道如何下手,慢慢的看到同学的博客,渐渐有了一点点思路。希望以后看到这篇博客的时候,可以看到自己的进步。A. Nastia and Nearly Good Numbers题目链接直接上图:题意:首先输入t,表示有t组测试案例,并每组测试案例有两个数A和B,...
2021-05-09 13:32:07 538 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人