洛谷:集合与差分

 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;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测

异常检测 | Matlab基于GNN图神经网络的数据异常数据检测 目录 异常检测 | Matlab基于GNN图神经网络的数据异常数据检测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab基于GNN图神经网络的数据异常数据检测。其核心思想是学习一个函数映射。本次使用人类活…

Powermill各版本安装指南

下载链接 https://pan.baidu.com/s/1CsrYEUQNmDa820RxDV2G6Q?pwd0531 1.鼠标右击【PowerMill2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 PowerMill2024(64bit)】。 2.打开解压后的文件夹&#xff0c;双击打开【Setup】文…

70内网安全-域横向内网漫游Socks代理隧道技术(下)

这节课解决代理的问题&#xff0c; 他是内网里面的穿透技术&#xff0c;隧道主要安全设备和流量监控的拦截问题&#xff0c;我们在做渗透的时候需要回显数据或者一些重要的信息&#xff0c;走的协议不一样&#xff0c;tcp/ip有七层&#xff0c; 在不同层里面有不同的协议&…

flowable工作流看这一篇就够了(进阶篇 下)

目录 三、多人会签 3.1、多实例介绍 3.2、基本应用 案例一&#xff08;静态指定数量&#xff09; 案例二&#xff08;动态数量和指派审批人&#xff09; 案例三&#xff08;表达式方式&#xff09; 案例四&#xff08;Java方法控制完成条件&#xff09; 3.3、服务任务 …

加入近屿智能OJAC的AIGC星辰大海深度训练营:开启您的AI大模型之旅!

成为AI领域的专家吗&#xff1f;想要实现升职加薪吗&#xff1f;加入第六期近屿智能OJAC第六期AIGC星辰大海&#xff1a;大模型工程师与产品专家深度训练营&#xff0c;正是你学习AIGC技术&#xff0c;实现转型的绝佳机会。在这里&#xff0c;不仅是学习&#xff0c;更是您职业…

亲爱的程序猿们,元旦快乐!

新年祝福 在这个充满欢笑和祝福的日子里&#xff0c;我想对你们说&#xff1a; 新的一年&#xff0c;愿你们像代码一样充满逻辑&#xff0c;像算法一样追求高效&#xff0c;像编程语言一样多样化&#xff01; 2024年即将到来&#xff0c;预测几个行业趋势&#xff1a; 人工…

【数据结构】排序之交换排序(冒泡 | 快排)

交换目录 1. 前言2. 交换排序3. 冒泡排序3.1 分析3.2 代码实现 4. 快速排序4.1 hoare版本4.1.1 分析4.1.2 hoare版本代码 4.2 挖坑法4.2.1 分析4.2.2 挖坑法代码实现 4.3 前后指针版本4.3.1 分析4.3.2 前后指针版本代码实现 1. 前言 在之前的博客中介绍了插入排序&#xff0c;…

Windows搭建RTSP视频流服务(EasyDarWin服务器版)

文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP &#xff08;Real-Time Streaming Protocol&#xff09;实时流媒体协议。 RTSP定义流格式&am…

Spring高手之路-Spring AOP

目录 什么是AOP Spring AOP有如下概念 补充&#xff1a; AOP是如何实现的 Spring AOP 是通过代理模式实现的。 Spring AOP默认使用标准的JDK动态代理进行AOP代理。 什么是AOP AOP(Aspect-Oriented Programming)&#xff0c;即面向切面编程&#xff0c;用人话说就是把公共的…

【小沐学Python】Python实现免费天气预报获取(OpenWeatherMap)

文章目录 1、简介1.1 工具简介1.2 费用1.3 注册1.4 申请key 2、接口说明2.1 One Call 3.02.2 Current Weather and Forecasts collection2.2.1 API 调用2.2.2 API 参数 2.3 Historical Weather collection2.4 Weather Maps collection2.5 Other weather APIs 3、接口测试3.1 例…

菜鸟网络Java实习一面面经

