SMU Summer 2024 Contest Round 5

SMU Summer 2024 Contest Round 5

2024.7.19 9:00————12:00

过题数1/7
补题数4/7

  • Robot Takahashi
  • Connect 6
  • Strange Balls
  • Linear Probing
  • Red Polyomino
  • Stronger Takahashi
  • Predilection

A - Robot Takahashi

我太菜了dbq
一开始想用三分,写完交上去发现错了,细细想了一下发现这题不能用三分,是一道非常波折的曲线。然后用了俩个循环,tle了,然后循环加三分,结果又wa了,一个小时过去了。

题解:
n个人,有大人或小孩,各自有自己对应的体重w[i],d对应位置上是1它就是大人,否则就是小孩,有一个小机器人,它会武断地将大于等于X体重的人当作大人,其余是小孩,请问它最多可以判断正确多少次。
将大人和小孩分别储存进b和a排序,对大人进行遍历,另x等于大人,所以满足条件的大人会一一减少,而小孩则会增多,直接从当前遍历到的a的位置继续遍历,找到第一个不满足条件的小孩停止即可。输出最大的ans。
代码:

#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
string s;
int w[200006];
priority_queue<int,vector<int>,greater<int>>b;
int a[200005];signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;cin >> s;int jsa = 0;for (int i = 1; i <= n; i++) {cin >> w[i];if(s[i-1]=='0'){a[jsa] = w[i];jsa++;}else if(s[i-1]=='1')b.push(w[i]);}sort(a,a+jsa);int t = 0;int res = b.size();int ans = 0;if(res == 0) ans = n;int m = 0;while (!b.empty()) {t++;int la = res-t+1;int x = b.top();b.pop();for (m; m < jsa; m++) {if(a[m] >= x)break;}//这个地方一开始我是直接遍历a,所以会t,可以想到满足条件的a绝对会越来越多,直接从上一个位置往下遍历即可。la = la+m;
//        cout << la << endl;ans = max(ans,la);}cout << ans;return 0;
}

B - Connect 6

题解:
n行n列的字符数组,‘#’是黑色,'.'是白色。可以将任意俩块变成黑色,能否是竖直方向,水平方向,或者对角方向有连续的六个黑色块。
直接暴力即可,看连续的六个能否有四个黑色块,注意不能跑到最后五个块进行遍历,因为他们所需要的黑色块是在数组之外的。
代码:

#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
char a[1015][1015];signed main() {cin >> n;for (int i = 1; i <= 1010; i++) {for (int j = 1; j <= 1010; j++) {a[i][j] = '!';}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> a[i][j];}}bool st = false;int res = 0;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if(j+5<= n){//就是这几个if,wa了好几次,如果不加的话说明你所需要的黑色块在数组之外,无法实现res = 0;for (int k = 0; k < 6; k++) if(a[i][j+k] == '#')res++;if(res >=4)st = true;}if(i+5 <= n){res = 0;for (int k = 0; k < 6; k++) if(a[i+k][j] == '#')res++;if(res >= 4)st = true;}if(i+5 <= n && j+ 5 <= n){res = 0;for (int k = 0; k < 6; k++) if(a[i+k][j+k] == '#')res++;if(res >= 4)st = true;}res = 0;if(j >= 6 && i+5 <= n) {for (int k = 0; k < 6; k++) if(a[i+k][j-k]=='#')res++;if(res >= 4)st = true;}res = 0;if(i >= 6 && j+5 <= n) {for (int k = 0; k < 6; k++) if(a[i-k][j+k]=='#')res++;if(res >= 4)st = true;}}}if(st)cout << "Yes" << endl;else cout << "No" << endl;return 0;
}

C - Strange Balls

题解:
有n个球,保证每个球上的数字大于1,往一个气缸里一个一个放球,如果有连续k个标号为k的球,它们就会被消除,求每次往里面放入球后的个数。
愣是给我暴力出来了,然后看了一下应该是可以二维stack储存个数。
代码:

