洛谷:集合与差分

 1.学籍管理(map)

#include<iostream>
#include<map>
#include<string>
using namespace std;
map<string,int>a;
int n;
string name;
int op,score;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>op;if(op!=4)cin>>name;switch(op){case 1:cin>>score;a[name]=score;cout<<"OK"<<endl;break;case 2:if(a.count(name))cout<<a[name]<<endl;//count函数查看该学号在map中是否存在else cout<<"Not found"<<endl;break;case 3:if(a.count(name)){a.erase(name);//删除该学号cout<<"Deleted successfully"<<endl;}else cout<<"Not found"<<endl;break;case 4:cout<<a.size()<<endl;//求出map的元素数量,也就是系统中的学生数量break;}}return 0;
}

      这道题要让我们存储学籍信息,一个学号对应一个成绩,很容易想到要用map来存储数据,之后根据题目要求一步步模拟就行了。(要用到count函数,erase函数,size函数)

2.保龄球(map)

#include<iostream>
#include<map>
using namespace std;
map<int,int>m;
int n,a,q,c;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a;m[a]=i;//把数据当下标存,直接输出,牛逼!}cin>>q;while(q--){cin>>c;cout<<m[c]<<endl;}return 0;
}

      这道题让我们存储每个位置有几个球便于之后的查询,一个位置对应一个保龄球的数量,也是要用map来做,牛逼的是我们可以把保龄球的数量当作关键字来存储,对应的位置作为值,这样访问的时候,可以直接保龄球的数量来找到对应的位置,牛逼!

3.Cities and States S(map)

#include<iostream>
#include<map>
using namespace std;
int n,ans;          
string a,b,c;          
map<string,int>m; 
int main()
{cin>>n;   while(n--)  {cin>>a>>b;        a=a.substr(0,2);//substr函数分割字符if(a!=b)//要进行特判          ans+=m[a+b];   m[b+a]++; }cout<<ans<<endl;return 0;
}

     这道题也是要根据城市来找对应洲,两个数据,也可以用map,string是城市和洲的名称的合写,int来判断是否出现过。很显然我们只需要城市的前两个字符就可以,我们使用substr函数来分割字符,如果城市的名称和洲的名称不一样,再执行之后的操作,如果m[a+b]是0,说明之前没有出现,ans+=0;是1代表之前出现过,那就构成了一对,ans+=1;因为是反着来的,所以之后我们要对m[b+a]++。

4.语文成绩(一维差分)

#include<iostream>
using namespace std;
int n,p,a,x,y,z;
int ming=1e9;
int grade[5000001];//差分易于在O(1)内维护区间内所有的数加减乘除一个值
int d[5000001];
int main()
{cin>>n>>p;for(int i=1;i<=n;i++){cin>>grade[i];}for(int i=1;i<=n;i++){d[i]=grade[i]-grade[i-1];}for(int i=1;i<=p;i++){cin>>x>>y>>z;d[x]+=z;d[y+1]-=z;}for(int i=1;i<=n;i++) {grade[i]=d[i]+grade[i-1];ming=min(ming,grade[i]);}cout<<ming;return 0;
}

      这道题我们要对一个区间整体加上一个数,这种事就要交给差分来做,差分就是比较容易在O(1)时间内维护区间内所有的数加减乘除一个数,我们先构造差分数组,因为d[i]=a[i]-a[i-1],所以我们对差分数组加上一个数,也会对原数组每个元素加上一个数,但由于区间外的不能改变,所以我们对区间外再减去一个数,最后恢复原数组1即可。

5.地毯(二维差分)

 

#include<iostream>
#include<cstdio>
using namespace std;
int a[1002][1002], b[1002][1002];
int n,m,x1,y1,x2,y2;
void insert(int x1, int y1, int x2, int y2,int c)
{b[x1][y1] += c;b[x2 + 1][y1] -= c;b[x1][y2 + 1] -= c;b[x2 + 1][y2 + 1] += c;
}
int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){insert(i, j, i, j, a[i][j]);      //构建差分数组}}while (m--){cin >> x1 >> y1 >> x2 >> y2;insert(x1, y1, x2, y2,1);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];  //二维前缀和}}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%d ", b[i][j]);}printf("\n");}return 0;
}

       这道题要对一个矩形区域内的加上一个数,就是差分二维化,要注意的是最后恢复原数组时,因为原数组是差分数组的前缀和,所以差分数组相加等于原数组,我们直接对差分数组进行操作就可以。

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

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

相关文章

Redis内存使用率高,内存不足问题排查和解决

问题现象 表面现象是系统登录突然失效&#xff0c;排查原因发现&#xff0c;使用redis查询用户信息异常&#xff0c;从而定位到redis问题 if (PassWord.equals(dbPassWord)) {map.put("rtn", 1);map.put("value", validUser);session.setAttribute("…

玩转MYSQL|详细分析mysql-MGR集群搭建

目录 1、简介 2、环境准备 2.1 数据库服务器规划 2.2 安装mysql5.7.20 2.3 设置hostname和ip映射 3、创建复制环境 3.1 服务器host68.cn 3.1.1 配置/etc/my.cnf 3.1.2 服务器host68.cn上建立复制账号&#xff1a; 3.1.3 在mysql服务器host68.cn上安装group replicatio…

QT+OSG/osgEarth编译之四十八:pcre+Qt编译(一套代码、一套框架,跨平台编译,版本:Cal3D-0.13)

目录 1、pcre介绍 2、文件下载 3、文件分析 4、pro文件 5、编译实践 1、pcre<

