摘要:
众所周知,C++ 中就算是精度最高的浮点数 long double 也会存在可观的精度丢失的问题,那么我们该如何解决这个问题呢?高精度浮点数又显得过于夸张繁琐。 何不想个折中的法子? 于是,我们想到了一种办法,用 long long 分别表示分母和分子! 而我们在进行分数运算的时候,就可以模拟人工手 阅读全文
摘要:
题目分析 首先我们来抓题目里的关键信息:最少、M≤20 那么由此得出做法就是DFS、贪心或DP,我们一一讨论 DFS 暴搜复杂度\(O(m!)\),只能过70%(70%它不香吗) 贪心 如果要贪心我们需要证明局部最优可以导致整体最优,遗憾的是我们找不到这种性质 DP 由于M≤20,我们可以很快想出是 阅读全文
摘要:
题意分析 题目链接 喜欢是单向的,喜欢有传递性……Emmm这听起来好像……对了,就是连通性问题! 我们不妨将奶牛之间的喜欢关系表示为一条条单向边,怎么求明星奶牛的数量呢? 这里我们提出一个概念,缩点 设计算法 缩点是什么呢,它将环处理为点的一种方式,因为我们可以想想,如果一群奶牛呈这样的喜欢模式: 阅读全文
摘要:
介绍 分层图是一种很容易理解并且用途广泛的图,多用于求最短路,它其实是普通图最短路的加强版,可以解决一些图论题目的特殊操作,这个特殊操作就是我们去分的“层”。 思想 做分层图的题,只要把题目读懂,明白到底“层”分在哪就能解题,比如说: 给定一张$n$个点$m$条边的图,给出原点$s$和目标点$t$, 阅读全文
摘要:
这篇文章我们来讲一下线段树 线段树,适用于对一个数列区间进行操作,可以求这段数列$i$到$j$的和、乘积、最大值、最小值等等等等,因此线段树有十分多的变种 问题提出 如果我给你一个数列$a$,要求你把$a_i$到$a_j$中所有的值全部加上$k$,并最后输出某些区间所有数的和 解决方案 最朴素的做法 阅读全文
摘要:
题目链接:702:Crossing River 题目大意为有n个人要过河,船最多乘两个人,给出每个人乘船时间,两人乘船时间由更慢者决定。求过河最短时间。有t组数据,输入数据组数t,对于每组数据,第一行输入总人数n,然后给出每个人乘船所需时间。输出要求每组数据单独一行,输出最短时间。 建立数学模型 首 阅读全文
摘要:
这篇文章,我们来谈谈一些关于排序的东西 注意!这篇文章在写的时候混淆了一个概念,“稳定”本义指的是能保证两个相等的数,经过排序之后,序列的前后位置顺序不变。在本文中理解成了排序的复杂度是否固定!!!望读者分辨清楚!!! 排序是什么? 排序是什么?我们首先要来解决一下这个问题。 排序,就是把一串数字( 阅读全文
摘要:
树与二叉树的基础概念与代码实现 树,其实跟我们现实生活中的树是差不多的。 如果你还不了解树这个数据结构的话,你可能认为树是这样的: 但事实正好相反,在数据结构当中,树的模样是这样的,它更接近于一棵树的根部: 好吧,你现在应该对树有了一个大概的认识,但对它的定义还有些不了解,那么我们来看看度娘的解释吧 阅读全文
摘要:
这次我们了解一下滑动窗口的问题 首先,让我们了解一下滑动窗口是什么? 这里有一张图(来自POJ),解释了滑动窗口的意思: 我们可以看见,一个长度固定为3的框(窗口)从左端点移动到右端点,每次移动一个数,这就是我们所说的“滑动窗口”。 而每次滑动窗口的最大值以及最小值就指的是滑动窗口在每次移动后区间内 阅读全文