「蓝桥·算法双周赛」第七场分级赛——小白入门赛

题目列表

在这里插入图片描述

说明

好久没打蓝桥杯的比赛,回来试试水,就开了第1、2、3一共三个题,第4题可惜了。

在这里插入图片描述

1.thanks,mom【算法赛】

在这里插入图片描述

思路:

没什么好说的,但是当时比赛刚开始服务器有问题,基本提交的全WA了。
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
using ull = unsigned long long;
const int N = 1e5+5,mod = 1e9+7,INF = 0x3f3f3f3f;
void solve(){cout << "thanks,mom";
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;
//	cin >> T;while(T--){solve();} return 0;
}

2.霓虹【算法赛】

在这里插入图片描述

说明

这个题,没啥好特别的想法,我想的是把'0'到'9'的每一笔画是否出现置成0和1(有该笔画为1,否则为0),然后遍历两个字符串比较。

参考代码

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 1e5+5,mod = 1e9+7,INF = 0x3f3f3f3f;
//上横第二维下标为0,左上竖1,右上竖2,中横3,左下竖4,右下竖5,下横6 
int cnt[10][7]={{1,1,1,0,1,1,1},{0,0,1,0,0,1,0},{1,0,1,1,1,0,1},
{1,0,1,1,0,1,1},{0,1,1,1,0,1,0},{1,1,0,1,0,1,1},{1,1,0,1,1,1,1},
{1,0,1,0,0,1,0},{1,1,1,1,1,1,1},{1,1,1,1,0,1,1}};
void solve(){string s1,s2;cin >> s1 >> s2;int ans = 0;for(int i = 0;i<s1.size();i++){char c1=s1[i],c2=s2[i];if(c1==c2) continue;else{for(int j = 0;j<7;j++){if(cnt[c1-'0'][j]!=cnt[c2-'0'][j]) ans++;}}}cout << ans << endl;
}
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;
//	cin >> T;while(T--){solve();} return 0;
}

3. 奇偶排序【算法赛】

在这里插入图片描述

思路

没啥好说的,存进数组后sort()一下,自己写一个cmp()比较函数即可

参考题解

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 1e3+5,mod = 1e9+7,INF = 0x3f3f3f3f;
int a[N];
int n;
bool cmp(int a1,int a2){if(a1%2==1&&a2%2==1) return a1<a2;else if(a1%2==0&&a2%2==0) return a1<a2;else if(a1%2==0&&a2%2==1) return false;else if(a1%2==1&&a2%2==0) return true;
}
void solve(){cin >> n;for(int i = 0;i<n;i++) cin >> a[i];sort(a,a+n,cmp);for(int i = 0;i<n;i++) cout << a[i] << " \n"[i==n-1];
}
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;
//	cin >> T;while(T--){solve();} return 0;
}

4. 可结合的元素对【算法赛】

在这里插入图片描述

说明

最简单的方法是写两个循环暴力跑,我也是这么做的,但是当时比赛环境可能有问题,一直过不去,比赛完了重新提交就AC了;用map或者onordered_map也可以跑出来,不过当时比赛的时候没想到(其中用unordered_map速度最快,map速度最慢)

参考题解1

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N = 1e5+5;
int n;
int a[N];
int lowbit(int x){return x&(-x);}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin >> n;for(int i = 1;i<=n;i++) cin >> a[i];int ans = 0;for(int i = 1;i<=n;i++){for(int j = i+1;j<=n;j++){if(lowbit(a[i]+a[j])==a[i]+a[j]) ans++;}}cout << ans;return 0;
}

参考题解2

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 1e5+5,mod = 1e9+7,INF = 0x3f3f3f3f;
map<ll,ll> mp;
void solve(){int n;cin >> n;ll ans = 0;for(int i = 1;i<=n;i++){ll x;cin >> x;for(int j = 0;j<32;j++){ll y = 1LL<<j;ans+=mp[y-x];}mp[x]++;}cout << ans;
}
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;
//    cin >> T;while(T--){solve();} return 0;
}

参考题解3

#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 1e5+5,mod = 1e9+7,INF = 0x3f3f3f3f;
unordered_map<ll,ll> mp;
void solve(){int n;cin >> n;ll ans = 0;for(int i = 1;i<=n;i++){ll x;cin >> x;for(int j = 0;j<32;j++){ll y = 1LL<<j;ans+=mp[y-x];}mp[x]++;}cout << ans;
}
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int T = 1;
//    cin >> T;while(T--){solve();} return 0;
}

5. 兽之泪【算法赛】

在这里插入图片描述

思路

用堆实现每次取到的都是最小的,但是前k-1个要考虑是否是第一次打败的问题,以及考虑是否要打第k个怪物的问题