#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
int a[200005];
int b[200005];signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//加速加速加速cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}int t = 1;for (int j = 1; j <= n; j++) {b[t] = a[j];if(t >= a[j]) {bool st = true;for (int k = t-a[j]+1; k <= t; k++) {if(b[k] != a[j]){st = false;break;//可以停下这个对比标号了}}if(st) {t = t-a[j];}}cout << t << endl;t++;}return 0;
}
//也是没想到竟然过了
#include<bits/stdc++.h>using namespace std;
#define int long long
int n;
int a[200005];
stack<pair<int,int>>b;
//标号与连续的个数signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}int res = 0;for (int i = 1; i <= n; i++) {if(b.empty()) {b.push({a[i],1});res++;}else if(a[i] == b.top().first) {b.top().second++;res++;if(a[i] == b.top().second) {res-=a[i];b.pop();}}else {b.push({a[i],1});res++;}cout << res << endl;}return 0;
}

D - Linear Probing

题解:
给定一个长度为n且每个数都是-1的数组a,q次询问,每个询问输入t和x,如果t=1,令h=x%n,在数组a中找到第一个为-1的数字,变成x。如果t=2,直接输出a[x%n]。
可以考虑到,在寻找第一个不为-1的数字时会出现反复重复遍历同一段数组的情况,所以定义一个to数组,每次直接跳跃过去已经确定过都不是-1的数组,具体见注释。
代码:

