c++ 学习first day

STL map string

http://t.csdnimg.cn/H8dhK

http://t.csdnimg.cn/KQBbU

1.寄包柜

超市里有 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5)n(1≤n≤10 5 ) 个寄包柜。每个寄包柜格子数量不一,第 i ii 个寄包柜有 a i ( 1 ≤ a i ≤ 1 0 5 ) a_i(1\le a_i\le10^5)a i (1≤a i ≤10 5) 个格子,不过我们并不知道各个 a i a_ia i的值。对于每个寄包柜,格子编号从 1 开始,一直到 a i a_ia i。现在有 q ( 1 ≤ q ≤ 1 0 5 ) q(1 \le q\le10^5)q(1≤q≤10 5) 次操作:

1 i j k:在第 i ii 个柜子的第 j jj 个格子存入物品 k ( 0 ≤ k ≤ 1 0 9 ) k(0\le k\le 10^9)k(0≤k≤10 
9 )。当 k = 0 k=0k=0 时说明清空该格子。
2 i j:查询第 i ii 个柜子的第 j jj 个格子中的物品是什么,保证查询的柜子有存过东西。
已知超市里共计不会超过 1 0 7 10^710 7 个寄包格子,a i a_ia i是确定然而未知的,但是保证一定不小于该柜子存物品请求的格子编号的最大值。当然也有可能某些寄包柜中一个格子都没有。

输入格式
第一行 2 个整数 n nn 和 q qq,寄包柜个数和询问次数。

接下来 q qq 个整数,表示一次操作。

输出格式
对于查询操作时,输出答案,以换行隔开。

样例输入 #1
5 4
1 3 10000 118014
1 1 1 1
2 3 10000
2 1 1
1
2
3
4
5
样例输出 #1
118014
1

 STL map

learn 红黑树 AVL树

http://t.csdnimg.cn/VRZMN

map 是具有唯一键值对的容器,通常使用红黑树实现。

map 中的键值对是 key value 的形式,比如:每个身份证号对应一个人名(反过来不成立哦!),其中,身份证号就是 key,人名便是 value,是单项的关系,可以与 hash 作类比。

//使用 map 需要引入头文件,如下所示:
#include <map>
//定义形式如下所示:
map<key_type, value_type>变量名
//注意:如果没有 using namespace std, map需要写成 std:map
//常用
size()     // 计算元素个数
empty()    // 判断是否为空,空返回 true
clear()    // 清空容器
erase()    // 删除元素
find()     // 查找元素
insert()   // 插入元素
count()    // 计算指定元素出现的次数
begin()    // 返回迭代器头部
end()      // 返回迭代器尾部//非常用
swap()        // 交换两个map容器,类型需要相同
max_size()    // 容纳的最大元素个数
rbegin()      // 指向map尾部的逆向迭代器
rend()        // 指向map头部的逆向迭代器
lower_bound() // 返回键值大于等于指定元素的第一个位置
upper_bound() // 返回键值大于指定元素的第一个位置
equal_range() // 返回等于指定元素的区间

 忘了换行符了。

#include<cstdio>
#include<map>
using namespace std;
map<long long,long long>a[100001];
int main()
{int n,m,x;scanf("%d %d",&n,&m);long long i,j,k;while(m--){scanf("%d",&x);if(x==1){scanf("%lld %lld %lld",&i,&j,&k);a[i][j]=k;}else if(x==2){scanf("%lld %lld",&i,&j);printf("%lld\n",a[i][j]);}}return 0;
}

2.不重复数字

/*给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。
Input
本题有多组数据。
第一行一个整数 
T,表示数据组数。对于每组数据:
第一行一个整数 
n。

第二行 
n 个数,表示给定的数。
Output
对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。

Sample 1

InputcopyOutputcopy
2
11
1 2 18 3 3 19 2 3 6 5 4
6
1 2 3 4 5 6
1 2 18 3 19 6 5 4
1 2 3 4 5 6

*/

C++中的set是一个集合容器,它存储唯一且已排序的元素。具体来说,set容器内部的元素总是按照一定的规则排好序的,而且这些元素必须是唯一的,即不允许存储重复的元素

//头文件
#include<set>
//初始化定义
set<int> s;

在c++中,如果a前面啥也没有,默认访问局部变量;

前面加上::,访问全局变量;

s.count函数        判断集合中是否有该元素,有的话返回true

