
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 · 495 阅读 · 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 · 304 阅读 · 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 · 1067 阅读 · 3 评论 -
HDU-6008-Worried School
ACM模版描述题解简单的模拟题,题意不是特别容易翻译,但是模拟的规则十分简单,和 WFWF 晋级资格相似,大致是一共 X+Y=GX + Y = G 个名额,其中 XX 分给中国五个区域赛,YY 个分给 ECFinalECFinal,先考虑五个区域赛的每个赛区的五个第一名、五个第二名、五个第三名……其中重复的只算一次,凑够 XX 个,然后在 ECFinalECFinal 中选前若干名去除和前边五个赛区原创 2017-11-18 20:05:00 · 495 阅读 · 0 评论 -
HDU-6000-Wash
ACM模版描述题解给定 LL 件衣服让你去洗,洗衣房有 nn 个洗衣机和 mm 个烘干机,每个设备都给定你完成工作所需时间,但是由于设备比较烂,每个设备在某一段时间内只能洗一件衣服,问洗完这 LL 件衣服最短用时多久?这个题很简单,想要时间最短,自然是考虑烘干最后一件衣服所需的时间,那么怎么要这个最后一件衣服在最短时间内处理完呢?这里就涉及到贪心了,首先我们可以根据洗衣机洗涤时间处理出来每件衣服洗干原创 2017-11-17 19:19:41 · 507 阅读 · 0 评论 -
51Nod-1573-美丽的集合
ACM模版描述题解这个题真是鬼斧神工,让我再一次见识到了 bitsetbitset 的神奇威力……利用并查集来处理集合并的问题,然后暴力手段合并两个集合的元素,并且用 bitsetbitset 来处理和的种类数,这里十分巧妙,首先将原本的所有和全部加上新加入的元素形成新的和,然后与原本的和种数合并在一起即可。很好玩的一个题,没想到 bitsetbitset 操作竟然如此清真(其实我并不知道清真啥子梗原创 2017-10-08 12:12:17 · 514 阅读 · 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 · 634 阅读 · 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 · 705 阅读 · 2 评论 -
51Nod-1952-栈
ACM模版描述 题解像这种问题,很明显是单调栈,不过这里的单调栈有些差异,因为栈本身不是正常的栈,出只能尾出,入则可以首尾入,那么维护单调栈时,我们一样无法只从一个方向进行维护,但是可以肯定的是我们只需要维护一个加强版单调栈就好了。这里维护一个单调递增栈,当加入操作是从尾部加入时,我们从单调递增栈的栈顶进行添加,不过添加规则是大于栈顶方可添加;当加入操作是从头部加入时,我们从但带哦递增栈的栈底进行原创 2017-09-13 20:36:15 · 535 阅读 · 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 · 384 阅读 · 0 评论 -
51Nod-1053-最大M子段和 V2
ACM模版描述题解这个题需要用到贪心搞。首先涉及到一点优化是,连续的正数或者连续的负数,到最后肯定是可以合并在一起的,所以我们首先将序列中的相邻正数或者相邻负数全部合并,将序列压缩,也许这个也谈不上什么优化,因为这个步骤对于整个贪心过程是必须的,在这个过程中,累计下来所有正数的和。此时,我们可以发现,新的序列是一个一正一负交替的序列,貌似叫做摆动序列吧,那么此时我们可以考虑合并(如果需要的话),合并原创 2017-09-06 13:25:22 · 968 阅读 · 0 评论 -
ACM/ICPC竞赛之STL--bitset
ACM模版bitset在 STLSTL 的头文件中 <bitset><bitset> 中定义了模版类 bitsetbitset,用来方便地管理一系列的 bitbit 位的类。bitsetbitset 除了可以访问指定下标的 bitbit 位以外,还可以把它们作为一个整数来进行某些统计。bitsetbitset 模板类需要一个模版参数,用来明确指定含有多少位。定义 bitsetbitset 对象的示例原创 2017-09-03 18:13:04 · 2047 阅读 · 0 评论 -
51Nod-1380-夹克老爷的逢三抽一
ACM模版描述题解首先发一下官方题解吧:按照官方题解写的代码发现自己一直在第 2121 组数据 TLETLE,很明显,这组数据是后来加上去专门卡数据的。于是发现自己的代码中忽略了一个部分是暴力的思维,在查找左右两侧可选的村民时,我用了两个循环,这显然是不行的,所以我需要使用链表的思维,这样查找的复杂度就是 O(1)O(1) 了,也就顺利的 ACAC 了。代码#include <iostream>#原创 2017-08-30 16:53:55 · 727 阅读 · 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 · 401 阅读 · 0 评论 -
51Nod-1530-稳定方块
ACM模版描述题解很巧妙的利用两个堆来搞事情,一个大顶堆,一个小顶堆,就是优先队列,维护每次能够拆除的方块儿,每拆除一个向周围扩展一次,并且删除拆掉的这个方块儿,这里用 mapmap 处理。说白了,就是一个有趣的贪心问题,用到两种数据结构罢了,STLSTL ……代码#include <iostream>#include <cstdio>#include <queue>#include <map原创 2017-07-28 19:54:04 · 498 阅读 · 0 评论 -
HDU-2017 多校训练赛2-1003-Maximum Sequence
ACM模版描述题解这个题实际上就是一个尺取法,贪心控制左区间端点,右区间端点每次加一,右区间移动需要添加数据,左区间端点移动需要删除数据,就这样,我采用了多重集合搞,但是一开始一直 CECE,后来发现我这里提交代码十次九次都要 CECE,大概是丢包了吧,然后终于提交上了却 WAWA 了,找了好久发现,原来是因为我删除操作,不能直接删除某一个数 xx,因为这样会将所有的 xx 都删除,这显然是不行,我原创 2017-07-28 16:11:43 · 570 阅读 · 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 · 685 阅读 · 0 评论 -
51Nod-1485-字母排序
ACM模版描述题解一开始看到讨论区有人说,将排序部分改成 O(n)O(n) 就行了,然后我就傻傻的以为,计数排序搞一下就行了,然后,果然,无情 TLETLE 了四五组数据,后来知道了这个可以用线段树写,建 2626 棵线段树,分别维护每种字母在不同区间的出现次数(计数部分),试了试,依然挂了一组数据,然后加上了输入输出外挂,险过,差一丢丢就挂了……后来呢,看到有人用 splay 解得,有些厉害了,我原创 2017-07-23 19:12:27 · 672 阅读 · 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 · 599 阅读 · 4 评论 -
51Nod-1476-括号序列的最小代价
ACM模版描述题解优先队列优化的贪心问题。 qwb 大佬短短几句话就完美诠释了这道题~~~%%%%%%\%\%\%\%\%\%刚开始把 ?? 全部用 )) 替换。然后记录一下 sumsum 和 cntcnt。如果遇到某个时候 cnt<0cnt < 0,那么就把之前的 ?? 里面里从 )) 变成 (( 需要的费用最少的改成 ((,并 cnt+=2cnt +=2。这一步可以用优先队列来维护。这个题代码原创 2017-07-02 22:01:03 · 937 阅读 · 0 评论 -
HDU-5884-Sort
ACM模版描述题解这个题十分有趣,二分 + 贪心。二分 kk,然后贪心判定是否可以通过。这里判断的过程可以用优先队列优化,每次出 kk 个小的,然后合并起来,变为一个大的存入,但是这样会超时,也许用输入输出外挂可以卡过,但是这里有更好的办法,就是用两个队列,先排序将序列进队列 qi1qi1,然后每次从 qi1、qi2qi1、qi2 中取前 kk 个最小值,合并后直接入 qi2qi2,这里很容易证明每原创 2017-06-28 01:40:10 · 555 阅读 · 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 · 433 阅读 · 0 评论 -
hiho-hihoCoder挑战赛29-D-不上升序列
ACM模版描述题解这是一个原题,一眼看到这个题我就知道是原题,就是想不起来是哪里见过了……找了半天算是找到了,CF 的原题,具体题号就不说了,因为那个是不降,这个是不上升。这个题有个很牛的解法,就是用折线的思维考虑,将折线进行合并,可以用 multiset 写(代码 One),也可以用 priority_queue 写(代码 Two),原理是一毛一样的……不断添加点,和之前添加的构成线,当添加的点比原创 2017-06-27 01:17:23 · 822 阅读 · 4 评论 -
51Nod-1394-差和问题
ACM模版描述题解快排 + 离散化 + 两个树状数组搞搞,分别用于表示数的个数与数的和,这里的核心是添加和删除过程中绝对值之和的变化,假如当前加入的数为 x,比 x 小的数有 cnt 个,总和为 sum,那么添加 x 的过程这一部分对绝对值之和的影响为 x∗cnt−sumx * cnt - sum,对于比 x 大的数这一部分同理,删除时亦然。这里需要注意的是输入输出优化,另外最好用 <stdio.h原创 2017-06-20 15:49:43 · 376 阅读 · 0 评论 -
51Nod-TalkingData数据科学精英夏令营挑战赛-D-数据流中的算法-众数
ACM模版描述题解map+set 搞搞就行了,用 map 打标签,用 set 返回某时某刻的最大值,另外用一个数组 pass 记录网页,相当于队列,如果全部用 STL 应该也是可以过的,不过这里注意要加上输入和输出两个外挂,平时我比较习惯只加输入,可是挂了,超时一组,后来我加上两个外挂后,875ms875ms 顺顺利利通过!代码#include <iostream>#include <stdio.原创 2017-06-18 01:07:39 · 568 阅读 · 0 评论 -
图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-J-简单的变位词
ACM模版描述题解简单的字符串排序去重问题,用 map 搞搞,打标签,然后用 vector 存储,搞搞事情,最后输出,多于 5 个输出前 5 个,少于 5 个,有几个输出几个……注意,去重的时候只是去掉相同的词,但是个数还是要算的。我一开始忘了去重,╮(╯▽╰)╭哎,以后打比赛前夕再也不熬夜了,晚上五点才睡,第二天各种 bug 各种 wa~~~代码#include <iostream>#inclu原创 2017-06-12 01:17:48 · 651 阅读 · 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 · 491 阅读 · 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 · 568 阅读 · 0 评论 -
河南第十届ACM省赛-E-八纵八横
ACM模版描述 题解我们不解题,我们只是代码的搬运工……所以不要问我这个题为啥这样写,这个题是前一段时间河南省选赛的最难的题,这次出在河南第十届ACM省赛也是为了防 AK,谁成想,并没有起到效果,一共十一支队伍 AC,不过这十一支队伍都是那两个学校的,连铜牌队伍也 A 出来了,所以应该是他们都打印了这个题的代码,直接拓上去的。实际上这个并不是什么模版题……是彻头彻尾的原题原代码罢了,mark 一下原创 2017-05-10 01:32:47 · 1415 阅读 · 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 · 654 阅读 · 0 评论 -
CF-Codeforces Round #410 (Div. 2)-D-Mike and distribution
ACM模版描述题解这个题当时我没看懂题,所以没做,后续补题时学到了很多东西~~~好题!题意大概是,从 A[] 和 B[] 中对应位置分别取不超过⌊n2⌋+1\lfloor\frac{n}{2}\rfloor + 1 个数,使分别对于 A[] 和 B[] 来说,这些数之和的二倍大于该数组和,也就是说子集的两倍大于数组和,那么等价于所取的数之和大于未取的数之和,所以,这里自然是取数越多越好,最多 ⌊n2原创 2017-04-23 13:07:52 · 663 阅读 · 0 评论 -
51Nod-1275-连续子段的差异
ACM模版描述题解第一次使用单调队列,也是第一次使用双向队列,看了前辈 光速小子 的博客后,算是搞懂了这道题。这个问题的本质在于找到最大的区间[i, j],保证从该区间的所有子区间都满足题意,但是如果每找到一个区间[i, j]就通通把它的子区间数加进去,那么一定会出现重复的情况,所以这里我们只要维护一边,然后去查找最大区间,最后再累加j - i + 1即可,代码中之所以直接累加j - i是因为此时的原创 2017-04-20 00:22:55 · 815 阅读 · 0 评论 -
51Nod-1562-玻璃切割
ACM模版描述题解这是一道 CF 的题,很明显我们需要求得是横向纵向每个状态下的最大值,然后相乘即为结果,这个题运气好的话有两种解法儿,运气不好的话,我就知道一种。因为51时限比较严格,不仅卡了 IO,还卡了运气,第一种办法用 set 集合(代码 One)搞搞,但是不幸的是,总是有一组超时,评论区有一个大神说他多提交几次迷之闪过,我想,大概他用的就是这个方法,而我却没有那么好的人品,提交了七八次,时原创 2017-04-01 00:24:14 · 1420 阅读 · 4 评论 -
51Nod-1376-最长递增子序列的数量
ACM模版描述题解LIS问题,但是并不简单啊,要求的不是长度,而是最长的出现的次数~~~我想了一天也没想通怎么搞,只是知道一定需要对LIS进行优化改造,渣爆了我。找了大牛的代码看了看,看了许久,才略懂一二。在求LIS时,用vector开两个数组h[]和g[],h[i][j]用来存储最长递增序列的第i个位置可以放的数字,对应g[i][j]用来存储此时构成了多少个序列,然后通过二分查找h[i][k],找原创 2016-10-19 16:39:51 · 1024 阅读 · 0 评论 -
51Nod-1521-一维战舰
ACM模版描述题解好长时间没有见过51更新4级以下的题了,今天多了一道从CF上抓来的题,很有趣,区间问题,对于我这种做题少的人来说是一种区间新题型。比较简单的是直接上STL的set,用二分搞搞(代码One)。但是这个耗时贼高,于是发现这道题不用set和二分也是完全可以的(代码Two),利用一维数组从某一出发点向两边查找,其实问题的关键是如何求一段区间能放下多少艘战舰,很明显: num = (le原创 2016-10-17 19:56:10 · 1575 阅读 · 0 评论 -
HDU-1004-Let the Balloon Rise
ACM模版描述题解水题一道,处理方法多了去,我用的map躺过。代码#include <iostream>#include <map>#include <string>using namespace std;string balloon;map<string, int>::iterator it;int main(int argc, const char * argv[]){ int原创 2016-10-11 01:51:17 · 374 阅读 · 0 评论 -
51Nod-1484-猜数游戏
ACM模版描述 题解算法思路很容易想,就是区间交和区间并问题,然而我却坑死在了迭代器的陷阱上!!!这里出现的问题主要是迭代器的陷阱——迭代器失效。如果用迭代器删除指定位置的元素,那么该操作返回的是一个迭代器,并且此迭代器指向删除元素的下一个元素;如果是删除某范围内的元素时,返回值也是一个迭代器,指向最后一个被删除元素的下一个元素。代码#include <iostream>#include <al原创 2016-09-27 21:01:14 · 734 阅读 · 0 评论 -
51Nod-1478-括号序列的最长合法子段
ACM模版描述题解一拿到题,就想到了一个十分低级的做法,先正着遍历一遍,遍历过程中再倒着遍历(One),不负众望,TLE了四组数据。无奈,想了一下,只好使用栈来实现了,先预处理一遍,将括号匹配在一起,然后检索最长串即可(Two)。代码One:// TLE//#include <stdio.h>//#include <string.h>////const int MAXN = 1e6 + 5原创 2016-09-26 18:11:51 · 750 阅读 · 0 评论 -
ACM/ICPC竞赛之STL--set
ACM模版set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便的。setset模版类的定义在头文件<set>中。定义set对象的示例代码如下:set<int> s;set<double> ss;set的基本操作:s.begin() // 返回指向第一个元素的迭代器s.clear() // 清除所有元素s.count()原创 2016-09-25 00:52:38 · 3079 阅读 · 0 评论 -
51Nod-1460-连接小岛
ACM模版描述题解一道经典的贪心问题,只要将岛屿的数据转化为桥长度范围的数据,接着贪心查找即可,这里使用二分查找,用multiset数据结构优化。一开始,大意了,忘了一个条件,以为任意两岛之间都可以架桥,结果想差气了,想到图论了~~~粗心大意害死人啊!!!代码#include <iostream>#include <algorithm>#include <set>#include <cstdi原创 2016-09-23 21:04:10 · 741 阅读 · 0 评论