第33次CCF计算机软件能力认证-第4题十滴水

题干:

十滴水是一个非常经典的小游戏。

CSP202403-4-0.jpeg

C C C 正在玩一个一维版本的十滴水游戏。

我们通过一个例子描述游戏的基本规则。

游戏在一个 1 × c 1×c 1×c 的网格上进行,格子用整数 x ( 1 ≤ x ≤ c ) x(1≤x≤c) x(1xc) 编号,编号从左往右依次递增。

网格内 m m m 个格子里有 1 ∼ 4 1∼4 14 滴水,其余格子里没有水。

在我们的例子中, c = m = 5 c=m=5 c=m=5,按照编号顺序,每个格子中分别有 2 , 4 , 4 , 4 , 2 2,4,4,4,2 2,4,4,4,2 滴水。

玩家可以进行若干次操作,每次操作中,玩家选择一个有水的格子,将格子的水滴数加一。

任何时刻若某个格子的水滴数大于等于 5 5 5,这个格子里的水滴就会向两侧爆开

此时,这个格子的水被清空,同时对于左方、右方两个方向同时进行以下操作:找到当前格子在对应方向上最近的有水的格子,如果存在这样的格子,将这个格子的水滴数加一。

若在某个时刻,有多个格子的水滴数大于等于 5 5 5,则最靠左的先爆开

在我们的例子中,若玩家对第三格进行操作,则其水滴数变为 5 5 5,故第三格水滴爆开,水被清空,其左侧最近的有水格子(第二格)和右侧最近的有水格子(第四格)的水量增加 1 1 1,此时每个格子中分别有 2 , 5 , 0 , 5 , 2 2,5,0,5,2 2,5,0,5,2 滴水。

此时第二格和第四格的水滴数均大于等于 5 5 5,按照规则,第二格的水先爆开,爆开后每个格子中分别有 3 , 0 , 0 , 6 , 2 3,0,0,6,2 3,0,0,6,2 滴水;最后第四格的水滴爆开,每个格子中分别有 4 , 0 , 0 , 0 , 3 4,0,0,0,3 4,0,0,0,3 滴水。

C C C 开始了一局游戏并进行了 n n n 次操作。

C C C 在每次操作后,会等到所有水滴数大于等于 5 5 5 的格子里的水滴都爆开再进行下一次操作。

C C C 想知道他的水平有多高,于是他想知道每一次操作后还有多少格子里有水。

保证这 n n n 次操作都是合法的,即每次操作时操作的格子里都有水。

输入格式

输入的第一行三个整数 c , m , n c,m,n c,m,n 分别表示网格宽度、有水的格子个数以及操作次数。

接下来 m m m 行每行两个整数 x , w x,w x,w,表示第 x x x 格有 w w w 滴水。

接下来 n n n 行每行一个整数 p p p,表示小 C C C 对第 p p p 格做了一次操作。

输出格式

输出 n n n 行,每行一个整数表示这次操作之后网格上有水的格子数量。

数据范围

对于所有测试数据,

  • 1 ≤ c ≤ 1 0 9 1 \le c \le 10^9 1c109 1 ≤ m ≤ min ⁡ ( c , 3 × 1 0 5 ) 1 \le m \le \min(c,3 \times 10^5) 1mmin(c,3×105) 1 ≤ n ≤ 4 m 1 \le n \le 4m 1n4m
  • 1 ≤ x , p ≤ c 1 \le x,p \le c 1x,pc 1 ≤ w ≤ 4 1 \le w \le 4 1w4
  • 输入的所有 x x x 两两不同;
  • 对于每个输入的 p p p,保证在对应操作时 p p p 内有水。

子任务编号

c ≤ c \le c

m ≤ m \le m

特殊性质

1 1 1

30 30 30

30 30 30

2 2 2

3000 3000 3000

3000 3000 3000

3 3 3

3000 3000 3000

3000 3000 3000

4 4 4

1 0 9 10^9 109

3000 3000 3000

5 5 5

3 × 1 0 5 3 \times 10^5 3×105

3 × 1 0 5 3 \times 10^5 3×105

6 6 6

1 0 9 10^9 109

3 × 1 0 5 3 \times 10^5 3×105

7 7 7

1 0 9 10^9 109

3 × 1 0 5 3 \times 10^5 3×105

特殊性质:在游戏的任意时刻(包括水滴爆开的连锁反应过程中),只有至多一个格子的水滴数大于等于 5 5 5

