23级第一次测试总结

前天进行了第一次测试,一共10道题只写出来6道题,题目本身难度不大,基本没什么算法,除了最后两道题目考察了双指针(滑动窗口)和深度搜索,但也仅仅只写出来了6道,还是太菜了

对于题目G和H这两道思维题也是没写出来,学的太死板,每次这种思维类的题目都不会写。

G - 题目7

我们定义n个整数的全排列 p 为 1, 2, ..., n (1~n每个数出现且只出现一次,顺序任意) ,定义全排列的价值X如下:

  • 首先,我们让 x 等于0;
  • 如果 x<p1,就让 x=x+p1,否则令x= 0;
  • 如果 x<p2, 就让x=x+p2, 否则令x= 0 ;
  • ...
  • 如果 x<pn,就让x=x+pn, 否则令x=0;
  • 一个全排列的价值为依次进行以上操作后x的值.

例如, 对于全排列 p=[4,5,1,2,3,6],价值 x在计算过程中的所有值如下: 0,4,9,0,2,5,11, 所以全排列的价值为 11.

给你一个整数 n. 请找出一个 n的全排列 p 使得其在n的所有全排列中价值最大. 如果有多种符合要求的全排列,输出任意一种.

输入

输入的第一行包含一个整数 t (1≤t≤97) — 测试样例的数量.

每个测试样例的输入仅包含一个整数 n (4≤n≤100),占据一行.

输出

对于每组测试样例, 输出 n 个整数 — 价值最大的n的全排列p .

输入案例

3
4
5
6
2 1 3 4
1 2 3 4 5
4 5 1 2 3 6

对于这一道题当时看到是全排列,第一想法是深搜,然而看了数据后感觉深搜很可能会超时,最后果然不出所料,之前也隐隐猜到了有什么规律,可惜实力不济没找到,

根据题解

答案一定是2*n-1,这里不知道为什么是这样,但也找不到反例,然后要做的操作是如何排列使答案最大价值为2*n-1,使最大价值为2*n-1只要最后两个数是n-1和n然后前面的所有数互相抵消就行了,这里要分奇数还是偶数,如果是偶数直接两个两个为一组前面的数大于后面的数就行,如果是奇数则消耗一个数再两个两个一组消耗掉,除了最后两个数。

代码如下:

