Harbour.Space Scholarship Contest 2023-2024 (Div. 1 + Div. 2) A ~ D

比赛链接

正常枚举就行,从最后一位往前枚举,-1、-2、-3...这样

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;const int N = 1010;int a[N];void solve()
{int x, y, n;cin >> x >> y >> n;a[1] = x, a[n] = y;int res = 1;for(int i = n - 1; i >= 1; i --){a[i] = a[i + 1] - res;res ++;}if(a[1] < x){cout << -1 << endl;return;}a[1] = x;for(int i = 1; i <= n; i ++)cout << a[i] << ' ';cout << endl;
}int main()
{IOSint _;cin >> _;while(_ --){solve();}return 0;
}

 B

 第一个操作可以做到把所有在奇数位的字母任意排列以及把所有在偶数位的字母任意排列。

第二个操作,如果k是奇数时没有任何影响,只用第一种情况就能最优;如果k是偶数时,而且k又小于n,每次操作可以做到奇偶对调,就可以实现任意排序。

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;void solve()
{int n, k;cin >> n >> k;string A, B;string s;cin >> s;for(int i = 0; i < s.size(); i ++){if(i % 2)B.push_back(s[i]);else A.push_back(s[i]);}sort(A.begin(), A.end());sort(B.begin(), B.end());sort(s.begin(), s.end());if(k % 2){n = (n + 1) / 2;for(int i = 0; i < n; i ++){if(i < A.size())cout << A[i];if(i < B.size())cout << B[i];}}else cout << s;cout << endl;
}int main()
{IOSint _;cin >> _;while(_ --){solve();}return 0;
}

C

 可以先把x变成2的i次方,在这个过程中用2的i次方减,一个数一定可以由若干2的i的方组成,x到2的i次方过程中减掉数的总和也一定可以由若干2的i次方组成。

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;ll a[50];
bool st[50];void solve()
{vector<int> ans;int x;cin >> x;int l = 1, r = 32;while(l < r){int mid = l + r + 1 >> 1;if(a[mid] <= x)l = mid;else r = mid - 1;}if(a[l] == x){while(x != 1){ans.push_back(x);x >>= 1;}ans.push_back(1);cout << ans.size() << endl;for(int i = 0; i < ans.size(); i ++){cout << ans[i] << ' ';}cout << endl;return;}memset(st, false, sizeof st);while(x > a[l]){int tmp = x - a[l];int L = 1, R = 32;while(L < R){int mid = L + R + 1 >> 1;if(a[mid] <= tmp)L = mid;else R = mid - 1;}for(int i = L; i >= 0; i --){if(st[i])continue;if(x % a[i] == 0){ans.push_back(x);x -= a[i];st[i] = true;break;}}}while(x != 1){ans.push_back(x);x >>= 1;}ans.push_back(1);cout << ans.size() << endl;for(int i = 0; i < ans.size(); i ++){cout << ans[i] << ' ';}cout << endl;return;
}int main()
{IOSa[0] = 1;for(int i = 1; i <= 40; i ++)a[i] = a[i - 1] * 2;int _;cin >> _;while(_ --){solve();}return 0;
}

D

 这题有点dp那味儿了,总的来说应该是前缀和,太久没写题手生了,写了一个多小时www

看那个公式画个图可以看出来它可以将一个点往下沿等腰三角形延伸,三角形区域内的点都要转换。

可以发现最上面那层有多少个1这一层肯定就要转换多少次,转换完后看第二层也类似,第二层有多少个需要转换的点这一层就要转换多少次,所以一定需要遍历一遍,往后以此类推。所以其实就是从第一层到最后一层遍历一遍所有点,遇到一个需要执行操作的点答案就加一。

现在复杂度已经到达n方了,我们需要想一个O(1)或者logn的算法来计算每个点需不需要转换,然后想到了前缀和,然后加一个额外的二维数组来统计每个点上方的等腰三角形区域内有多少个点被执行过操作。