输入样例:
5 5 2
1 2
2 4
3 4
4 4
5 2
3
1
输出样例:
2
1

这道题读完题就明白我们要使用双链表。因为我们可以很容易地看到水槽里面没有水的格子是没有用的,可以直接删去(题干中每次加水只在左右两边的第一个有水的格子),而且我们要能够访问每一个格子它的左右两边的格子。我们明显还要使用到map<>, 因为可以明显的看见对于给定的每一个序号我们能够得到他的水的滴数。所以我们可以想到要使用map<int , Node*> Node是爽两边节点。

下面代码里面有注释,欢迎又不懂的在评论区留言

#include <bits/stdc++.h>using namespace std;const int N = 3e5 + 5;
map<int,int> h; 
// 使用map来进行排序,unordered_map来进行存储
// 题目中样例给的下标是有序的,但是题目中没有说一定是有序的,所以有可能是无序的要先排序。struct Node {int num;Node * left;Node * right;
};int main() {int c, m, n;scanf("%d%d%d", &c, &m, &n);for (int i = 0; i < m; i++) {int a,b;scanf("%d%d", &a, &b);h[a] = b;}unordered_map<int,Node*> s;// 里面放Node指针,就可以指向map里面存储的节点。Node* node = nullptr;for(auto it = h.begin() ; it != h.end() ; it++){//存入unordered_map,记录双链表信息//指针的调用要用 ->Node* new_node = new Node;new_node->num = it->second;new_node->left = node;new_node->right = nullptr;s[it->first] = new_node;if(it != h.begin())node -> right = new_node;node = new_node;}int msize = m;for (int i = 0; i < n; i ++ ){int k;scanf("%d" , &k);node = s[k];node->num ++ ;if(node->num > 4) {while(node){if(node->left){node->left->num ++;node->left->right = node->right;}if(node ->right){node->right->num ++ ;node->right->left = node->left;}msize -- ;if(node->left && node -> left -> num >4){node = node -> left; continue;}if(node->right && node -> right -> num > 4){node = node -> right;continue;}break;}}printf("%d\n" , msize);}return 0;
}

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

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

相关文章

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…

初始项目托管到gitee教程,开箱即用

0.本地仓库与远程仓库关联&#xff08;需先在gitee创建仓库&#xff09; ①打开powershell生成ssh key ssh-keygen -t ed25519 -C "Gitee SSH Key"-t key 类型-C 注释 生成成功如下&#xff0c;并按下三次回车 ②查看公私钥文件 ls ~/.ssh/输出&#xff1a; id_…

如何将智合同与现有的企业管理系统进行集成?

#企业管理系统 #系统集成 #人工智能 #API接口 #安全性 #要素提取 #智能审查 #合同智能对比 随着人工智能技术的发展&#xff0c;合同智能应用赋能企业管理&#xff0c;简化企业管理流程&#xff0c;节约时间和人力成本&#xff0c;提高企业管理质量。智合同利用人工智能技…

怎么提取伴奏?5个人声分离方法一步搞定!

在进行音乐创作或混音等操作时&#xff0c;提取出音乐中的伴奏是一个常见的需求。伴奏是指音乐中除了主旋律和歌唱部分之外的音轨&#xff0c;通常包括鼓、贝斯、吉他等乐器的演奏&#xff0c;提取出伴奏可以让我们更方便地对音乐进行处理。 本文分享几个可以提取伴奏的方法&a…

el-table表头加红色星标

代码&#xff1a; <el-table-column prop"name" label"姓名" width"auto"><template #header><span style"color: red; margin-right: 4px">*</span><span>姓名</span></template></el…

Mysql—高可用集群MHA

1:什么是MHA&#xff1f; MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切…

WordPress 中使用 wp_localize_script 从 PHP 传递参数给 JavaScript

WordPress 的 wp_localize_script 函数从它名字可以看出它是用来进行前端本地化的&#xff0c;它的工作方式是加载翻译之后的文本&#xff0c;接着将它们当做一个 JavaScript 对象输出到 HTML 中&#xff0c;然后 JS 脚本就用该对象去输出对应语言的文本了。 使用 wp_localize…

22个无版权的4K高清视频素材网站,各种风格视频都有!

平时我也会做一些短视频和宣传片&#xff01; 所以&#xff0c;对找素材这回事不在话下&#xff0c;国内外也有不少高清无水印的视频素材网站&#xff0c;今天就分享一些高清剪辑必备的视频素材渠道&#xff0c;不少也是免费哒&#xff0c;平时需要找素材的同学千万不要错过啦…