参考题解

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
using PII = pair<int,int>;
const int N = 2e5+5;
int k,n;
PII a[N];
priority_queue<PII,vector<PII>,greater<PII> > heap1;
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin >> k >> n;for(int i = 1;i<=k;i++){int x,y;cin >> x >> y;a[i]={x,y};}for(int i = 1;i<=k-1;i++){PII t1 = {a[i].first,i};heap1.push(t1);}int ans1 = 0;for(int i = 1;i<=n;i++){auto t=heap1.top();ans1+=t.first;if(t.second!=-1){heap1.pop();PII t1 = {a[t.second].second,-1LL};heap1.push(t1);}}int ans2 = 0;priority_queue<PII,vector<PII>,greater<PII> > heap2;for(int i = 1;i<=k;i++){ans2+=a[i].first;heap2.push({a[i].second,-1LL});n--;}for(int i = 1;i<=n;i++){auto t1 = heap2.top();ans2+=t1.first;}cout << min(ans1,ans2);return 0;
}

6. 矩阵X【算法赛】

在这里插入图片描述

说明

这个题用二维前缀和加滑动窗口来写最便捷

参考题解(从大佬那copy来的)

在这里插入图片描述

#include<bits/stdc++.h> 
using namespace std;
#define int long long
#define ll long long
#define pp pair<int,int>
const int N=1e6+10;
const int M=(1ll<<31)-1;
int n,m,x,y,k,z,o;
const int mo=1e9+7;
struct w{int x,y;
}a[N];
void sovel()
{cin>>n>>m>>k>>o;vector<vector<int> > v(n+1,vector<int>(m+1));vector<vector<int> > sum(n+1,vector<int>(m+1));vector<vector<int> > dpa(n+1,vector<int>(m+1));vector<vector<int> > dpb(n+1,vector<int>(m+1));auto getsum=[&](int x,int y){if(x<k||y<o){return 0ll;}return sum[x][y]-sum[x-k][y]-sum[x][y-o]+sum[x-k][y-o];	};for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>v[i][j];sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+v[i][j];}}for(int j=1;j<=m;j++){int l=0,r=-1;for(int i=1;i<=n;i++){x=v[i][j];while(l<=r&&a[r].x<=x){r--;}r++;a[r]={x,i};while(i-a[l].y+1>k){l++;}dpa[i][j]=a[l].x;}}for(int i=k;i<=n;i++){int l=0,r=-1;for(int j=1;j<=m;j++){x=dpa[i][j];while(l<=r&&a[r].x<=x){r--;}r++;a[r]={x,j};while(j-a[l].y+1>o){l++;}dpb[i][j]=a[l].x;}}int manx=0;for(int j=1;j<=m;j++){int l=0,r=-1;for(int i=1;i<=n;i++){x=-v[i][j];while(l<=r&&a[r].x<=x){r--;}r++;a[r]={x,i};while(i-a[l].y+1>k){l++;}dpa[i][j]=a[l].x;}}for(int i=k;i<=n;i++){int l=0,r=-1;for(int j=1;j<=m;j++){x=dpa[i][j];while(l<=r&&a[r].x<=x){r--;}r++;a[r]={x,j};while(j-a[l].y+1>o){l++;}manx=max(manx,(dpb[i][j]+a[l].x)*getsum(i,j));}}cout<<manx;
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t=1;while(t--){sovel();} 
}

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

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

相关文章

300分钟吃透分布式缓存-24讲:Redis崩溃后,如何进行数据恢复的?

Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF&#xff0c;以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在需要进行 RDB 持久化时&#xff0c;Redis 会将内存中的所有数据以二进制的格式落地&#xff0c;每…

StarUML6.0.1使用

1. 简介 作为一个软件开发人员&#xff0c;平时免不了做一定的软件设计&#xff0c;标准做法就是采用UML来设计&#xff1a; 讨论功能流程时采用时序图、活动图来表达&#xff1b;做业务功能架构时采用组件图来表达&#xff1b;做系统部署架构时采用部署图来表达&#xff1b;做…

linux 日志轮转

前言: 在Linux系统中&#xff0c;日志轮转是一种重要的管理机制&#xff0c;它可以帮助管理日志文件的大小、数量以及保持系统的性能稳定。通过日志轮转&#xff0c;可以定期对日志文件进行归档、压缩或清理&#xff0c;确保系统的日志记录不会无限增长而占用过多的磁盘空间…

JWT身份验证

在实际项目中一般会使用jwt鉴权方式。 JWT知识点 jwt&#xff0c;全称json web token &#xff0c;JSON Web令牌是一种开放的行业标准RFC 7519方法&#xff0c;用于在两方安全地表示声明。具体网上有许多文章介绍&#xff0c;这里做简单的使用。 1.数据结构 JSON Web Token…

数字人ai直播软件突破AI大模型技术,改变未来科技格局!

数字人AI直播软件在AI大模型技术上的突破&#xff0c;将不可避免地改变未来科技格局。这一突破让人们看到了AI技术的无限可能性&#xff0c;并为未来的科技发展打开了新的大门。 AI大模型技术是近年来人工智能领域的一个热点&#xff0c;它通过构建庞大、复杂的神经网络模型&a…

【AI视野·今日NLP 自然语言处理论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 6 Mar 2024 Totally 74 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MAGID: An Automated Pipeline for Generating Synthetic Multi-modal Datasets Authors Hossein Aboutalebi, …

