STL
文章平均质量分 55
f_zyj
一个追逐蝴蝶的人!
展开
-
CF-Codeforces Round #485 (Div. 2)-A-Infinity Gauntlet
ACM模版描述题解两个 mapmapmap 或者一个 mapmapmap 就能解决。代码#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>#include <m...原创 2018-05-30 18:11:51 · 477 阅读 · 0 评论 -
HDU-2017 多校训练赛2-1003-Maximum Sequence
ACM模版描述题解这个题实际上就是一个尺取法,贪心控制左区间端点,右区间端点每次加一,右区间移动需要添加数据,左区间端点移动需要删除数据,就这样,我采用了多重集合搞,但是一开始一直 CECE,后来发现我这里提交代码十次九次都要 CECE,大概是丢包了吧,然后终于提交上了却 WAWA 了,找了好久发现,原来是因为我删除操作,不能直接删除某一个数 xx,因为这样会将所有的 xx 都删除,这显然是不行,我原创 2017-07-28 16:11:43 · 549 阅读 · 3 评论 -
HDU-2017 多校训练赛1-1008-Hints of sd0061
ACM模版描述题解做这个题真是长见识了,由于序列比较大并且需要生成序列,所以直接快排时间会超,那么怎么做呢?自然是寻求近似线性复杂度的解法了。官方题解是这么说的:最慢的情况是 $b$ 的取值为 $0, 1, 2, 3, 5, 8, …$ 的情况,但事实上也只有 $\mathcal{O}(\log_{1.618}{n})$ 个取值。从最大的取值到最小的取值依次使用近似线性复杂度的求第 $k$ 小的方原创 2017-07-27 04:42:09 · 664 阅读 · 0 评论 -
51Nod-1485-字母排序
ACM模版描述题解一开始看到讨论区有人说,将排序部分改成 O(n)O(n) 就行了,然后我就傻傻的以为,计数排序搞一下就行了,然后,果然,无情 TLETLE 了四五组数据,后来知道了这个可以用线段树写,建 2626 棵线段树,分别维护每种字母在不同区间的出现次数(计数部分),试了试,依然挂了一组数据,然后加上了输入输出外挂,险过,差一丢丢就挂了……后来呢,看到有人用 splay 解得,有些厉害了,我原创 2017-07-23 19:12:27 · 653 阅读 · 2 评论 -
51Nod-1689-逛街
ACM模版描述题解十分巧妙的一道题,三个优先队列可解。每次我们枚举终点 endend,这样我们就确定了路上的花费 a[end]a[end],剩下的就是处理进店的花费 b[i]b[i]。这里我们需要注意的是,c[i]∈{0,1}c[i] \in \{0, 1\},所以呢,题目中要求的 kk,也就是必须逛不少于 kk 个 c[i]=1c[i] = 1 的店。首先我们定义三个优先队列 Q1、Q2、Q3Q1原创 2017-07-09 18:18:26 · 580 阅读 · 4 评论 -
HDU-5884-Sort
ACM模版描述题解这个题十分有趣,二分 + 贪心。二分 kk,然后贪心判定是否可以通过。这里判断的过程可以用优先队列优化,每次出 kk 个小的,然后合并起来,变为一个大的存入,但是这样会超时,也许用输入输出外挂可以卡过,但是这里有更好的办法,就是用两个队列,先排序将序列进队列 qi1qi1,然后每次从 qi1、qi2qi1、qi2 中取前 kk 个最小值,合并后直接入 qi2qi2,这里很容易证明每原创 2017-06-28 01:40:10 · 528 阅读 · 0 评论 -
CF-Codeforces Round #420 (Div. 2)-C-Okabe and Boxes
ACM模版描述题解这个是模拟栈的操作,不过有稍微不同的是,题目希望按顺序 pop() 1∼npop()\ 1 \sim n, 如果出现无法按顺序,那么就可以对栈内元素进行一个排序,所以呢,最后结果是求最少需要排序的次数。这里有一个很强的条件,就是不会出现不合法的情况,也就是说,当我们该输出 x 时,栈内一定会有 x,所以呢,原本我们需要暴力解一下,每次遇见不合法就排序,现在可以直接清空,当我们 po原创 2017-06-27 20:34:32 · 415 阅读 · 0 评论 -
hiho-hihoCoder挑战赛29-D-不上升序列
ACM模版描述题解这是一个原题,一眼看到这个题我就知道是原题,就是想不起来是哪里见过了……找了半天算是找到了,CF 的原题,具体题号就不说了,因为那个是不降,这个是不上升。这个题有个很牛的解法,就是用折线的思维考虑,将折线进行合并,可以用 multiset 写(代码 One),也可以用 priority_queue 写(代码 Two),原理是一毛一样的……不断添加点,和之前添加的构成线,当添加的点比原创 2017-06-27 01:17:23 · 802 阅读 · 4 评论 -
图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-J-简单的变位词
ACM模版描述题解简单的字符串排序去重问题,用 map 搞搞,打标签,然后用 vector 存储,搞搞事情,最后输出,多于 5 个输出前 5 个,少于 5 个,有几个输出几个……注意,去重的时候只是去掉相同的词,但是个数还是要算的。我一开始忘了去重,╮(╯▽╰)╭哎,以后打比赛前夕再也不熬夜了,晚上五点才睡,第二天各种 bug 各种 wa~~~代码#include <iostream>#inclu原创 2017-06-12 01:17:48 · 628 阅读 · 0 评论 -
51Nod-1476-括号序列的最小代价
ACM模版描述题解优先队列优化的贪心问题。 qwb 大佬短短几句话就完美诠释了这道题~~~%%%%%%\%\%\%\%\%\%刚开始把 ?? 全部用 )) 替换。然后记录一下 sumsum 和 cntcnt。如果遇到某个时候 cnt<0cnt < 0,那么就把之前的 ?? 里面里从 )) 变成 (( 需要的费用最少的改成 ((,并 cnt+=2cnt +=2。这一步可以用优先队列来维护。这个题代码原创 2017-07-02 22:01:03 · 889 阅读 · 0 评论 -
51Nod-1394-差和问题
ACM模版描述题解快排 + 离散化 + 两个树状数组搞搞,分别用于表示数的个数与数的和,这里的核心是添加和删除过程中绝对值之和的变化,假如当前加入的数为 x,比 x 小的数有 cnt 个,总和为 sum,那么添加 x 的过程这一部分对绝对值之和的影响为 x∗cnt−sumx * cnt - sum,对于比 x 大的数这一部分同理,删除时亦然。这里需要注意的是输入输出优化,另外最好用 <stdio.h原创 2017-06-20 15:49:43 · 363 阅读 · 0 评论 -
蓝桥-ALGO-38-接水问题
ACM模版描述题解接水的水题,一个优先队列轻松搞定~~~代码#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>using namespace std;const int MAXN = 1e4 + 10;const int INF = 0x3f3f3f3f;int原创 2017-06-07 00:15:05 · 476 阅读 · 0 评论 -
51Nod-TalkingData数据科学精英夏令营挑战赛-D-数据流中的算法-众数
ACM模版描述题解map+set 搞搞就行了,用 map 打标签,用 set 返回某时某刻的最大值,另外用一个数组 pass 记录网页,相当于队列,如果全部用 STL 应该也是可以过的,不过这里注意要加上输入和输出两个外挂,平时我比较习惯只加输入,可是挂了,超时一组,后来我加上两个外挂后,875ms875ms 顺顺利利通过!代码#include <iostream>#include <stdio.原创 2017-06-18 01:07:39 · 546 阅读 · 0 评论 -
51Nod-1530-稳定方块
ACM模版描述题解很巧妙的利用两个堆来搞事情,一个大顶堆,一个小顶堆,就是优先队列,维护每次能够拆除的方块儿,每拆除一个向周围扩展一次,并且删除拆掉的这个方块儿,这里用 mapmap 处理。说白了,就是一个有趣的贪心问题,用到两种数据结构罢了,STLSTL ……代码#include <iostream>#include <cstdio>#include <queue>#include <map原创 2017-07-28 19:54:04 · 480 阅读 · 0 评论 -
51Nod-1952-栈
ACM模版描述 题解像这种问题,很明显是单调栈,不过这里的单调栈有些差异,因为栈本身不是正常的栈,出只能尾出,入则可以首尾入,那么维护单调栈时,我们一样无法只从一个方向进行维护,但是可以肯定的是我们只需要维护一个加强版单调栈就好了。这里维护一个单调递增栈,当加入操作是从尾部加入时,我们从单调递增栈的栈顶进行添加,不过添加规则是大于栈顶方可添加;当加入操作是从头部加入时,我们从但带哦递增栈的栈底进行原创 2017-09-13 20:36:15 · 511 阅读 · 0 评论 -
CF-Avito Code Challenge 2018-B-Businessmen Problems
ACM模版描述题解一个 mapmapmap 即可,同一个 keykeykey 取价高即可,最后遍历求和。代码#include <iostream>#include <map>using namespace std;int n, m, x, y;map<int, int> mii;int main(int argc,...原创 2018-05-28 16:57:38 · 289 阅读 · 0 评论 -
51Nod-1981-如何愉快地与STL玩耍
ACM模版描述题解线段树 + bitsetbitset + 二分 + 输入外挂 + 输出外挂 + Visual C++\text{Visual C++}……运气好可以卡过!代码#include #include #include #include using namespace std;const int MAXN = 65540;const原创 2018-01-05 19:15:14 · 1039 阅读 · 3 评论 -
HDU-6008-Worried School
ACM模版描述题解简单的模拟题,题意不是特别容易翻译,但是模拟的规则十分简单,和 WFWF 晋级资格相似,大致是一共 X+Y=GX + Y = G 个名额,其中 XX 分给中国五个区域赛,YY 个分给 ECFinalECFinal,先考虑五个区域赛的每个赛区的五个第一名、五个第二名、五个第三名……其中重复的只算一次,凑够 XX 个,然后在 ECFinalECFinal 中选前若干名去除和前边五个赛区原创 2017-11-18 20:05:00 · 478 阅读 · 0 评论 -
HDU-6000-Wash
ACM模版描述题解给定 LL 件衣服让你去洗,洗衣房有 nn 个洗衣机和 mm 个烘干机,每个设备都给定你完成工作所需时间,但是由于设备比较烂,每个设备在某一段时间内只能洗一件衣服,问洗完这 LL 件衣服最短用时多久?这个题很简单,想要时间最短,自然是考虑烘干最后一件衣服所需的时间,那么怎么要这个最后一件衣服在最短时间内处理完呢?这里就涉及到贪心了,首先我们可以根据洗衣机洗涤时间处理出来每件衣服洗干原创 2017-11-17 19:19:41 · 486 阅读 · 0 评论 -
51Nod-1573-美丽的集合
ACM模版描述题解这个题真是鬼斧神工,让我再一次见识到了 bitsetbitset 的神奇威力……利用并查集来处理集合并的问题,然后暴力手段合并两个集合的元素,并且用 bitsetbitset 来处理和的种类数,这里十分巧妙,首先将原本的所有和全部加上新加入的元素形成新的和,然后与原本的和种数合并在一起即可。很好玩的一个题,没想到 bitsetbitset 操作竟然如此清真(其实我并不知道清真啥子梗原创 2017-10-08 12:12:17 · 498 阅读 · 0 评论 -
ACM/ICPC竞赛之STL--bitset
ACM模版bitset在 STLSTL 的头文件中 <bitset><bitset> 中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。定义 bitsetbitset 对象的示例原创 2017-09-03 18:13:04 · 2000 阅读 · 0 评论 -
计蒜客-2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-A-Banana
ACM模版题解我不喜欢计蒜客,我都等了两天了,还没有地方可以提交……现在连题目都看不了,算了,题解就不写了,光发一下代码吧……代码#include <iostream>#include <vector>#include <algorithm>using namespace std;const int MAXN = 50;int n, m;vector<int> mon[MAXN + 3];v原创 2017-09-11 14:12:02 · 369 阅读 · 0 评论 -
HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1008-Chinese Zodiac
ACM模版描述题解string+mapstring + map 搞搞就行了,签到题。代码#include <iostream>#include <map>#include <string>#include <cmath>using namespace std;string s1, s2;map<string, int> msi;int main(){ msi["rat"] = 1;原创 2017-09-19 00:26:10 · 615 阅读 · 0 评论 -
HDU-2017 ACM/ICPC Asia Regional Qingdao Online-1003-The Dominator of Strings
ACM模版描述题解理论上直接 stringstring 就是完全可以的啊,不知道为啥一直 WAWA 和 TLETLE,解绑定也不行,最后我只好用 char[]char [] 来读取输出,十分纳闷儿啊……不是特别理解之前为啥一直 WAWA 和 TLETLE。代码#include <cstdio>#include <cstring>#include <string>#include <iostre原创 2017-09-18 13:27:06 · 684 阅读 · 2 评论 -
51Nod-1380-夹克老爷的逢三抽一
ACM模版描述题解首先发一下官方题解吧:按照官方题解写的代码发现自己一直在第 2121 组数据 TLETLE,很明显,这组数据是后来加上去专门卡数据的。于是发现自己的代码中忽略了一个部分是暴力的思维,在查找左右两侧可选的村民时,我用了两个循环,这显然是不行的,所以我需要使用链表的思维,这样查找的复杂度就是 O(1)O(1) 了,也就顺利的 ACAC 了。代码#include <iostream>#原创 2017-08-30 16:53:55 · 696 阅读 · 0 评论 -
HDU-2017 多校训练赛10-1010-Schedule
ACM模版描述题解典型的贪心问题,用 setset 维护一下,二分搞搞就行了。代码#include <iostream>#include <algorithm>#include <cstdio>#include <set>using namespace std;typedef long long int ll;const int MAXN = 1e5 + 5;int n;struct node原创 2017-08-28 20:52:04 · 388 阅读 · 0 评论 -
51Nod-1053-最大M子段和 V2
ACM模版描述题解这个题需要用到贪心搞。首先涉及到一点优化是,连续的正数或者连续的负数,到最后肯定是可以合并在一起的,所以我们首先将序列中的相邻正数或者相邻负数全部合并,将序列压缩,也许这个也谈不上什么优化,因为这个步骤对于整个贪心过程是必须的,在这个过程中,累计下来所有正数的和。此时,我们可以发现,新的序列是一个一正一负交替的序列,貌似叫做摆动序列吧,那么此时我们可以考虑合并(如果需要的话),合并原创 2017-09-06 13:25:22 · 945 阅读 · 0 评论 -
蓝桥-ALGO-28-星际交流
ACM模版描述题解水题,直接用 <algorithm>中的 next_permutation() 函数运行 M 次就好了,水的不要不要的。根本不用自己写……代码#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 11111;int N, M;int A[MAXN原创 2017-06-05 04:10:55 · 547 阅读 · 0 评论 -
河南第十届ACM省赛-E-八纵八横
ACM模版描述 题解我们不解题,我们只是代码的搬运工……所以不要问我这个题为啥这样写,这个题是前一段时间河南省选赛的最难的题,这次出在河南第十届ACM省赛也是为了防 AK,谁成想,并没有起到效果,一共十一支队伍 AC,不过这十一支队伍都是那两个学校的,连铜牌队伍也 A 出来了,所以应该是他们都打印了这个题的代码,直接拓上去的。实际上这个并不是什么模版题……是彻头彻尾的原题原代码罢了,mark 一下原创 2017-05-10 01:32:47 · 1386 阅读 · 1 评论 -
ZOJ-The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple-C
ACM模版描述 题解这个题的难点是翻译,翻译好了,一遍 AC。首先输入 T,表示数据组数。 接着输入 n 和 q 表示 n 次询问与 q 次关系。 然后一个 c 表示可能出现的名字,接着就是 c 个名字。 然后是 q 次关系,每次开头一个 m 表示关系人数,接着 m 个人组成的关系网。 最后是 n 次询问,每次询问给出 q 个 0 或 1,表示某人是否出现在第 q 次关系网中。 问,针对原创 2017-04-23 23:40:10 · 618 阅读 · 0 评论 -
51Nod-1282-时钟
ACM模版描述题解先将指针排序,然后获取指针刻度差值,接着,找到一个起点存储起来,用作后续的比较。这里起点的查找标准具体看函数,不做解释。求得有多少段相同的序列,累加相同状态的钟表对儿数即可(代码One)。这里可以进行一个比较好的优化,使用哈希+map(代码Two)。代码One:#include <iostream>#include <algorithm>#include <cstdio>usi原创 2016-09-01 03:08:36 · 815 阅读 · 2 评论 -
51Nod-1280-前缀后缀集合
ACM模版描述题解两个数组,一个正序一个倒序,数据结构是map,不断查找匹配就行了,没啥难度,虽然用的两重循环,但是经过剪枝,其实复杂度并不高。代码#include <stdio.h>#include <map>using namespace std;const int MAXN = 5e4 + 10;const int OK = 999;int A[MAXN]; // 正序int B原创 2016-08-30 13:53:38 · 734 阅读 · 0 评论 -
51Nod-1163-最高的奖励
ACM模版描述题解这是一道十分不错的贪心问题,有O(nlogn)和O(n*α(n))解法。 One O(nlogn)算法: 将最晚结束时间升序排序,第n个任务最晚时间如果大于已经消耗的时间,则可以算入总和,若不大于可以尝试替换掉已经算入总和中的最小奖励的任务,条件是这件任务的奖励要大于要替换掉的任务的奖励。使用优先队列维护。Two O(n*α(n))算法: 将任务奖励从大到小排序,然后遍历,如原创 2016-08-08 15:39:10 · 1073 阅读 · 0 评论 -
51Nod-1117-聪明的木匠
ACM模版描述题解化分割为石子归并的思想,但不同的是,这个每段长度是可以任选的,所以不像石子归并的动态规划,而是使用贪心+优先队列。代码#include <iostream>#include <vector>#include <queue>#include <cstdio>using namespace std;int main(int argc, const char * argv[]){原创 2016-08-07 23:41:44 · 1160 阅读 · 7 评论 -
51Nod-1095-Anigram单词
ACM模版描述题解使用map容器,内部实现和Hash算法有关。思路很简单,现将原单词存入第一个map容器,然后再将排序后的字符串插入第二个map容器中,然后分别查找目标字符串,将结果相减即可。代码#include <iostream>#include <algorithm>#include <cstring>#include <map>using namespace std;int main(原创 2016-08-02 23:31:56 · 1173 阅读 · 0 评论 -
51Nod-1625-夹克爷发红包
ACM模版描述题解做这道题,有些懵逼了我,因为一开始使用的方法是纯粹的贪心,但是偏偏有一组数据挂掉了,傻傻A不过去…… 这个解法,是将行和列并在一起贪心,可能是因为行和列数据交叉,产生了后效应性,所以有的数据会挂掉。然后,采用的枚举加贪心AC了。 因为行数最大为10,所以可以先枚举行,撑死了1024种状态,所以是可行的,然后列进行贪心,保证高级红包组数不超过k即可,最后取最大红包总和,这样子写就原创 2016-08-16 00:37:36 · 1042 阅读 · 0 评论 -
51Nod-1010-只包含2 3 5的数
ACM模版描述题解先打表生成丑数,然后二分查找到大于等于n的第一个数。代码#include <iostream>#include <cstdio>#include <queue>using namespace std;typedef unsigned long long ull;const int MAXN = 1e4 + 1e3;/* * Ugly Numbers * Ugly numbe原创 2016-07-31 10:06:05 · 607 阅读 · 0 评论 -
ACM/ICPC竞赛STL--pair
ACM模版 STL的<utility>头文件中描述了一个看上去非常简单的模版类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较运算符模版函数。 Example,想要定义一个对象表示一个平面坐标点,则可以:pair<double, double> p;cin >> p.first >> p.second;pair模版类需要两个参数:首元素的数据类型和尾元素的数据类型。原创 2016-06-23 21:04:03 · 4110 阅读 · 6 评论 -
ACM/ICPC竞赛之STL简介
ACM模版STL简介关于STLSTL(Standard Template Library,标准模版库)是C++语言标准中的重要组成部分。STL以模板类和模版函数的形式为程序员提供了各种数据结构和算法的实现,程序员吐过能够充分的利用STL,可以在代码空间、执行时间和编码效率上获得极大的好处。STL大致可以分为三大类:算法(algorithm)、容器(container)、迭代器(iterator)。S原创 2016-06-23 19:52:25 · 18064 阅读 · 2 评论 -
ACM/ICPC竞赛之STL--algorithm
ACM模版algorithm<algorithm>无疑是STL中最大的一个头文件,它是由一大堆模板函数组成的。以下列举出<algorithm>中的模版函数: A adjacent_findB binary_searchC copy / copy_backward / count / count_ifE equal / equal_rangeF fill / fill_n原创 2016-06-25 05:23:20 · 3173 阅读 · 0 评论