自我介绍&#xff0c;做过的项目 巴拉巴拉 你项目中用到redis&#xff0c;可以介绍一下为什么使用它吗&#xff1f; 基于内存操作&#xff0c;内存读写速度快。 支持多种数据类型&#xff0c;包括String、Hash、List、Set、ZSet等。 支持持久化。Redis支持RDB和AOF两种持久…

【Latex错误:】Package fontspec: The font “SIMLI“ cannot be found. LaTex [行 37,列1]

【Latex错误&#xff1a;】Package fontspec: The font "SIMLI" cannot be found. LaTex [行 37&#xff0c;列1] 解决方案 错误详情如下图所示&#xff1a; 最近使用latex写毕业论文&#xff0c;效率是快&#xff0c;但是出些一些错误就难得搞了&#xff0c;上面的…

python+django游戏分享论坛网站49c2c

本系统主要包括管理员和用户两个角色组成&#xff1b;主要包括首页、个人中心、用户管理、游戏类型管理、游戏文章管理、交流论坛、系统管理等功能的管理系统。 系统权限按管理员和用户两类涉及用户划分。 &#xff08;1&#xff09;管理员功能需求 管理员登陆后&#xff0c;主…

桶排序 BucketSort

桶排序 桶排序是将数组分散到有限的桶中&#xff0c;然后每个桶再分别排序&#xff0c;而每个桶的排序又可以使用其他排序方式进行排序&#xff0c;可以是桶排序也可以是其他排序。一句话就是: 划分多个范围相同的区间&#xff0c;每个子区间自排序最后合并。 桶的大小可以随…

计量经济学|学习笔记以及学习感悟

初级计量经济学着重于介绍基本的统计工具和经济模型&#xff0c;以帮助理解经济数据和经济现象之间的关系。它包括回归分析、假设检验和预测方法等内容。中级计量经济学则深入研究这些方法的理论基础和实际应用&#xff0c;包括更复杂的模型和技术&#xff0c;如面板数据分析、…

jwt 介绍

目录 1&#xff0c;jwt 的出现问题 2&#xff0c;jwt 介绍3&#xff0c;jwt 令牌的组成3.1&#xff0c;header3.2&#xff0c;payload3.3&#xff0c;signature 4&#xff0c;验证5&#xff0c;总结 身份验证相关内容&#xff1a; 浏览器 cookie 的原理&#xff08;详&#xff…

微服务实战系列之Dubbo(下)

前言 眼看着2023即将走远&#xff0c;心里想着似乎还有啥&#xff0c;需要再跟各位盆友叨叨。这不说曹操&#xff0c;曹操就来了。趁着上一篇Dubbo博文的余温尚在&#xff0c;博主兴匆匆地“赶制”了Dubbo的下集&#xff0c;以飨读者。 上一篇博主依然从Dubbo的内核出发&#…

Linux基础知识学习3

vim编辑器 其分为四种模式 1.普通(命令)模式 2.编辑模式 3.底栏模式 4.可视化模式 vim编辑器被称为编辑器之神&#xff0c;而Emacs更是神之编辑器 普通模式&#xff1a; 1.光标移动 ^ 移动到行首 w 跳到下一个单词的开头…

软件开发新手用哪个IDE比较好?软件开发最好的IDE都在这!

目录 IDES 的优点 最佳编程 IDE 列表 Java 开发的流行集成开发环境 JetBrains 的 IntelliJ IDEA NetBeans 适用于 C/ C、C# 编程语言的最佳 IDE Visual Studio 和 Visual Studio 代码 Eclipse PHP 开发的最佳 IDE PHPStorm Sublime Text Atom JavaScript 的顶级 I…

Windows10系统的音频不可用,使用疑难解答后提示【 一个或多个音频服务未运行】

一、问题描述 打开电脑&#xff0c;发现电脑右下角的音频图标显示为X&#xff08;即不可用&#xff0c;无法播放声音&#xff09;&#xff0c;使用音频自带的【声音问题疑难解答】&#xff08;选中音频图标&#xff0c;点击鼠标右键&#xff0c;然后选择“声音问题疑难解答(T)”…