然后前缀和转化成斜着的,同样是记录有多少个点被执行过操作。一个从左上到右下的斜前缀和数组,一个从右上到左下的斜前缀和数组。

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'using namespace std;typedef pair<int, int> PII;
typedef long long ll;const int N = 3010;int n;
char s[N][N];
int a[N][N], dg[N][N], udg[N][N];void solve()
{cin >> n;for(int i = 0; i <= n + 1; i ++)for(int j = 0; j <= n + 1; j ++)a[i][j] = dg[i][j] = udg[i][j] = 0;for(int i = 1; i <= n; i ++)cin >> s[i] + 1;int ans = 0;for(int i = 1; i <= n; i ++){for(int j = 1; j <= n; j ++){a[i][j] = a[i - 1][j] + dg[i - 1][j - 1] + udg[i - 1][j + 1];int tmp = a[i][j] + s[i][j] - '0';if(tmp % 2){ans ++;a[i][j] ++;dg[i][j] ++;udg[i][j] ++;}dg[i][j] += dg[i - 1][j - 1];udg[i][j] += udg[i - 1][j + 1];}}cout << ans << endl;
}int main()
{IOSint _;cin >> _;while(_ --){solve();}return 0;
}

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

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

相关文章

使用windeployqt和InstallShield打包发布Qt软件的流程

前言 Qt编译之后需要打包发布&#xff0c;并且发布给用户后需要增加一个安装软件&#xff0c;通过安装软件可以实现Qt软件的安装&#xff1b;用于安装软件的软件有很多&#xff0c;这里主要介绍InstallShield使用的流程&#xff1b; 使用windeployqt打包Qt编译后的程序 Qt程序…

手写数字识别之损失函数

目录 交叉熵 手写数字识别之损失函数 分类任务的损失函数 Softmax函数 交叉熵的简单理解&#xff1a;真实分布与非真实分布的交叉&#xff0c;完全对应&#xff0c;熵为0 交叉熵的代码实现 交叉熵 给定一个策略, 交叉熵就是在该策略下猜中颜色所需要的问题的期望值。更普…

LeetCode-56-合并区间

题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 可以使用 LinkedList&#xff0c;…

利用 IDEA IDE 的轻量编辑模式快速查看和编辑工程外的文本文件

作为程序员, 我们都知道 IDE 的很好用的, 它的文本编辑器功能也非常的强大, 用起来非常便捷. 在长年累月的使用中, 我们也变得对其非常熟悉, 以致于使用起其它简单地轻量级的文本编辑器来, 比如什么记事本, Notepad, UltraEdit 等等呀, 觉得既不方便又不熟悉. 关键是很多的操作…

原生微信小程序 动态(横向,纵向)公告(广告)栏

先看一下动态效果 Y轴滚动公告的原理是swiper组件在页面中的Y轴滚动&#xff0c;属性vertical&#xff0c;其余属性也设置一下autoplay circular interval"3000" X轴滚动的原理是&#xff0c;利用动画效果&#xff0c;将内容从右往左过渡过去 wxml&#xff1a; &l…

「Python|音视频处理|环境准备」如何在Windows系统下安装并配置音视频处理工具FFmpeg

本文主要介绍如何在Windows系统下安装并配置音视频处理工具FFmpeg&#xff0c;方便使用python进行音视频相关的下载或编辑处理。 文章目录 一、下载软件二、解压并配置三、验证安装 一、下载软件 首先要去 ffmpeg官网 下载软件包 由于上面直接下载的按钮是.tar.xz格式的。为了…

http协议与apache

http概念&#xff1a; 互联网&#xff1a;是网络的网络&#xff0c;是所有类型网络的母集 因特网&#xff1a;世界上最大的互联网网络。即因特网概念从属于互联网概念 万维网&#xff1a;万维网并非某种特殊的计算机网络&#xff0c;是一个大规模的、联机式的信息贮藏库&…

Redis基础知识

Redis基础知识 redis共有16个数据库&#xff0c;默认使用的是第0个 可以使用select进行切换数据库 # 切换数据库 127.0.0.1:6379> select 1 OK # 查看DB大小 127.0.0.1:6379[1]> DBSIZE (integer) 0查看当前数据库所有的key 127.0.0.1:6379> keys * #查看当前数据…

Sketch 98 中文版-mac矢量绘图设计

