STL
Apollo-yyy
考研失败的华子5G工程师一枚
展开
-
喊山
L3-008. 喊山时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生...原创 2018-03-25 15:33:50 · 530 阅读 · 0 评论 -
1107 Social Clusters
题目大意:n个人,每个人都有k个兴趣,后面是兴趣种类的编号。有相同兴趣的两个人放到一个组里,两两组之间的人没有任何相同的兴趣,要求输出兴趣组数并按照非递增顺序输出兴趣小组的人数。解题思路:并查集的模板题,通过判断两个兴趣集合是否有交集判断这两个人是否属于同一组,开一个数组记录每棵树下的节点数量,在合并子节点时修改对应树的节点数量。代码如下:#include<iostream&gt...原创 2019-02-14 22:07:22 · 345 阅读 · 0 评论 -
1063 Set Similarity
题目大意:计算两个集合的相似度,相似度定义为(两集合交集元素数量)/(两集合并集元素数量)。解题思路:就是STL set函数的运用,如果采用循环得到并集最后一个样例会超时。这里要用到set_union()函数,得到的结果保存在数组中而不是集合。至于交集元素的数量可以通过集合合并前后元素数量相减得到。代码如下:#include<iostream>#include<cs...原创 2019-01-29 17:51:24 · 246 阅读 · 0 评论 -
1097 Deduplication on a Linked List
题目大意:给你一个链表。只保留第一个出现的且节点键值的绝对值不重复的节点(比如15——(-15)只保留15,-15删除),被删除的节点依次构建一个新链表。最后输出删除后得到的链表和被删除节点组成的新链表。解题思路:想了一种投机取巧的方法,就是用动态数组保存节点,被删除的节点放在一个新的数组中,这样无需构建链表和操作指针,非常容易理解。代码如下:#include<iostream&...原创 2019-02-09 17:17:30 · 295 阅读 · 1 评论 -
1054 The Dominant Color
题目大意:找出现次数超过总数一半的那个数。解题思路:方法很多,我这里直接用MAP标记模拟了。代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#include<cmath>#include<cstring>#incl...原创 2019-01-30 15:21:54 · 289 阅读 · 0 评论 -
1100 Mars Numbers
题目大意:如果给的是地球数字就要翻译成火星数字,否则翻译成地球数字,火星数字是13进制数。解题思路:由于给定数字范围为0-169,不包括169,也就是13*13-1( jou dec),所以对于火星翻译成地球可以直接截取字符串长度来截取对应的字符串然后翻译。需要注意的是13的倍数是一种特殊情况,只占一位数而没有后面的0(tret)。代码如下:#include<iostream&g...原创 2019-01-30 15:32:15 · 201 阅读 · 0 评论 -
1071 Speech Patterns
题目大意:找出一段文本中出现次数最多的单词和出现次数,如果有次数相同的则输出字典序最小的。所谓单词是指字母或者字母和数字的组合。字母不区分大小写。解题思路:map标记单词模拟即可。代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#includ...原创 2019-01-30 16:25:30 · 199 阅读 · 2 评论 -
1137 Final Grading
题目大意:每个学生有四个成绩,线上成绩,期中,期末,总分。现在分别给出这四门成绩下对应的学生分数情况。要求按照总分从大到小(分数相同则按照ID字典序升序)输出总分及格(>=60分)的学生成绩情况。线上成绩必须不小于200分。解题思路:用MAP给每名学生分配唯一的编号方便用结构体保存信息并排序,输入时对于线上成绩小于200的学生不保存。代码如下:#include<iostre...原创 2019-02-22 10:11:24 · 356 阅读 · 0 评论 -
1068 Find More Coins
题目大意:EVa有一些面值的硬币,现在要求支付具体数额的硬币,要求输出需要支付的硬币序列,如果存在多个解就输出字典序最小的,这里的字典序就按照字符串比较时的字典序就可以。解题思路:01背包问题。这里将朴素的背包中的重量和价值合并处理。难点在于记录路径和字典序问题,可以开一个和DP数组维度相同含义的二维数组来记录选择的硬币,由于存在多个解并且要求输出字典序最小,首先将输入的数组从大到小排序,...原创 2019-02-11 10:33:21 · 310 阅读 · 0 评论 -
1053 Path of Equal Weight
题目大意:给一棵结点数为n,非叶结点数为m的树,然后给一个权值s。接下来给出n个结点的权值(顺序就是结点ID编号),依次给出m个父节点的子节点编号,要求按照从大到小的顺序(按字典序理解)输出路径权值和为s的路径结点。解题思路:这个题用DFS或者记忆化DP都可以写,这里给出DFS的方法,用一个vectot保存路径,关于输出字典序有个小技巧,就是在给父节点输入子节点的时候,可以按照权值大小排序...原创 2019-02-13 10:56:04 · 157 阅读 · 0 评论 -
1127 ZigZagging on a Tree
题目大意:给定二叉树的中序和后序遍历,输出“层次”遍历,这个层次遍历从根节点的子节点开始,先从左到右输出,然后从右到左输出。。。循环往复。解题思路:这个题我写的复杂了一点,关于输出哪里我用了两个双端队列模拟了输出的扩展情况,即从左到右和从右到左,所以代码较难理解。维护一个度参数根据奇偶度判断是从右到左还是从左到右输出会方便很多。代码如下:#include<iostream>...原创 2019-02-24 11:28:36 · 250 阅读 · 0 评论 -
1144 The Missing Number
题目大意;给n个数字,找到不在这个数字列表里面的最小的正整数.解题思路:这题做法很多,我这里为了熟悉一下STl用了SET去重加vector排序,也可以直接用数组标记然后遍历就可以。代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#includ...原创 2019-02-20 10:38:38 · 209 阅读 · 0 评论 -
1112 Stucked Keyboard
题目大意:键盘上有的键有问题,按一下在屏幕上连续显示k个,现在给你一个文本串,按照查找顺序输出有问题的按键,并且还原原始文本串。解题思路:遍历,将没有连续出现k次或是k的整数倍次的字符标记,没被标记的就是有问题的。然后再扫一遍将有问题的键存入数组,输出的时候到达有问题的键就跳过k个继续输出即可。代码如下:#include<iostream>#include<set&...原创 2019-02-25 22:26:05 · 217 阅读 · 0 评论 -
1120 Friend Numbers
题目大意:求出每一个数的各个位数相加和,去重后从小到大输出。解题思路:模拟+set代码如下:#include<iostream>#include<cstdio>#include<map>#include<set>#include<algorithm>using namespace std;map<int,in...原创 2019-02-26 11:00:08 · 181 阅读 · 0 评论 -
1121 Damn Single
题目大意:给出n对情侣编号,然后给m个参加聚会的人的编号,输出单身狗的编号(有CP但是CP不在聚会上也算)。解题思路:STL模拟,需要注意一下编号为0的情况,因为用map标记初始化的时候都是0。代码如下:#include<iostream>#include<cstdio>#include<set>#include<vector>#...原创 2019-02-26 11:05:51 · 248 阅读 · 0 评论 -
1039 Course List for Student
题目大意:N名学生和K门课程,分别给出每门课程下选课学生的名字,查询每名学生选了多少门课程以及课程的编号,课程的编号要按照升序输出。解题思路:这个题难点在于如何用唯一的数字标记学生的名字。也就是设计哈希函数。如果用MAP来分配学生名字的标号的话最后一个样例过不去,不是段错误就是什么运行错误。。。由于每名学生的名字由3个大写字母和1个数字组成,可以设计一个简单的哈希函数,如果是字母的话按照2...原创 2019-01-29 10:18:35 · 379 阅读 · 0 评论 -
1047 Student List for Course
题目大意:与1039的要求正相反,给你每名学生的选课情况,要求分别输出每门课程选课人数以及选课学生的名字,名字要按照字典序排序。解题思路:比1039容易多了,由于每个人的名字唯一且顺序输入,分别用1-N标记即可。值得注意的是由于输入输出量大,只能用SCANF输入,那么就只能用二维字符数组保存学生的名字,则第一个维度的下标唯一指向一个学生。代码如下:#include<iostrea...原创 2019-01-29 10:42:07 · 189 阅读 · 0 评论 -
1022 Digital Library
题目大意:给出N本书的信息,包括ID,书名,作者,关键词,出版社,出版年份,接下来进行M次查询,查询也对应分为5种(没有ID)。 要求升序输出每次查询结果的ID,如果不存在输出"Not Found"。解题思路:对应书的五种信息分别构造5个MAP来保存当前信息下对应的书ID,由于同一个信息下可能有好几本书(比如一个作者名下有好几本书),所以VALUE取一个集合SET来保存,输入过程中插入到对...原创 2019-01-31 15:55:48 · 165 阅读 · 0 评论 -
轨道调度
L2-014. 列车调度时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8...原创 2018-03-26 17:17:49 · 519 阅读 · 0 评论 -
Codeforces Round #486 (Div. 3)
Codeforces Round #486 (Div. 3) (2018/06/01)菜鸡第一次打CF,晚上10点和主席跑到综合楼一起肝。一个小时写了前两个签到题然后摸鱼半小时后跑路去吃鸡了。。。凌晨2点多单排五杀第二,一晚上除了没吃到鸡手感还不错。今天学了下map又参考了董先森的代码后把C题过了,先上个博客把前三个题放上去。A. Diverse Teamtime limit per ...原创 2018-06-03 16:40:54 · 264 阅读 · 0 评论 -
STL-MAP
转载一篇不错的MAP简介文点击这里转载 2018-07-22 21:18:10 · 127 阅读 · 0 评论 -
Money Transfers
There are n banks in the city where Vasya lives, they are located in a circle, such that any two banks are neighbouring if their indices differ by no more than 1. Also, bank 1 and bank n are neighbour...原创 2018-07-22 23:15:06 · 374 阅读 · 0 评论 -
POKER(扑克)
解题思路:这个题做法很多,我直接按照题意模拟了一下,复杂度O(n),记录一下右边界,每次得到算术平方根后与上一个结果进行比较,相同则放到数组右边界,否则更新上一个结果。 代码如下:#include<iostream>#include<cstdio>#include<fstream>#include<set>#include&...原创 2018-08-14 19:58:25 · 742 阅读 · 0 评论 -
codeforces 490 div3 D. Equalize the Remainders
题目大意:给你n个数和一个m,要求余数为0-m-1的数的数量正好是n/m,m保证是n的因子,每个数只能执行加的操作,最后输出操作的次数以及修改后的数组结果。解题思路:主题思想是贪心,就是让那些余数值超过n/m的数向离他最近且余数值没有满足条件的数“移动”。这里的“移动”有个巧妙的处理,就是利用STL集合中的set.lower_bound()函数,集合中保存那些未满足条件的余数值,l...原创 2018-08-15 16:57:17 · 185 阅读 · 0 评论 -
codeforces 490 div3 C.Alphabetic Removals
题目大意:长度为n的字符串,按照小写字母顺序表删除k个字母(删完a才能接着删b….)解题思路:模拟即可,我用STL 队列写了一发,熟悉一些队列操作。#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;fstream&gt;#include&lt;set&gt;原创 2018-08-13 20:48:29 · 133 阅读 · 0 评论 -
codeforces 481 div3 F. Mentors
题目大意:n个人,每个人对应一个能力值,接下来有m对互相不能“在一起”的人的编号。能力高的可以做能力低的人的老师,要求输出每个人最多有多少徒弟。解题思路:首先维护一个记录每个人可以拥有多少徒弟的数组,初始值为0。在输入不能在一起的人的时候,如果前者能力高于后者,那么前者徒弟就要-1,否则如果小于后者,那么后者徒弟数量-1。最后排序二分查找一次每个人第一次出现的位置即可(这里也可以用...原创 2018-08-16 14:31:35 · 158 阅读 · 0 评论 -
lower_bound函数的使用
转一篇介绍lower_bound()函数的好文章,封装了二分用起来是真的方便 lower_bound()转载 2018-08-16 14:36:32 · 389 阅读 · 0 评论 -
Language of FatMouse
We all know that FatMouse doesn’t speak English. But now he has to be prepared since our nation will join WTO soon. Thanks to Turing we have computers to help him.Input SpecificationInput consis...原创 2018-08-16 19:14:08 · 478 阅读 · 0 评论 -
codeforces round49 div2 C. Minimum Value Rectangle
题目大意:t个测试样例,每个样例n个数,找四个数组成的矩形使周长的平方对面积的商结果最小,输出这四个数(就是长和宽)。解题思路:推这个关系可以发现如果长宽相同那么结果就是最小的,否则的话两个数差值越小并且本身越大结果就越小。#include<iostream>#include<cstdio>#include<fstream>#inc...原创 2018-08-20 16:21:58 · 142 阅读 · 0 评论 -
1015 Reversible Primes
题目大意:输入n,判断n和n转换为d进制并翻转后再还原为十进制后的数字是否都为素数,输入结束的标志为n是负数。解题思路:首先构造了一个十万的素数表,为了方便查找我用SET存了一下,当然用数组二分查也很方便,然后就是按照朴素的进制转换思路写就可以了,另外发现PTA编译器居然不认ATOi函数,真是标准C++啊。。。代码如下:#include<iostream>#include...原创 2018-10-22 21:04:02 · 313 阅读 · 0 评论 -
1012 The Best Rank
题目大意:n个学生m此查询,要求输出这名学生排名最好的成绩的排名,如果存在相同的排名,根据优先级A>C>M>E输出。如果没有这名学生就输出N/A。解题思路:为了方便查询ID我用map+结构体保存数据,难点在于每名学生的最高的成绩的排名,一种做法是在排序过程中搞事,我这里直接使用STL里的upper_bound()函数返回第一个比所要查找的分数大的分数的下标,完美解决了排名...原创 2018-10-20 13:58:23 · 119 阅读 · 0 评论 -
1067 Sort with Swap(0, i)
题目大意:只能用0和别的数字交换位置这样的方式进行排序,输出交换次数。解题思路:思路很简单,就是每次对0和0所在位置的下标元素进行交换,比如0在5号位,那么就交换0和5,这时候5已经归位,0在5原来的位置上。如果0就在0位置上,那么让0随便交换一个没有归位的元素即可。想不出数组怎么写。。。于是偷懒用了STL中的SET,用于保存没有归位的元素,方便进行添加和删除的操作。代码如下:#inc...原创 2018-11-29 21:10:48 · 222 阅读 · 0 评论 -
1122 Hamiltonian Cycle
题目大意:给一个无向图,然后查询k个环,问是不是哈密尔顿环(一个环遍历图上所有点有始有终且不重复访问)。解题思路:用set判断是否有重复访问的节点(起点终点例外),记录起点和终点比较判断能否走出一个环,用vector记录上一个节点判断当前节点是否可以访问到(存不存在路径)。代码如下:#include<iostream>#include<map>#includ...原创 2019-02-26 11:13:33 · 412 阅读 · 0 评论