- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 约瑟夫问题(链表)
很经典的一道题目,放上洛谷链接:P1996这道题可以使用数组实现,但是也可以用另一种方法也就是我们今天所要说的链表做法,在这道题中,相比数组做法,链表做法还是相对快一些的。大题思路就是用指针来建一个成环的链表,然后从一号点开始往后找到第 mmm 个点,将其所对应的标号输出,然后删除这个点并将这个点两边的点连接起来,重复此步骤,直到最后链表中还剩下一个点,单独输出即可。Code#include<iostream>#include<cstdio>#include<al
2021-12-12 10:50:26 659
原创 C++ STL之lower_bound与upper_bound函数
在解决问题的过程中,我们会需要进行以下步骤:求出数组中第一个大于等于 xxx 或第一个大于 xxx 的数,如果这时数据很大并且我们去遍历的话,时间复杂度为 O(n)O(n)O(n),这时候我们可以考虑二分,也可以考虑 C++ 自带的 STL 中的 lower_bound 与 upper_bound 来做,所以我们来讲一下这两个函数。值得注意的是,这两个函数仅适用于非递减序列中,否则会导致未知错误。lower_boundlower_bound求的是非递减序列中第一个大于等于 xxx 的数。一般形式:
2021-11-10 07:28:40 299
原创 和 式(sums)
数学中处处都有和式,所以我们需要一些基本的工具来处理它们。这一讲要建立一些记号与一般性的技巧时的求和简单易行。记号 NOTATION我们在求 1~n 的和时,通常把它写为 1+2+…+(n-1)+n,公式中的 “…” 告诉我们要完整计算包含的项所确定的模式。当然了,对于 1+7+…+41.7 这样的和式,他没有释疑的上下文,所以他并没有意义。我们将研究一般形式的和a1+a2+...+ana_1+a_2+...+a_na1+a2+...+an,其中的每个 aka_kak 表示某种方式定义
2021-11-01 14:25:30 2858
原创 论二进制在题目中的应用
在开讲之前,首先需要明白下面的一个事实:任何一个数都能用2的任意次方相加所得。大家可能也都了解,正是因为它,许多题目都可以用二进制来做,并且大大降低了题目难度,所以二进制的应用我想大家都应该运用的很熟练。接下来,我们用一个例题来说明二进制的方便可靠:P2431 正妹吃月饼题目中给到:这些月饼的质量分别是 1g,2g,4g,8g,16g....1g,2g,4g,8g,16g....1g,2g,4g,8g,16g.... 后面一个是前面的 222 倍。每种只有一个。可以看出,月饼的质量都是
2021-10-14 20:46:41 230
原创 最短路径+二分算法
当我们在计算最短路时,有时会依次枚举一个值来构造新图求最终答案,但是枚举的值的规律又成片成片的一样,这时候就需要二分答案了。例题YbtOJ修建道路这道题的正确做法显然是二分答案。这道题的难点在于现代 OIOIOI 集团免费给 subsubsub 修的那 kkk 条道路。显然,对于一条选定的道路,我们肯定要免费修这条路中前 kkk 长的小路段。用一般的最短路径显然无法解决此问题,因为最终答案选定的那条路在免费修 kkk 条路之前也许并不是该图中的最短路。所以我们要逆向思维一下,如果假定答案,就是假
2021-10-14 19:47:39 282
原创 购买商品(并查集+01背包)
先看题目由题面可以得到这是一个关于01背包的练习题,然后再仔细看一遍,发现每个商品之间还有联系,买这一个商品必须还要买所有与他相关的商品(黑心商店 ),可以用并查集来维护这种关系,下面详细介绍一下思路。思路对于每一次给出的两个有联系的商品,先将他们并入一个集合,这样就会形成若干个集合,我们可以将一个商品的所有与它联系的商品的价值与价格并入这一个商品中,然后分析去重,最后跑一遍01背包即可。代码#include<iostream>#include<cstdio>#incl
2021-10-10 19:39:47 147
原创 洛谷P7892题解
题目传送门作为月赛的第一题,还是蛮简单的。思路首先,不要被样例所迷惑,样例给出的只是一种可行的方案,但并不是最优解,最优解应是围出一个 2×22\times22×2 的像素格,所需的栅栏数为 (2+1)×2+(2+1)×2=12(2+1)\times2+(2+1)\times2=12(2+1)×2+(2+1)×2=12。接下来,因为题目中说明围成的像素格一定是一个长方形,所以可以根据长方形的周长与面积关系来做的,当这个长方形的面积一定时,构成这个长方形的不相邻的两条边差的绝对值越小,构成这个长方形的
2021-10-05 06:19:30 194
原创 c++ 取模
有的题目因为最后算出来的答案是一个非常大的数,所以会在题干中让我们取模,其实取模也应该注意许多问题,稍不注意,这道题可能也就白做了。正数取模设 a>0a>0a>0,则取模为 aaa%modmodmod。负数取模这个需要重点注意,在题目中我们负数取完模后按题意应是正数,但如果我们按正常做的活,它会是一个负数从而影响最终答案。所以,对负数取模我们常用一下方法取模。设 b<0b<0b<0,则取模为 ((( (((bbb%modmodmod)))+++modmodmod
2021-10-04 15:55:39 1494
原创 STL之vector详解
STL是一个很棒的东西,下面讲一讲STL容器vector的一般用法。介绍vector是一种动态数组,是基本数组的类模板。其内部定义了很多基本操作。 ——摘自度娘vector之所以被称为动态数组,是因为它既可以采用下标对vector的元素进行访问,和数组一样高效。还可以对它的大小进行动态改变,并且它的大小会被容器自动处理。定义使用vector的标准模板,就需要在添加vector的头文件,即#include<vector>。定义如下:v
2021-10-03 07:47:48 1217
原创 时间复杂度
在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。 ——百度常见的时间复杂度有:常数阶 O(1)O(1)O(1)对数阶 O(logn)O(logn)O(logn)线性阶 O(n)O(n)O(n)线性对数阶 O(nlogn)O(nlogn)O(nlogn).
2021-09-18 07:26:57 240
原创 洛谷CF1512B题解
题目大体意思是给出 TTT 个 N∗NN * NN∗N 的矩形,每一个矩形中都有两个星号,让你再在矩形中将两个点变为星号使四个星号构成一个矩形并将这个矩形输出。思路用 (l1,r1)(l1,r1)(l1,r1) 和 (l2,r2)(l2,r2)(l2,r2) 记录这两个星号的位置,然后分类讨论三种情况 (可以自己画一下图)。当这两个位置没有相同的行或列即 l1!=r1&&l2!=r2时,相当于知道了这个矩形的一条对角线去求另外一条对角线,求的这一条对角线是唯一的,所以只能改变位置
2021-09-08 15:39:31 189
原创 洛谷P7817题解
题目传送门思路对于第一个测试点,考虑了一下,直接暴力搜索,可以很轻松地拿到 222 分。对于第二个测试点,很显然第一种策略肯定是不行的,所以要换一种思维方式,因为字符串 SSS 和 TTT 都只是由 777 或 999 组成的,所以对于任意一个长度大于 222 的字符串,串中一定存在一个数的出现次数大于 111,所以不难发现,两个重复出现的数的最大公约数一定等于这个这个数,这两个重复出现的数字也可以看做长度为 111 的区间。因此,可以把串中所有满足最大公约数为 777 和 999 并且长度为
2021-09-08 15:36:42 303 1
原创 NOIP2012 提高组初赛试题讲解
T1考察计算机基础知识,所谓集成电路是将大量的晶体管和电子线路组合在一块硅片上,故又称为芯片。故选 AAA。T2HTMLHTMLHTML超文本标记语言阅读方式是浏览器,浏览器主要用于显示网页服务器。T3英特尔公司是全球最大的个人计算机零件和CPU制造商。T4TCP/IP模型AAA项最符合该图形式。T5快速排序的期望复杂度是O(nlogn)O(nlogn)O(nlogn)的,最坏情况(已经排好序的序列)是O(n2)O(n^2)O(n2)的。T6第一代:电子管计算机第二代:晶体管计
2021-09-08 15:08:21 974
原创 [YBtOJ]最多约数
题目传送门一句话:给定一个正整数nnn ,对于所有不超过 nnn的正整数,找到包含约数最多的一个数。如果有多个这样的数,那么回答最小的那个。25ps25ps25ps纯暴力#include<iostream>#include<cstdio>#include<cmath>#define ll long longusing namespace std;ll n,c;ll num,maxnum=2;int main(){ scanf("%lld",&.
2021-09-07 16:27:43 336
原创 浅谈单调队列及优化DP
## 概念单调队列是一个满足内部单调递增或单调递减的数据结构。## 实质单调队列是一个 **双端队列** 。## 特点- 从队尾入列,队首或队尾出列。- 队列中元素大小必须是 **单调** 的。- 队列中的元素对应在原来列表中的顺序必须是 **单调递增** 的。## 作用维护区间最值或降低 $DP$ 维数来达到减少空间及时间的目的。## 例题### [洛谷P1886](https://www.luogu.org/problemnew/show/P1886)第一思路
2021-08-22 16:41:31 1070
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人