#include<bits/stdc++.h>using namespace std;
#define int long long 
const int N = 1048576;
int a[1050000];
int q,lq;
int to[1050000];void dfs(int t,int x) {if(a[t] == -1) {lq = t;//当前这个不为-1的,标记一下a[t] = x;return ;}dfs(to[t],x);to[t] = lq;//在回来的路上把沿途的to都直接赋值到最后一个lq
}signed main() {cin >> q;memset(a,-1,sizeof a);for (int i = 0; i < N; i++) {to[i] = i+1;}to[N-1] = 0;while (q--) {int t,x;cin >> t >> x;if(t == 1) {int h = x;dfs(h%N,x);}else if(t == 2) cout << a[x%N] << endl;}return 0;
}

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

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

相关文章

智能家居和智能家电有什么区别?

智能家居和智能家电在定义、涵盖范围、功能特点以及系统集成度等方面存在显著区别。 一、定义 智能家居&#xff1a;智能家居是指通过物联网技术、人工智能技术等先进技术&#xff0c;将家居设备与互联网连接起来&#xff0c;实现智能化控制和管理的一种新型生活方式。它不仅…

Docker搭建Harbor

1.什么是Harbor Harbor 是 vMware 公司开源的企业级 Docker 〖egistry 项日&#xff0c;其日标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理UI 、基于角色的访问控制(Role Based Accesscontr…

活动回顾 | AutoMQ 联合 GreptimeDB 共同探讨新能源汽车数据基础设施

7 月 13 日&#xff0c;AutoMQ 携手 GreptimeDB“新能源汽车数据基础设施” 主题 meetup 在上海圆满落幕。本次论坛多角度探讨如何通过创新的数据管理和存储架构&#xff0c;提升汽车系统的性能、安全性和可靠性&#xff0c;从而驱动行业的持续发展和创新&#xff0c;涵盖 Auto…

PHP萌宠之家微信小程序系统源码

&#x1f43e;萌宠之家微信小程序&#x1f43e; —— 铲屎官们的温馨小窝✨ &#x1f3e0;【一键开启萌宠乐园】&#x1f3e0; 亲们&#xff0c;是不是每次刷手机都忍不住想看看那些软萌可爱的毛孩子&#xff1f;现在&#xff0c;有了“萌宠之家”微信小程序&#xff0c;你的…

LeetCode 3112.访问消失节点的最少时间:单源最短路的Dijkstra算法

【LetMeFly】3112.访问消失节点的最少时间&#xff1a;单源最短路的Dijkstra算法 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-time-to-visit-disappearing-nodes/ 给你一个二维数组 edges 表示一个 n 个点的无向图&#xff0c;其中 edges[i] [ui, vi, l…

【柴油机故障诊断】基于斑马优化算法ZOA优化柴油机故障诊断附Matlab代码

% 柴油机故障诊断 - 基于斑马优化算法(Zebra Optimization Algorithm,ZOA)优化Transformer模型 % 代码示例仅为演示用途,实际应用中可能需要根据具体情况进行适当修改 % 初始化参数 maxIterations = 100; % 最大迭代次数 populationSize = 50; % 种群大小 % 斑马优化算法…

【深度学习】【Lora训练4】StabelDiffusion,人物lora训练

启动&#xff1a; docker run -it --gpus all --net host -v /ssd/xiedong/xiezhenceshi/lora_train:/ssd/xiedong/xiezhenceshi/lora_train kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-xformers-lora-train bashrootgpu16:/workspace/lora-scripts# python…

6. JavaSE ——【深入理解Java中的按位运算符】

&#x1f4bb; 开场白 欢迎来到我的技术博客&#xff01;在这里&#xff0c;我们将一起探索编程的奥秘&#xff0c;分享代码的智慧&#xff0c;让技术改变生活。让我们开始这段精彩的旅程吧&#xff01;&#x1f680;&#x1f4bb;&#x1f310; &#x1f4d6;个人主页&#xf…

PostgreSQL的Json数据类型如何使用

PostgreSQL中的JSON数据类型提供了一种灵活的方式来存储JSON&#xff08;JavaScript Object Notation&#xff09;数据。JSON是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。在PostgreSQL中&#xff0c;你可以使用JSON和JSONB&…

untiy 竖排文字

使用的tmp文本&#xff0c;启用富文本&#xff0c;默认就是启用的 然后在要竖排的文本前边拼接 效果如下 如果用代码拼接 text.text "<rotate90>""内容";

深入Redis集群部署:从安装配置到测试验证的完整指南

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

深入了解 GCC

GCC&#xff0c;全称 GNU Compiler Collection&#xff0c;是 GNU 项目的一部分&#xff0c;是一个功能强大且广泛使用的编译器套件。它支持多种编程语言&#xff0c;包括 C、C、Fortran、Java、Ada 和 Go。GCC 具有高度的可移植性&#xff0c;几乎可以在所有现代计算机体系结构…

Linux应用——网络基础

一、网络结构模型 1.1C/S结构 C/S结构——服务器与客户机&#xff1b; CS结构通常采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器&#xff0c;服务器则是提供信息供人访问的计算机。 例如&…

C++仓库管理系统

功能 代码在效果图后面 1.添加物品 2.删除物品 3.更新物品数量 4.查询物品 5.列出所有物品 6.保存并退出 注意事项&#xff1a;退出要输入“6”退出才能保存数据&#xff0c;不要直接按X关掉窗口&#xff08;不会保存数据&#xff09;。 效果图 源代码 编…

算法日记day 13(删除字符串中的所有重复元素)

一、删除字符串中的所有重复元素 题目&#xff1a; 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符…

安全防御2

实验要求&#xff1a; 实验过程&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换)&#xff1a; 新建电信区&#xff1a; 新建移动区&#xff1a; 将对应接口划归到各自区域&#xff1a; 新建…

Python 字典全面总结

Python 字典简介 Python 内置了字典&#xff1a;dict 的支持&#xff0c;dict 全称 dictionary&#xff0c;在其他语言中也称为 map&#xff0c;使用键-值&#xff08;key-value&#xff09;存储&#xff0c;具有极快的查找速度。 这种 key-value 存储方式&#xff0c;在放进…

JVM--自动内存管理--JAVA内存区域

1. 运行时数据区域 灰色的线程共享&#xff0c;白色的线程独享 白色的独享就是根据个体"同生共死" 程序计数器&#xff1a; 是唯一一个没有OOM(内存溢出)的地方 是线程独享的 作用&#xff1a; 是一块较小的内存空间,是当前线程所执行的字节吗的行号指示器 由于…

云监控(华为) | 实训学习day2(10)

spring boot基于框架的实现 简单应用 - 用户数据显示 开发步骤 第一步&#xff1a;文件-----》新建---项目 第二步:弹出的对话框中,左侧选择maven,右侧不选任何内容. 第三步&#xff0c;选择maven后&#xff0c;下一步 第4步 &#xff1a;出现对话框中填写项目名称 第5步&…

NSGA和MOGA 算法的异同点

NSGA&#xff08;Nondominated Sorting Genetic Algorithm&#xff09;和 MOGA&#xff08;Multi-Objective Genetic Algorithm&#xff09;都是用于多目标优化的进化算法。它们通过模拟自然选择和遗传操作来寻找优化问题的Pareto前沿&#xff0c;即在多个目标之间达到最佳折衷…