Sketch是一款专为Mac操作系统设计的矢量图形编辑软件&#xff0c;被广泛应用于UI/UX设计、网页设计、移动应用设计等领域。Sketch提供了各种工具和功能&#xff0c;包括绘图、图形设计、排版等&#xff0c;可以帮助设计师轻松地创建高质量的矢量图形和模型。Sketch的主要特点包…

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…

Pycharm链接远程mysql报错

Pycharm链接远程mysql配置及相应报错如下&#xff1a; 解决方法&#xff1a; 去服务器确认Mysql版本号&#xff1a; 我的Mysql为5.7.43&#xff0c;此时Pycharm mysql驱动为8.0版本&#xff0c;不匹配&#xff0c;所以需要根据实际的版本选择对应的驱动&#xff1b;选择对应的版…

Go并发可视化解释 - Select语句

昨天&#xff0c;我发布了一篇文章&#xff0c;用可视化的方式解释了Golang中通道&#xff08;Channel&#xff09;的工作原理。如果你对通道的理解仍然存在困难&#xff0c;最好呢请在阅读本文之前先查看那篇文章。作为一个快速的复习&#xff1a;Partier、Candier 和 Stringe…

WebGL非矩阵变换

目录 平移 示例代码&#xff1a; 齐次坐标矢量的最后一个分量w 旋转 p的坐标&#xff0c;可得等式 R1&#xff1a; 使用r、α、β来表示点p的坐标&#xff0c;可得等式 R2&#xff1a; 利用三角函数两角和公式&#xff0c;可得等式 R3&#xff1a; 最后&#xff0c;将…

无涯教程-进程 - 组会话控制

在本章中&#xff0c;我们将熟悉进程组&#xff0c;会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合&#xff0c;一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动 0、背景1、基本环境2、开发环境编译Qt MySql数据库驱动2.1 依赖说明2.2 MySQL驱动编译过程 3、交叉编译Qt MySql数据库驱动3.1 依赖说明3.3.1 如何在交叉编译服务器上找到mysql.h及相关头文件3.3.2 如果…

保姆级 Keras 实现 Faster R-CNN 十

保姆级 Keras 实现 Faster R-CNN 十 一. 建议区域矩形二. 定义 ProposalLyaer1. __init__函数2. build 函数3. call 函数3.1 生成 anchor_box3.2 找出 anchor 处最大分数, 最大分数对应的 anchor_box 和修正参数3. 3 修正 anchor_box3.4 完成 call 函数 4. compute_output_shap…

二级MySQL(九)——表格数据处理练习

在Mysql中&#xff0c;可以用INSERT或【REPLACE】语句&#xff0c;向数据库中已一个已有的表中插入一行或多行记录。 在Mysql中&#xff0c;可以用【DELETE】或【TRUNCATE】语句删除表中的所有记录。 在Mysql中&#xff0c;可以用【UPDATE】语句来修改数据表中的记录。 为了完…

windows系统 Fooocus 图片生成模型 ,4-6GB显存即可玩,27S/p

安装步骤: 1.下载程序代码框架,大小2GB ,下载 ​​​​​​https://github.com/lllyasviel/Fooocus/releases/download/1.0.35/Fooocus_win64_1-1-1035.7z 2.下载模型文件sd_xl_base_1.0_0.9vae.safetensors ,大小6GBhttps://huggingface.co/stabilityai/stable-diffusion-x…

[完美解决]Vue项目运行时出现this[kHandle] = new _Hash(algorithm, xofLen)

vue项目运行bug解决办法 一、问题内容二、问题出现的原因三、解决方法1、方法一(推荐)2、方法二(可以解决&#xff0c;但不太推荐) 一、问题内容 在github寻找一些vue项目clone到本地时候&#xff0c;npm i没有问题&#xff0c;但是npm run serve 或者npm run dev的时候会出现…

【mq】如何保证消息可靠性

文章目录 mq由哪几部分组成rocketmqkafka 为什么需要这几部分nameserver/zookeeper可靠性 broker可靠性 生产者消费者 mq由哪几部分组成 rocketmq kafka 这里先不讨论Kafka Raft模式 比较一下&#xff0c;kafka的结构和rocketmq的机构基本上一样&#xff0c;都需要一个注册…