#include<stdio.h>
int main()
{int t, n;scanf("%d", &t);while (t--){scanf("%d", &n);if (n % 2 == 0)//如果是偶数{for (int i = 1; i <= n - 2; i = i + 2)//两两一组前面的大于后面的{printf("%d %d ", i + 1, i);}printf("%d %d\n", n - 1, n);//最后输出最后两个数}else//如果是奇数{printf("1 ");//先输出1for (int i = 2; i <= n - 2; i = i + 2)//再两两一组互相抵消{printf("%d %d ", i + 1, i);}printf("%d %d\n", n - 1, n);}}return 0;
}

H - 题目8

机器人被放置在一个网格的左上角,由n行和m列组成,在单元格(1,1)。

在一步中,它可以移动到相邻的单元格,旁边有一边是当前的单元格:

  • (x,y)→(x,y+1);
  • (x,y)→(x+1,y);
  • (x,y)→(x,y−1);
  • (x,y)→(x−1,y)。

机器人不能移出网格。

单元格(sx,sy)包含一个致命的激光。如果机器人进入到距离激光小于或等于d的单元格,它就会被蒸发。两个单元格(x1,y1)和(x2,y2)之间的距离为|x1−x2|+|y1−y2|。

打印机器人可以在不被蒸发或移出网格的情况下到达单元格(n,m)所需的最小步数。如果无法到达单元格(n,m),则打印-1。

激光既不在起始单元格,也不在结束单元格。起始单元格与激光的距离始终大于d。

输入

第一行包含一个整数t(1≤t≤10^4)— 测试用例的数量。

每个测试用例的唯一一行包含五个整数n,m,sx,sy,d(2≤n,m≤1000;1≤sx≤n;1≤sy≤m;0≤d≤n+m)— 网格的大小,包含激光的单元格和激光的蒸发距离。

激光既不在起始单元格,也不在结束单元格((sx,sy)≠(1,1)和(sx,sy)≠(n,m)。起始单元格(1,1)与激光的距离始终大于d(|sx−1|+|sy−1|>d)。

输出

对于每个测试用例,打印一个整数。如果可以从(1,1)(1,1)到达单元格(n,m)(�,�),而不被蒸发或移出网格,则打印机器人到达目标所需的最小步数。否则,打印-1。

示例1

InputOutput
3
2 3 1 3 0
2 3 1 3 1
5 5 3 4 1
3
-1
8

 这一题的最短路径是固定的(当时还傻傻的用广搜找最短路径结果超时),只需要判断能不能到达终点就行了。

代码如下

#include<stdio.h>
#include<math.h>
int main()
{int t;scanf("%d", &t);while (t--){int n, m, sx, sy, d, i, j, flag = 0;scanf("%d %d %d %d %d", &n, &m, &sx, &sy, &d);if (abs(sx - n) + abs(sy - m) <= d)//如果覆盖终点{printf("-1\n");continue;}//如果不能到达终点if ((sx - 1 <= d && sy - 1 <= d) || (sx - 1 <= d && n - sx <= d) || (m - sy <= d && sy - 1 <= d) || (n - sx <= d && m - sy <= d)){printf("-1\n");continue;}printf("%d\n", n + m - 2);}return 0;
}

I - 题目9

Description

对一个给定的正整数 M,求出所有的连续的正整数段(每一段至少有两个数),这些连续的自然数段中的全部数之和为 M。

例子:1998+1999+2000+2001+2002=10000,所以从 1998 到 2002的一个自然数段为 M=10000 的一个解。

Input

包含一个整数的单独一行给出 M 的值(110≤M≤2,000,000)。

Output

每行两个正整数,给出一个满足条件的连续正整数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。

Sample 1

InputOutput
10000
18 142 
297 328 
388 412 
1998 2002

解题思路 

本题可以用两个指针指向范围的左边和右边,快指针一旦移动到快指针与慢指针区间大于等于m的时候结束再判断是否等于m如果等于输出慢指针和快指针的值,再移动慢指针。

代码如下

#include<stdio.h>
int main()
{int m, i, j = 1, he = 0;scanf("%d", &m);for (i = 1; i < m && i <= j; i++)//i为慢指针{while (he < m && j < m)//j为快指针,保证区间小于内he小于m{he += j;j++;}if (he == m)//如果等于m输出结果{printf("%d %d\n", i, j - 1);}he -= i;//慢指针移动}return 0;
}

J - 题目10

问题描述

一个重复数是一个在十进制表示中所有数字都是1的整数。按升序排列的重复数是1,11,111,…。

找到可以表示为恰好三个重复数之和的第N小的整数。

约束条件

  • N是一个介于1和333之间(包括边界值)的整数。

输入

输入以以下格式从标准输入中给出:

N

输出

输出答案。

示例 1

InputOutput
5
113

可以表示为恰好三个重复数之和的整数按升序排列为3,13,23,33,113。例如113可以表示为113=1+1+111。

请注意,这三个重复数不必互不相同。

示例 2

InputOutput
19
2333

示例 3

InputOutput
333
112222222233

 解题思路

本题是用深度搜索后,然后再升序排列,求出第n大小的数,这里大概要组合1400左右多的数再排列才能满足n为333的时候。

#include<stdio.h>
long long book[20], a[20] = { 0,1 }, sum = 0, n, h = 0, c[1000000] = { 0 };
void dfs(long long x,long long y)//dfs组合问题
{if (x == 4)//dfs深度为3 当组合有三个数的时候直接返回{h++;c[h] = sum;return;}long long i;for (i = y; i <= 18; i++){if (book[i] < 3)//每个数最多可以使用三次{book[i]++;sum += a[i];dfs(x + 1, i);book[i]--;//回溯sum -= a[i];if (h == 1400)//大概求出1400作用的组合可以满足n等于333的时候return;}}
}
int main()
{for (int i = 2; i <= 18; i++)//预处理重复数a[i] = a[i - 1] * 10 + 1;scanf("%lld", &n);//输入ndfs(1,1);for (int i = 1; i < h; i++)//选择排序{for (int j = i + 1; j <= h; j++){if (c[i] > c[j]){long long t = c[i];c[i] = c[j]; c[j] = t;}}}printf("%lld", c[n]);//输出结果return 0;
}

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

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

相关文章

2023 IoTDB Summit:清华大学软件学院长聘副教授龙明盛《IoTDB 新组件:内生机器学习》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

Day21- 回溯算法part01

一、组合 题目一&#xff1a;77. 组合 77. 组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案 combine 函数初始化结果变量和当前组合变量&#xff0c;然后调用 backtrack 函数来生成所有组合。backtrack 函数…

中国区县绿地曝光率数据,shp+excel格式,区县精度

基本信息. 数据名称: 中国区县绿地曝光率数据 数据格式: shpexcel 数据精度&#xff1a;区县 数据几何类型: —— 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 字段列表&#xff1a; 序号字段名称字段说明1xzqhdm_3区县代码2xzqhmc_3区县名称4xzqhm…

【2023年度总结】蜕变与挑战

2023年是意义重大的一年&#xff0c;这一年里&#xff0c;我从大三到了大四&#xff0c;焦虑满满&#xff0c;参加比赛&#xff0c;拿到保研名额&#xff0c;体验实习&#xff0c;之前很少在年末对自己的一年进行回顾和总结。 一月 阳了&#xff0c;寒假期间就窝在家里&#…

web网站,可当期末作业,随机一言,天气,时钟,音乐等综合网站

文章目录 主页面时间胶囊底部条文心一言音乐播放器天气时钟禁用右键其他每次刷新页面会随机更换壁纸新春版 主页面 时间胶囊 底部条 文心一言 点击可随机变化文心一言 音乐播放器 天气时钟 禁用右键 其他 每次刷新页面会随机更换壁纸 新春版

C#编程-描述内存分配

描述内存分配 分配给变量的内存通过两种方式引用&#xff1a;值类型和引用类型。内置数据类型&#xff0c;诸如int、char和float都是值雷兴国。当您声明int变量时&#xff0c;编译器会分配一个内存块以保持该整数值。请思考以下语句&#xff1a; int Num 50;上述语句为保存值…

API 安全设计的建议

1、使用 HTTPS 现在的 Web 已经不是之前那个年代&#xff0c;标准的 HTTP 满足不了 Web 安全需求。而各大浏览器供应商开始标记不使用安全层的 URL&#xff0c;你的 API 也可以考虑开始动手做这件事——用 HTTPS。HTTPS 采用传输层安全性协议&#xff08;TLS&#xff09;对传输…

kubernetes(二)创建集群

kubernetes&#xff08;一&#xff09;概述与架构 云原生实战 语雀 官网 Kubernetes 文档 | Kubernetes 更新&#xff1a;移除 Dockershim 的常见问题 | Kubernetes B站课程&#xff1a;https://www.bilibili.com/video/BV13Q4y1C7hS/?p26 安装版本说明&#xff1a; 视频教程…

【nginx】linux(centos版本)安装nginx

目录 一、下载安装包1.1 官网下载1.2 linux命令下载 二、安装2.1 安装依赖包2.2 安装nginx 三、启动四、访问五、关停六、重载配置 一、下载安装包 1.1 官网下载 1.官网地址 https://nginx.org/en/download.html2.版本说明 1.Mainline version-主线版本 2.Stable version-稳…

LeetCode 2487. 从链表中移除节点:单调栈

【LetMeFly】2487.从链表中移除节点&#xff1a;单调栈 力扣题目链接&#xff1a;https://leetcode.cn/problems/remove-nodes-from-linked-list/ 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输…

聊一聊 .NET高级调试 内核模式堆泄露

一&#xff1a;背景 1. 讲故事 前几天有位朋友找到我&#xff0c;说他的机器内存在不断的上涨&#xff0c;但在任务管理器中查不出是哪个进程吃的内存&#xff0c;特别奇怪&#xff0c;截图如下&#xff1a; 在我的分析旅程中都是用户态模式的内存泄漏&#xff0c;像上图中的…

openlayer 轨迹动画(方式一)使用ol-ext

ol-ext官方示例地址&#xff1a;ol-ext 示例代码 实测可用 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>点沿线动画</title><!-- Openlayers -->…

使用pnnx将Torch模型转换为ncnn

1. 引言 以往我们将Torch模型转换为ncnn模型&#xff0c;通常需经过Torch–>onnx&#xff0c;onnx–>ncnn两个过程。但经常会出现某些算子不支持的问题。 ncnn作者针对该问题&#xff0c;直接开发一个Torch直接转换ncnn模型的工具 (PNNX)&#xff0c;以下为相关介绍及使…

Linux端口转发的几种常用方法

1. SSH 端口转发 SSH 提供了一个非常有意思的功能&#xff0c;就是端口转发&#xff0c;它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发&#xff0c;并且自动提供了相应的加密及解密服务。 (1) 本地端口转发 ssh -fgN -L 2222:localhost:22 localhost (2) 远程端口转…

java查询结果的处理

java查询结果的处理 为了方便使用sql的数据&#xff0c;在查询后mysql会把数据封装到java里面的resultset对象&#xff0c;然后我们需要把resultset里的数据再封装到我们自己创建的对象中&#xff0c;比如Student对象&#xff1a; public class Student {int number;String n…

超快速排序

title: 超快速排序 date: 2024-01-05 11:51:43 tags: 逆序对 categories: 算法进阶指南 题目大意 解题思路 逆序数是一个序列每一个数的左边有多少比他本身大的值。将一个序列排序完整&#xff0c;最小交换次数即是逆序数之和。使用归并排序的同时&#xff0c;将每一个逆序数求…

C#用StringBuilder高效处理字符串

目录 一、背景 二、使用StringBuilder便捷、高效地操作字符串 三、实例 1.源码 2.生成效果 四、实例中知识点 1.StringBuilder类 &#xff08;1&#xff09;构造函数 &#xff08;2&#xff09;属性 &#xff08;3&#xff09;方法 2.Environment.NewLine 属性 一、…

SurfaceView和TextureView理解相关

一、为什么要使用SurfaceView 我们知道View是通过刷新来重绘视图&#xff0c;系统通过发出VSSYNC信号来进行屏幕的重绘&#xff0c;刷新的时间间隔是16ms,如果我们可以在16ms以内将绘制工作完成&#xff0c;则没有任何问题&#xff0c;如果我们绘制过程逻辑很复杂&#xff0c;…

SSD 颗粒还要涨价50%,入手前小心速度陷阱

大伙应该感受到了&#xff0c;自今年年中开始 SSD 普遍开始了小幅涨价。 但即便涨价到现在&#xff0c;NAND 厂商仍属于倒亏状态... 原因很简单&#xff0c;库存太多。 根据 TrendForce 的报道&#xff0c;主要制造商价格将需要再次上涨 40% 以上才能不亏&#xff0c;而达到盈…

【ZYNQ入门】第五篇、AXI HP口读写数据原理

目录 第一部分、AXI总线的相关知识 1、ZYNQ架构 2、AXI 总线和 AXI 接口以及 AXI 协议 3、AXI 总线与 ZYNQ 的关系 4、AXI 总线介绍 5、AXI 接口介绍 6、AXI 协议介绍 7、AXI高效传输的原因 8、常见总线汇总 9、HP接口写时序配置 10、HP DDR的地址分配 11、缓存一…