摘要: 链接:P3386 这道题要用到一个名为匈牙利算法的东西 匈牙利算法就是对于每一个点,(例如A)我们先从开始找一个点(例如B),如果他们相连,并且没有被拜访过(一个点一次只能被拜访一次),就让他们配对。然而,如果B已经和C配对了,就把C赶走,看看能不能找到一个D和C配对,如果有,就让C和D配对。让A和 阅读全文
posted @ 2019-07-29 11:11 Simex 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 链接:P2661 这道题有加权并查集的影子 思路还是好想的,根据特性,可以得到如果得到了一条从A到B的边后形成了环,则一定有他们的公共祖先是b。这样就明白了,然后把这个环拆成三部分,这一条边以及B到A、A到B(不加上这条边),他们的和就是长度 一定不能把A,B连起来 1 #include<iostr 阅读全文
posted @ 2019-07-29 10:30 Simex 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 链接:P4779 这道题卡了spfa和迪杰斯特拉朴素版 我们要使用优化版才行。 优化版是用了个堆来完成的。我们考虑一下,在初始化距离为无穷大后,对于每一个点,分成两类,一类是已经确定的,一类是没有的。对于已经确定的,我们没必要去扫描他。对于没有确定的,再分为两类,靠着一个已确定点的和没有的,那么对于 阅读全文
posted @ 2019-07-29 09:12 Simex 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 这是道坑比数论题。 它是如此的坑以至于我没法写上过程 (太长了) 过程:大佬 代码: 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 long long x,y; 5 long long a,b; 6 void exg 阅读全文
posted @ 2019-07-28 21:46 Simex 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 链接:P3383 这道题考的是一个线性筛,主要有两种:埃氏筛和欧拉筛 先说埃氏筛,埃氏筛很简单。只要检查每一个数。如果他是没有被标记,就证明他是一个质数。这样我们就需要把他的每一个数标记为合数,然后重复 极为简单 1 #include<bits/stdc++.h> 2 using namespace 阅读全文
posted @ 2019-07-28 20:01 Simex 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 链接:P1195 这道题第一眼肯定能想到最小生成树,不过最小生成树最后就成了一个连通块。 哎,最后?我们想一下卡鲁斯卡尔算法,是一次加上一条边,而且这边的两端不再一个联通块中。 也就是说,我们的每一次操作,就相当于消除了一个连通块。 这样,我们在最后留下k个联通块不就可以了? 1 #include< 阅读全文
posted @ 2019-07-28 10:49 Simex 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 链接:P3379 【模板】最近公共祖先(LCA) 这道题我们要用到一种很神奇的东西,倍增。 首先,我们考虑一下最简单的做法,记录深度。然后先让询问的x,y中深度大的点往上爬,直到两个点深度一样结束。 然后两个点同时开始爬,当两个点相等时,就一定是公共祖先了 但是一个一个爬太慢了,怎么办呢? 我们就会 阅读全文
posted @ 2019-07-28 10:17 Simex 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目链接:P1119 简化题意: 这是一道floyed的题。但是有所不同的是,这道题里的点是有时间限制的。 所以说我们在做floyed的时候,我们不能直接枚举所有中转点,而是按照时间来进行。 以及,有可能出现询问的时候两个点没有修好,我们还要判断这个。 而且在这道题里,询问的t是不下降的,这样我们就 阅读全文
posted @ 2019-07-27 20:18 Simex 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 链接:P5057 [CQOI2006]简单题 其实这道题是树状数组的模板题 看一下题意,如果用树状数组,我们很容易想到差分数组。但是一般的差分数组是不行的 因为只有零和一,所以对于每一次操作,实就是让它在0和1中循环。而且,很容易得到,对于一个点进行了奇数次操作,他就会被改变,而偶数次操作就不变,知 阅读全文
posted @ 2019-07-26 11:00 Simex 阅读(178) 评论(0) 推荐(0) 编辑
摘要: If we define , do you know what function means? Actually, calculates the total number of enclosed areas produced by each digit in . The following tabl 阅读全文
posted @ 2019-07-26 09:54 Simex 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 01背包,是一个非常基础的东西 在此列出三种基本操作 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int f[10000][10000]; 5 int v[100000]; 6 int t[100000]; 7 i 阅读全文
posted @ 2019-07-25 20:37 Simex 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 链接:P4141 消失之物 这道题确实很坑,在上课的时候,我们老师讲了一个分治的做法。 然而分治实在太玄学了。但是老师的课件上面还写了“有一种更简单的操作,但是没有拓展性。” 这种做法是什么呢? 非常简单,比如说我们要求出在没有i物品时的x的方案,我们只要先跑一边背包得到在所有物品都有的情况下的方案 阅读全文
posted @ 2019-07-25 20:06 Simex 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 链接:P3368 【模板】树状数组 2 看一下模板一?请点击 好,这道题让我们实现区间修改和单点查询。但是根据:1中我们可以发现,树状数组的操作只有修改单点和区间求和,那该怎么实现? 我们不可能强行加上这些功能,就需要进行改造。最简单的方法就是改变数组。 有一个数组,我们只要改变其中两个点,就可以实 阅读全文
posted @ 2019-07-25 18:50 Simex 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 链接:P3374 【模板】树状数组 1 树状数组是个很有用的数据结构,当然,有许多时候我们也可以用线段树代替他。 不过线段树比树状数组难得多,所以应该是用树状数组代替线段树才对。 比如说看看这个:[洛谷日报第22期]可以代替线段树的树状数组? 树状数组是一种基于二进制思想实现的数据结构,要用于查询任 阅读全文
posted @ 2019-07-25 18:28 Simex 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 链接:P1631 在做这道题前,我们来考虑这样的一个问题 已知一个n*n的数表,保证在每一行上,有a[i][j]<a[i][j+1],我们怎样求出它的第k小的值? 对于这个问题,我们 在做这道题前,我们来考虑这样的一个问题 已知一个n*n的数表,保证在每一行上,有a[i][j]<a[i][j+1], 阅读全文
posted @ 2019-07-25 10:44 Simex 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 这道题还是很有趣的 大佬们都用了搜索,DP等做法,而本蒟蒻刚刚学了二维前缀和,所以就用了二维前缀和来做这道题 什么是二维前缀和? (你一定知道什么是一维前缀和) 二维前缀和就是一维前缀和多了一维,它的计算公式是 s[i][j]=s[i-1][j]+v[i][j]+s[i][j-1]-s[i-1][j 阅读全文
posted @ 2019-07-24 11:10 Simex 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 这可真是星球大战 链接: P1197 看一下这道题,如果我们正着做,每摧毁一个后就重新建图,判连通。这样肯定工程浩大且超时,我们就要换个方法了。 为什么不倒着做呢?我们先求出来最后剩下的数量,然后倒着恢复一个又一个的星球,并且重新判断这个星球的连通状况。 欸,这样好像简单了许多 代码: 1 #inc 阅读全文
posted @ 2019-07-24 10:44 Simex 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目链接:Miku 这道题看第一眼可能想到暴搜,从每个点开始向右找到第一个大于它的点并且计算距离 然而绝对会TLE 这时候我们就要找到一个数据结构了——单调栈。 单调栈,顾名思义,就是和单调队列一样的东西。只不过一个是栈,一个 是队列 (不知道单调队列是什么:这) 所谓单调,就是里面的元素都是按照某 阅读全文
posted @ 2019-07-23 20:17 Simex 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 加权并查集是些什么东西啊 P1196 这道题分为两部分考虑,首先考虑两个点是否在一个队列上,这个简单,用并查集就可以了,然而,我们还要考虑的一点是计算两个点的距离,这就怎么处理呢。 嗯,很容易(不)决定用前缀和,我们就会定义一个数组front,其中front[i]表示以i结尾前面的飞船数。这样我们就 阅读全文
posted @ 2019-07-22 21:50 Simex 阅读(142) 评论(0) 推荐(1) 编辑
摘要: 我就是想学个单调栈然后全网都是个蓝题 连接: POJ 洛谷 (字都在注释上) 1 #include<iostream> 2 #include<stack> 3 #include<cstdio> 4 #include<cstring> 5 using namespace std; 6 struct s 阅读全文
posted @ 2019-07-22 15:23 Simex 阅读(170) 评论(0) 推荐(0) 编辑