Vue:自动按需导入element-plus图标

自动导入使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集。 完整vite.config.js参考模板 https://download.csdn.net/download/ruancexiaoming/88928539 导入element-plus图标 命令行安装unplugin-icons pnpm i -D unplugin-icons//没有安装自…

手写简易操作系统(二)--启动计算机

前情提要 在上一部分的内容中&#xff0c;我们已经做好了模拟仿真的整个准备工作&#xff0c;这一节我们就先把计算机启动起来。 一、Bochs配置 1.1、配置启动盘 创建硬盘的工具是bximage&#xff0c;这个工具在我们的Bochs目录下&#xff0c;使用命令行创建硬盘 第一个选择…

详解数据库、Hive以及Hadoop之间的关系

1.数据库&#xff1a; 数据库是一个用于存储和管理数据的系统。数据库管理系统&#xff08;DBMS&#xff09;是用于管理数据库的软件。数据库使用表和字段的结构来组织和存储数据。关系型数据库是最常见的数据库类型&#xff0c;使用SQL&#xff08;Structured Query Language…

登录校验认证

会话技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a; 一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请…

【Web】浅聊Java反序列化之Rome——关于其他利用链

目录 前言 JdbcRowSetImpl利用链 BasicDataSource利用链 Hashtable利用链 BadAttributeValueExpException利用链 HotSwappableTargetSource利用链 前文&#xff1a;【Web】浅聊Java反序列化之Rome——EqualsBean&ObjectBean-CSDN博客 前言 Rome中ToStringBean的利用…

186基于matlab的信号盲源分离算法

基于matlab的信号盲源分离算法&#xff0c;包括变步长盲源分离&#xff08;EASI&#xff09;,RLS(自然梯度和普通梯度)&#xff0c;并将三种方法分离结果进行对比。程序已调通&#xff0c;可直接运行。 186 信号盲源分离算法 变步长盲源分离 (xiaohongshu.com)

结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)

Limo Pro 小车建图导航 引言 前景提要&#xff1a;我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目&#xff0c;从以下三个方面&#xff1a;概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分&#xff0c;同样也主要…

使用R语言进行聚类分析

一、样本数据描述 城镇居民人均消费支出水平包括食品、衣着、居住、生活用品及服务、通信、文教娱乐、医疗保健和其他用品及服务支出这八项指标来描述。表中列出了2016年我国分地区的城镇居民的人均消费支出的原始数据&#xff0c;数据来源于2017年的《中国统计年鉴》&#xf…

简单多状态dp问题----删除并获得点数

740. 删除并获得点数 - 力扣&#xff08;LeetCode&#xff09; 本题就是表示不能选值相邻的两个数。 假设nums [ 1,2,3,4,5,6]&#xff0c;那么这其实就类似一个打家劫舍问题&#xff1a; 即选1&#xff0c;就不能选2&#xff0c;只能选3&#xff0c;4&#xff0c;5&#xff…

excel常用操作备忘

目录 快捷键基础数据透视图统计某列的值出现的频数 数据有效性数据分列运算符顺序文本匹配中的通配符错误的类型&#xff08;常与IF嵌套使用&#xff09;函数RANK(num, ref, [order])MID(str, start, len)逻辑函数混合函数选取整列AVERAGEIF(range, criteria, average_range)TR…

Flink 学习3 - 流处理API的基本转换算子 + 多流转换算子

流处理API-Transform 1、基本转换算子 map、flatMap、filter通常被统一称为基本转换算子&#xff08;简单转换算子&#xff09; DataStream 里没有 reduce 和 sum 这类聚合操作的方法&#xff0c;因为 Flink 设计中&#xff0c;所有数据必须先分组才能做聚合操作。 先 keyB…

ASUS华硕天选2锐龙版笔记本电脑FA506ICB/FA706IC原装出厂Windows11系统,预装OEM系统恢复安装开箱状态

链接&#xff1a;https://pan.baidu.com/s/122iHHEOtNUu4azhVPnxNuA?pwdsqk7 提取码&#xff1a;sqk7 适用型号&#xff1a; FA506IM、FA506IE、FA506IC、FA506IHR FA506IR、FA506IHRB、FA506ICB、FA506IEB FA706IM、FA706IE、FA706IC、FA706IHR FA706IR、FA706IHRB、F…

《Effective Modern C++》- 极精简版 15-21条

本文章属于专栏《业界Cpp进阶建议整理》 继续上篇《Effective Modern C》- 极精简版 5-14条。本文列出《Effective Modern C》的15-21条的个人理解的极精简版本。 Item15、尽量使用constexpr constexpr形容对象 constexpr对象都是const&#xff0c;但是const对象不一定是conste…

单数码管(arduino)

1.连接方法 挨个点亮每个灯 #include <Arduino.h>int pin_list[] {4, 5, 19, 21, 22, 2, 15, 18}; int num_pins sizeof(pin_list) / sizeof(pin_list[0]); // 计算数组中的元素数量void setup() {// 设置每个引脚为输出for(int i 0; i < num_pins; i) {pinMode(p…