redis客户端

3、Redis客户端 3.1 Redis自带的客户端 带密码进入客户端 [rootqianfeng01 redis-4.0.14]# src/redis-cli -h 192.168.10.101 -p 6379 -a root Warning: Using a password with -a option on the command line interface may not be safe. 192.168.10.101:6379> keys * (…

js遍历后端返回的集合将条件相同的放入同一个数组内

项目场景&#xff1a; echarts折线图需要根据条件动态展示多条不同曲线 解决方案&#xff1a; 后端直接将使用sql将数据查询出来返回即可,因为我这里不是Java使用的C#不是很熟练后台不好写逻辑,所以在前端js完成的 代码如下: function createline(villagename, buildingname…

【MySQL】主从异步复制配置

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

Java面试题76-85

76、heap和stack有什么区别。 java的内存分为两类&#xff0c;一类是栈内存&#xff0c;一类是堆内存。栈内存是指程序进入一个方法时&#xff0c;会为这个方法单独分配一块私属存储空间&#xff0c;用于存储这个方法内部的局部变量&#xff0c;当这个方法结束时&#xff0c;…

rime中州韵 easyEnglish输入法

根据前面的几个自定义配置的练手,想必大家已经熟悉了所谓的 程序文件夹&#xff0c;用户文件夹&#xff0c;custom.yam 文档这几个概念了。在接下来的自定义配置讲述中&#xff0c;将默认大家是懂得所做的修改应该在哪个文件中进行的&#xff0c;讲述的速度将会有所加快。 今天…

给idea添加右键打开功能

添加文件夹右键程序打开 开始运行regedit 找到 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell 1、右键shell目录新建项Idea 2、右键Idea新建command 3、选择Idea 右侧空白出新建字符串 名字为Icon 值填入idea的运行程序地址 4、选择command 默认项填入idea的运行…

自定义异常面试及答案

1、为什么要使用自定义异常&#xff1f; 使用自定义异常&#xff08;Custom Exceptions&#xff09;在程序设计中是一个良好的实践&#xff0c;它有几个重要的好处&#xff1a; 提高代码可读性&#xff1a; 自定义异常的名称如果能清晰表达出异常的情况&#xff0c;那么阅读代…

25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件

截止这一章,我们就不把重心放在前端,后台的基础代码,因为后面都是业务层面的crud。 前端直接替换这两个文件夹即可,后台代码也直接复制: 一、重新更新一下所有的pom.xml 这个地方我踩了好多坑,最后得到一个完整的pom.xml,建议大家直接用我的pom.xml替换即可。 1.comm…

08-C++ STL-容器

c STL-容器 1. 引入 我们想存储多个学员的信息&#xff0c;现在学员数量不定&#xff1f; 我们可以创建一个 数组 存储学员的信息但是这个数组大小是多少呢?过大会导致空间浪费&#xff0c;小了又需要扩容对其中的数据进行操作也较为复杂每次删除数据后还要对其进行回收等操…

K8s之声明式APIs

大家好&#xff0c;我是升仔 引言 Kubernetes&#xff08;K8s&#xff09;是一个开源的容器编排系统&#xff0c;用于自动化部署、扩展和管理容器化应用。在K8s中&#xff0c;声明式APIs&#xff08;Application Programming Interfaces&#xff09;是一种核心概念&#xff0…

springboot+mybatis项目

1:pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

2023 NCTF writeup

CRYPTO Sign 直接给了fx,gx&#xff0c;等于私钥给了&#xff0c;直接套代码&#xff0c;具体可以参考&#xff1a; https://0xffff.one/d/1424 fx [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…

【逗老师的无线电】ICOM IC-705终端模式Terminal Mode直连反射器配置-内置网关IP直连篇

各位友台大家好呀&#xff0c;逗老师最近整了一台IC-705&#xff0c;最吸引人的莫过于这玩意可以IP直连反射器。下面简单介绍一下这个功能和其配置方法 目录 一、功能二、依赖条件三、配置3.1、IC-705连接WIFI3.2、配置Terminal Mode3.2.1、点击MENU进入菜单&#xff0c;翻到第…

C# JsonString转Object以及Object转JsonString

主要讲述了两种方法的转换&#xff0c;最后提供了格式化输出JsonString字符串。 需要引用程序集 System.Web.Extensions.dll、Newtonsoft.Json.dll System.Web.Extensions.dll可直接在程序集中引用&#xff0c;Newtonsoft.Json.dll需要在NuGet中下载引用。 详细代码&#xf…

WEB 3D技术 three.js 雾 基础使用讲解

本文 我们说一下 雾 在three.js中有一个 Fog类 它可以创建线性雾的一个效果 她就是模仿现实世界中 雾的一个效果 你看到远处物体会组件模糊 直到完全被雾掩盖 在 three.js 中 有两种雾的形式 一种是线性的 一种是指数的 个人觉得 线性的会看着自然一些 他是 从相机位置开始 雾…

报错大全(未完待续)

springboot Could not find artifact org.springframework.boot:spring-boot-maven-plugin 报错环境&#xff1a;昨天的springboot项目的pom文件正常&#xff0c;今天再打开就会有些依赖爆红 解决步骤&#xff1a; 去maven的仓库里找你下载的依赖文件&#xff0c;路径是你的…

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议(IACMIR 2024)

【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议&#xff08;IACMIR 2024&#xff09; 2024 International Academic Conference on Machinery, Images, and Robotics 会议将聚焦“机械、成像和机器人”相关的最新研究领域&#xff0c;为国内…