/*给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。
Input
本题有多组数据。
第一行一个整数 
T,表示数据组数。对于每组数据:
第一行一个整数 
n。第二行 
n 个数,表示给定的数。
Output
对于每组数据,输出一行,为去重后剩下的数,两个数之间用一个空格隔开。*/
#include<cstdio>
#include<set>
using namespace std;
set<int>s;//构造一个容器 set,存储唯一的且已经排序的元素 
int main()
{int t,n,r,i,k;scanf("%d",&t);//组数 for(k=1;k<=t;k++){scanf("%d",&n);//每组内元素个数 s.clear();//清空容器 scanf("%d",&r);//第一个元素 printf("%d",r);s.insert(r);//第一个元素插入到set for(i=2;i<=n;i++){scanf("%d",&r);//剩余元素 if(s.count(r)==0)//有该元素,s.count返回1 {printf(" %d",r);//没有的话,输出 s.insert(r);}	}printf("\n");}return 0;
} 

 3.文字处理软件

你需要开发一款文字处理软件。最开始时输入一个字符串作为初始文档。可以认为文档开头是第 00 个字符。需要支持以下操作:

  • 1 str:后接插入,在文档后面插入字符串 strstr,并输出文档的字符串;
  • 2 a b:截取文档部分,只保留文档中从第 𝑎a 个字符起 𝑏b 个字符,并输出文档的字符串;
  • 3 a str:插入片段,在文档中第 𝑎a 个字符前面插入字符串 strstr,并输出文档的字符串;
  • 4 str:查找子串,查找字符串 strstr 在文档中最先的位置并输出;如果找不到输出 −1−1。

为了简化问题,规定初始的文档和每次操作中的 strstr 都不含有空格或换行。最多会有 𝑞q 次操作。

Input

第一行输入一个正整数 𝑞q,表示操作次数。

第二行输入一个字符串 strstr,表示最开始的字符串。

第三行开始,往下 𝑞q 行,每行表示一个操作,操作如题目描述所示。

Output

一共输出 𝑞q 行。

对于每个操作 1,2,31,2,3,根据操作的要求输出一个字符串。

对于操作 44,根据操作的要求输出一个整数。

Sample 1

InputcopyOutputcopy
4
ILove
1 Luogu
2 5 5
3 3 guGugu
4 gu
ILoveLuogu
Luogu
LuoguGugugu
3

Hint

数据保证,1≤𝑞≤1001≤q≤100,开始的字符串长度 ≤100≤100。

 学习:http://t.csdnimg.cn/HlzVt

在第二个那里卡了好久,还不是很理解