解决 Django 数据库迁移报错:无法添加带有 `auto_now_add=True` 的字段20241008

解决 Django 数据库迁移报错&#xff1a;无法添加带有 auto_now_addTrue 的字段 引言 在使用 Django 进行开发时&#xff0c;数据库迁移是不可避免的一部分。然而&#xff0c;添加新字段特别是带有 auto_now_addTrue 的日期时间字段时&#xff0c;可能会遇到一些令人头疼的错…

Python中的数据可视化艺术:用Matplotlib和Seaborn讲故事

Python中的数据可视化艺术&#xff1a;用Matplotlib和Seaborn讲故事 数据可视化不仅仅是图表的绘制&#xff0c;更是通过视觉形式传达复杂信息的一种艺术。使用Python中的两个强大的库——Matplotlib和Seaborn&#xff0c;可以将数据转化为清晰、优美的图表&#xff0c;帮助我…

【Kubernetes】常见面试题汇总(五十六)

目录 123. pod 创建失败&#xff1f; 124. kube-flannel-ds-amd64-ndsf7 插件 pod 的 status 为 Init:0/1 &#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#x…

道可云人工智能元宇宙每日资讯|中国发布首个汽车智能安全评价体系

道可云元宇宙每日简报&#xff08;2024年10月11日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 《新疆维吾尔自治区“数据要素”三年行动实施方案》发布 近日&#xff0c;新疆维吾尔自治区数字化发展局、自治区党委网信办、自治区科学技术厅等17部门联合印发《…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-05

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-04目录1. LLM-Augmented Symbolic Reinforcement Learning with Landmark-Based Task Decomposition摘要研究背景问题与挑战如何…

【大数据】大数据治理的全面解析

目录 引言一、什么是大数据治理&#xff1f;1.1 定义1.2 关键要素 二、大数据治理的框架三、大数据治理的重要性四、大数据治理的实施步骤五、数据治理中的关键技术六、大数据治理面临的挑战七、未来趋势总结 引言 大数据治理是现代企业管理中不可或缺的一部分&#xff0c;随着…

『网络游戏』下线数据清理【29】

修改服务端脚本&#xff1a;ServerSession.cs 修改服务端脚本&#xff1a;ServerRoot.cs 修改服务端脚本&#xff1a;CacheSvc.cs 修改服务端脚本&#xff1a;LoginSys.cs 运行服务器 运行客户端 - 连续登录账号 本章结束

VSCode的常用插件(持续更新)

点击左边工具栏的“扩展”&#xff0c;在搜索栏中查找对应插件&#xff0c;点击“安装”&#xff0c;安装完成后右边界面的插件会显示“卸载”按钮。 1、中文&#xff08;简体&#xff09;语言包 2、Auto Rename Tag 修改开始标签&#xff0c;结束标签也会随之自动变化。 3、O…

Python 网络爬虫高阶用法

网络爬虫成为了自动化数据抓取的核心工具。Python 拥有强大的第三方库支持&#xff0c;在网络爬虫领域的应用尤为广泛。本文将深入探讨 Python 网络爬虫的高阶用法&#xff0c;包括处理反爬虫机制、动态网页抓取、分布式爬虫以及并发和异步爬虫等技术。以下内容结合最新技术发展…

docker+mysql创建用户名密码_docker里面的mysql 更换密码

进入mysql容器 操作vi etc/mysql/my.cnf 默认是不安装vi编辑器的&#xff0c;下面安装vi 更新安装包 apt-get update 安装vim 执行这条语句 apt-get install vim 到修改docker容器里面的mysql数据库密码了 启动mysql容器 docker exec -it mysql /bin/bash 编辑配置文件 我这里是…

TON(四)底层编译——PROGRAM{

系列文章目录 文章目录 系列文章目录前言一、PROCGRAM{ 是什么&#xff1f;二、详细分析PROCGRAM{1. 0 : main2. proclist null!variable ( – )hole ( – p)box (x – p)示例 3. proccnt 0!4. gvarcnt 0!5. { bl word newproc } : NEWPROCdeclproc 前言 这次我们将详细讲解PR…

Python 爬取天气预报并进行可视化分析

今天&#xff0c;我们就来学习如何使用 Python 爬取天气预报数据&#xff0c;并用数据可视化的方式将未来几天的天气信息一目了然地展示出来。 在本文中&#xff0c;我们将分三步完成这一任务&#xff1a; 使用 Python 爬取天气数据数据解析与处理用可视化展示天气趋势 让我…