西安电子大学计算机考研复试机试(2019)+ 学长讲解(5)+STL

西电是单点测试。

STL标准库

 vector又名动态数组,可以理解为自动增大长度的一个数组,现在请你用vector来解决问题:


你现在是一个论坛的站长,你们论坛有10万个帖子,每个帖子编号为1-100000

每个帖子里面
又有若干个回复.现在告诉你每个帖子下面的回复人的ID(ID的范围为1-100000)

现在你要写
一个程序,支持插入操作,即ADD x y 代表编号为x的帖子有一个ID为y的人回复

支持查询操作
,即QUERY x y 代表查询编号为x的帖子第y个回复的人的ID

输入

:
只有一组测试数据


第1行一个整数N,代表有N次询问(1<=N<=100000)


第2行到第N+1行代表N次询问的内容,
每行为以下2种格式之一:

         
            ADD x y 新增加了一个回复,代表编号为x的帖子有一个ID为y的人回复

         
            QUERY x y 代表查询编号为x的帖子第y个回复的人的ID


保证1<=x<=100000,1<=y<=100000

输出:
对于每个QUERY的查询,每次输出占一行,代表编号为x的帖子第y个回复的人的ID,如果编
号为x的帖子总的回复数小于y,
则输出-1

样例输入:
8
ADD 10 10086
ADD 10 10010
QUERY 10 1
QUERY 88888 1
ADD 88888 10010
ADD 88888 12580
QUERY 88888 2
QUERY 88888 3

样例输出:
10086 
-1 
12580 
-1

#include
#include 
using namespace std;
vector a[100010]; // 此处定义一个vector数组

int main(){
	int n,x,y;
	char type[6];
	while(cin>>n){
		for(int i=0;i>type>>x>>y;
			if(type[0]=='A'){
				a[x].push_back(y);
			}
			if(type[0]=='Q'){
				if(a[x].size()

When you want to work with a fixed number of std::vector elements, you can use vector V[].

When you want to work with a dynamic array of std::vector, you can use vector< vector > V.

https://stackoverflow.com/questions/28712364/difference-between-vector-int-v-and-vector-vectorint-v

map是一个映射。例如,
    map a;可以将字符串映射为整数
    mapa;可以将双精度浮点数映射为整数

那么现在请你用map解决问题:
    SW是课代表,老师判好卷子之后让他录成绩,他念了n个人的学号(学号是一个绝对值
10^9以内的整数包括0,没有负数)但是老师总觉得他念重复了。还好老师用声控软件
记录下了他念的每一个学号,现在请你写程序来判断SW有没有念过某个或者某些学号
2次以上。如果有请你输出 1;否则输出 0。

输入:
    只有1组测试数据,一个正整数n(1<=n<100000)代表SW念了学号的个数
    之后第2行到第n+1行,每行一个10^9以内的整数(包括0没有负数),代表某个同学的学号

输出:
    输出一个整数,如果有重复的学号输出1;否则输出0

样例输入:
4
11222222
0
1
11222222

样例输出
1
#include 
#include 
#include 
using namespace std;
// mpa排序,去重 
int main(){
	int n;
	string str="";
	while(cin>>n){
		map mp;	
		for(int i=0;i>str;
			mp[str] = i; // map添加元素
		}
		if(mp.size()

注:map.size()记录的是key的数量,也就是第一个类型的数量。

你可能感兴趣的:(西安电子大学计算机考研复试机试(2019)+ 学长讲解(5)+STL)