#include<stdio.h>
#include<string.h>
char search(char *s,char *t);
char temp[1000];
int main()
{char a[1110];char b[111];int n,m,i,l,r,k;scanf("%d",&n);scanf("%s",a);for(i=0;i<n;i++){scanf("%d",&m);if(m==1){//后接插入 scanf("%s",b);strcat(a,b);printf("%s\n",a);}else if(m==2){//截取部分文档scanf("%d %d",&l,&r);a[l+r]='\0';strcpy(temp, &a[l]);strcpy(a, temp);printf("%s\n",a);/*int y=strlen(a);l=l%y; r=r%y;for(int x=l;x<l+r;x++){printf("%c",a[x]);}a[l+r]='\0';printf("\n");*/}else if(m==3){//前面插入 scanf("%d%s",&k,temp);strcat(temp,&a[k]);//temp和a的后半部分连接 a[k]='\0';//截取前面 strcat(a,temp);//连接前半部分和后面 printf("%s\n",a);}else if(m==4){//查找子串scanf("%s",temp);int x;x=search(a,temp);printf("%d\n",x);} }return 0;
}char search( char *s, char *t )
{int i=0,j=0,k;for(i=0;s[i]!='\0';i++){k=i;j=0;//每次比较都从t所指的第一个开始比较while(s[k]==t[j]&&s[k]!='\0'&&t[j]!='\0')//判断时要考虑两个是否为\0,如果有一个是则跳出{k++;j++;}if(j!=0&&t[j]=='\0')break;}if(s[i]!='\0'){     return i;}else  return -1;
}

4.ICPC Ballons

在ICPC比赛中,气球的分配如下:

每当一个团队解决了一个问题,这个团队就会得到一个气球。
第一个解决问题的队伍将获得一个额外的气球。
一场比赛有26道题,标为ABC,……, Z
你会得到比赛中已解决问题的顺序,用字符串s表示,我在哪里?
-该字符表示问题为si
已经被某个团队解决了。没有团队会两次解决同一个问题。
确定每队收到的气球总数。请注意,有些问题可能没有一个团队可以解决。

输入
输入的第一行包含一个整数t
(1≤t≤100
)——测试用例的数量。

每个测试用例的第一行包含一个整数n
(1≤n≤50
) -字符串的长度。

每个测试用例的第二行包含一个字符串s
长度为n的
由大写英文字母组成,表示已解决问题的顺序。

输出
对于每个测试用例,输出单个整数—团队接收到的气球总数。

例子
inputcopy outputcopy
6
3
阿坝
1
一个
3
五体投地
5
BAAAA
4
BKPT
10
CODEFORCES
5
2
6
7
8
17
请注意
在第一个测试用例中,5
发放气球:

问题
是解决。那个队得到2分
气球:一个是因为他们解决了问题,另一个是因为他们是第一个解决问题A的团队

问题B
是解决。那个队得到2分
气球:一个是因为他们解决了问题,另一个是因为他们是第一个解决问题B的团队

问题
是解决。那个队只得到1分
气球,因为他们解决了这个问题。注意,他们没有得到额外的气球,因为他们不是第一个解决问题A的团队

发出的气球总数是2+2+1=5

在第二个测试用例中,只解决了一个问题。解决问题的队伍得到2分
气球:一个是因为他们解决了问题,另一个是因为他们是第一个解决问题A的团队

网易翻译的,沉默

参考:http://t.csdnimg.cn/k90N3

解题说明:用数组统计每个字母出现的个数,直接遍历,当字母第一次出现时加2,否则只加1。

#include<stdio.h>
int main()
{int n;scanf("%d",&n);//总的组数 while(n--){int count=0;//计数器,每次清零 int m,i;char ch[1000];char str[128]={0};scanf("%d",&m);//第一组长度 scanf("%s",ch);//第一组字符 for(i=0;i<m;i++){if(str[ch[i]]==0){count=count+2;str[ch[i]]++;}else{str[ch[i]]++;count++;}}printf("%d\n",count);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS系统Maven安装教程

CentOS系统Maven安装教程 一、准备工作二、下载并安装Maven三、常见问题及解决方法四、实际应用案例 Maven是一个流行的项目管理工具&#xff0c;它可以帮助开发者管理项目的构建、报告和文档的软件项目管理工具。在CentOS系统中安装Maven是一个相对简单的过程&#xff0c;只需…

建投数据入选“2024年中国最佳信创企业管理软件厂商”

近日&#xff0c;建投数据凭借国产化自主知识产权、完备的信创资质及信创软硬件环境全栈适配能力&#xff0c;入选第一新声联合天眼查发布的“2024年中国最佳信创厂商系列榜单”细分行业榜之“最佳信创企业管理软件厂商”。 本次最佳信创厂商系列榜单评选&#xff0c;包括综合榜…

css样式学习样例之边框

成品效果 边框固定 .login_box{width: 450px;height: 300px;background-color: aliceblue;border-radius: 3px;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%); }这段CSS代码定义了一个名为.login_box的类的样式&#xff0c;它主要用于创建一个登录框…

【vue3】iframe的使用,实现跨域交互,互访内容和方法

一、查询参数 (Query Params): 通过url传参 <iframe id"iframe" :src"iframeUrl" frameborder"0" width"100%" height"100%"></iframe>const type this is parent const iframeUrl ref(https://test.com?typ…

人工智能在病理组学虚拟染色中的应用|文献精析·24-07-07

小罗碎碎念 本期文献精析&#xff0c;分享的是一篇关于深度学习在虚拟染色技术中应用于组织学研究的综述。 角色姓名单位&#xff08;中文&#xff09;第一作者Leena Latonen东芬兰大学&#xff08;QS-552&#xff09;生物医学研究所通讯作者Pekka Ruusuvuori图尔库大学&#…

Java日期时间操作工具类:DateTimeUtil

在Java开发中&#xff0c;处理日期和时间是一个常见的需求&#xff0c;无论是数据库查询、日志记录还是业务逻辑处理&#xff0c;都离不开对日期时间的精确操作。Java自JDK 8起引入了新的日期时间API&#xff0c;如java.time包下的LocalDate, LocalTime, LocalDateTime, ZonedD…

# Sharding-JDBC 从入门到精通(10)- 综合案例(三)查询商品与测试及统计商品和总结

Sharding-JDBC 从入门到精通&#xff08;10&#xff09;- 综合案例&#xff08;三&#xff09;查询商品与测试及统计商品和总结 一、Sharding-JDBC 综合案例-查询商品-dao 1、查询商品&#xff1a;Dao 实现&#xff1a;在 ProductDao 中定义商品查询方法&#xff1a; //查询商…

基于8255的交通灯设计

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

信号与系统笔记分享

文章目录 一、导论信号分类周期问题能量信号和功率信号系统的线性判断时变&#xff0c;时不变系统因果系统判断记忆性系统判断稳定性系统判断 二、信号时域分析阶跃函数冲激函数取样性质四种特性1 筛选特性2 抽样特性3 展缩特性4 卷积特性卷积作用 冲激偶函数奇函数性质公式推导…

异常解决(三)-- Wandb fails with ServiceStartProcessError

原文链接&#xff1a;https://github.com/wandb/wandb/issues/5765 我的环境配置&#xff1a; Python3.8.16 Wandb0.17.4 在使用Wandb记录实验数据时&#xff0c; 报以下错误&#xff1a; ServiceStartProcessError: The wandb service process exited with 1. Ensure that s…

Spring Boot基础篇

快速上手 SpringBoot是由Pivotal团队提高的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始化搭建以及开发过程 入门案例 在Idea创建 创建时要选择Spring Initializr。 Server URL为要连接的网站&#xff0c;默认为官网start.spring.io&#xff08;访问速度慢&…

数字化精益生产系统--IFS财务管理系统

IFS财务管理系统是一款功能丰富、高效且灵活的企业财务管理软件&#xff0c;广泛应用于多个行业和不同规模的企业中。以下是对IFS财务管理系统的功能设计&#xff1a;

SpringBoot测试类注入Bean失败的原因

针对SpringBoot的测试类&#xff0c;2.2版本之前和之后是不一样的。 2.2版本之后 导包pom.xml 添加test依赖 <!-- starter-test&#xff1a;junit spring-test mockito --> <dependency><groupId>org.springframework.boot</groupId><artifac…

【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文&#xff1a;2406.06911 (arxiv.org) 代码&#xff1a;czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com) 简介&#xff1a;异步去噪并行化扩散模型。提出了一种新的扩散模…

文本编辑(EditPlus)快捷键

EditPlus的快捷键其实也是其他文本编辑器的快捷键&#xff0c;这些快捷键是通用的&#xff1b; CTRLZ: 撤回&#xff1b; CTRLY&#xff1a;撤回撤回&#xff1b; CTRLA&#xff1a;全选 Home: 回到行首&#xff0c;在此基础上&#xff0c;Shiftend: 选中该行&#xff1b;…

【Java】垃圾回收学习笔记(一):判定对象的存活或死亡?Root Search 根可达算法

文章目录 1. 引用计数法优点缺点 2. 可达性分析 Root Search2.1 那些对象是GC Roots2.2 引用的分类 3. 回收方法区Reference 最近上班地铁上偶尔看看书&#xff0c;周末有空理一下&#xff0c;做个笔记。 下面说说GC过程中如何判断对象是否存活。 1. 引用计数法 用于微软COM&a…

文心一言 VS 讯飞星火 VS chatgpt (297)-- 算法导论22.1 1题

一、给定有向图的邻接链表&#xff0c;需要多长时间才能计算出每个结点的出度(发出的边的条数)&#xff1f;多长时间才能计算出每个结点的入度(进入的边的条数)&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 计算出度 对于有向图的邻接链表表示&a…

redolog的刷盘策略

mysql通过innodb_flush_log_at_trx_commit配置来控制redo log的写盘时机。 0&#xff1a;延迟写。提交事务时不会将redo log写入os buffer&#xff0c;而是每隔1秒将redo log写入os buffer并调用fsync()刷入磁盘。系统崩溃会丢失一秒钟的数据。 1&#xff1a;实时写&#xff0c…

基于OpenCv的快速图片颜色交换,轻松实现图片背景更换

图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…

MySQL高级----详细介绍MySQL中的锁

概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff0c;为了解决数据访问的一致性和有效性问题。在数据库中&#xff0c;除传统的计算资源(CPU、RAN、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、…