2024年暑假ACM集训第1场

A:小青蛙跳台阶

题目描述

想必你应该做过这么一道题:一只小青蛙一次可以跳1级台阶,也可以一次跳2级台阶。求该青蛙跳上第N级台阶总共有多少种跳法?(假设小青蛙的初始位置是第0级台阶)
现在小青蛙遇到了一点麻烦,因为其中有一级台阶是坏的,小青蛙不能跳到这一级。假设坏掉的这一级台阶是第M级,且1<M<N,请问此时小青蛙跳到第N级台阶有多少种跳法?

输入

单组输入。
输入一行包含两个正整数N和M,N<=20,1<M<N,两者之间用英文空格隔开。

输出

输出小青蛙跳到第N级台阶的跳法数。

样例输入 Copy
5 3
样例输出 Copy
2
#include <iostream>
using namespace std;
int a[30];
int main()
{int n, m;cin >> n >> m;a[0] = 1, a[1] = 1;for (int i = 2; i <= n; i++)if (i == m)a[i] = 0;elsea[i] = a[i - 1] + a[i - 2];cout << a[n] << endl;return 0;
}

 B:众数之和

题目描述

众数是一组数据中出现次数最多的那个数。
现输入一个正整数序列,请找出其中的众数。如果只有一个众数,输出该众数;如果有多个众数,输出这些众数的和。

输入

单组输入。
第1行输入一个正整数N,表示输入序列中正整数的个数,N不超过1000。
第2行输入N个正整数,每个正整数均不超过10^6,两两之间用空格隔开。

输出

如果输入序列中只有一个众数,输出该众数;如果有多个众数,输出这些众数的和。

样例输入 Copy
10
3 2 5 2 1 3 6 5 2 5
样例输出 Copy
7
#include <iostream>
using namespace std;
int a[1000005];
int main()
{int n;cin >> n;int s = 0;for (int i = 0; i < n; i++){int x;cin >> x;a[x]++;s = max(s, a[x]);}int sum = 0;for (int i = 1; i <= 1000000; i++)if (a[i] == s)sum += i;cout << sum << endl;return 0;
}

 C:一二四八

题目描述

Kimi拥有一套数字卡片,每张卡片上标有1、2、4和8这四个数字中的一个。
现在Kimi需要取出若干张卡片,使得这些卡片上的数字之和等于N。
请问Kimi最少需要取出多少张卡片?(四种数字卡片的数量不限)

输入

单组输入。
输入一个正整数N,表示取出的卡片上的数字之和,N不超过1000。

输出

输出最少需要取出的卡片数量。

样例输入 Copy
11
样例输出 Copy
3
#include <iostream>
using namespace std;
int main()
{int n;cin >> n;int s = 0;int a[4] = {8, 4, 2, 1};for (int i = 0; i < 4; i++){int sum = n / a[i];s += sum;n -= sum * a[i];if (n == 0)break;}cout << s << endl;return 0;
}

 D:十六进制回文数

题目描述

小米在学习进制转换,今天学习的内容是十进制和十六进制之间的转换。
小米突然想到一个问题,有没有一些十进制正整数,它本身不是回文数,但是转成十六进制(去掉前导0)之后会变成回文数呢?
回文数是指那些从左往右和从右往左读都相同的数字,例如12321、ABBA等。十六进制中包含0-9以及A、B、C、D、E和F一共16个字符。
现在请你编写一个程序,统计在十进制正整数M和十进制正整数N之间(1<=M<N<=1000000)有多少个满足要求的数字(本身不是回文数,转成十六进制并去掉前导0之后会变成回文数)?如果在M和N之间一个满足要求的数字都没有则输出0。
【注意:一位数也是回文数。】

输入

单组输入。
输入两个十进制正整数M和N,1<=M<N<=1000000。两者之间用英文空格隔开。

输出

输出在M和N之间(包括M和N),满足本身不是回文数,但是转成十六进制并去掉前导0之后会变成回文数的数字的个数。如果在M和N之间一个满足要求的数字都没有则输出0。

样例输入 Copy
1 20
样例输出 Copy
6
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool fun1(string s)
{int n = s.size();for (int i = 0; i < n / 2; i++)if (s[i] != s[n - i - 1])return false;return true;
}
string fun2(int n)
{string s = "";while (n > 0){int t = n % 16;if (t < 10)s += (char)(t + '0');elses += (char)(t - 10 + 'A');n /= 16;}reverse(s.begin(), s.end());return s;
}
int main()
{int m, n;cin >> m >> n;int sum = 0;for (int i = m; i <= n; i++)if (!fun1(to_string(i)) && fun1(fun2(i)))sum++;cout << sum << endl;return 0;
}

 E:lsx的立方体

题目描述

给你一个边长为n的立方体。求立方体空间内可构成等边三角形的数目。等边三角形每边必须平行于oxy、oxz、oyz的某个表面,每个点只能在立方体的边界或内点上,每个点的三个坐标x、y、z必须是整数。

样例输入 Copy
1
样例输出 Copy
8
#include<stdio.h>
#include<math.h>
int main()
{int n,sum=0,i;while(~scanf("%d",&n)){for(i=1;i<=n;i++){sum+=pow(n-i+1,3);}printf("%d\n",sum*8);}return 0;
}

 F:X星切糕

题目描述

据说在X星上有一种切糕,这种切糕呈细长形状,并且按长度来进行售卖。
更有意思的是,不同长度的切糕其价格不一样。定价规则如下:
1单位长度:价值为3枚X星币。
2单位长度:价值为7枚X星币。
3单位长度:价值为11枚X星币。
4单位长度:价值为15枚X星币。
5单位长度:价值为20枚X星币。
现有一块N个单位长度的切糕,需要将其切成若干小段,每一小段的长度均不超过5个单位长度,请问可以得到的最大价值是多少枚X星币?

输入

单组输入。
输入一个正整数N表示切糕的总长度,N<=10^6。

输出

输出切成小段之后可以得到的最大价值(X星币的枚数)。

样例输入 Copy
12
样例输出 Copy
47
#include<stdio.h>
int main()
{int n,s;scanf("%d",&n);s=20*(n/5);n%=5;if(n==4)s+=15;else if(n==3)s+=11;else if(n==2)s+=7;else if(n==1)s+=3;printf("%d\n",s);return 0;
}

 G:解密

题目描述

X星情报人员截获了Z星人的一封密文,但是破解这封密文需要使用一个字符串密钥。这个重要的密钥隐含在一段文本字符串中。
X星情报人员通过对这段文本字符串进行分析,发现在这段字符串中存在一些相同的子串,即出现次数大于等于2次的子串,而最长相同子串即为解密所需的密钥。该文本字符串只包含26个小写字母、26个大写字母和0-9十个数字,不包含任何其他标点和字符。
值得注意的是,两个相同的子串不允许出现交叉和重叠,即这两个相同子串是完全独立的。
现在给你一段文本字符串,请你编写一个程序计算出最长相同子串的长度。

输入

单组输入。
输入一个长度不超过1000的文本字符串,只包含26个小写字母、26个大写字母和0-9十个数字,不包含任何其他标点和字符。
输入保证文本字符串中至少存在两段长度大于等于1的相同子串。

输出

输出在输入字符串中包含的最长相同子串的长度。

样例输入 Copy
12ABCDEABCF
样例输出 Copy
3
提示

在输入字符串中包含的最长相同子串为“ABC”,其长度为3。

#include <iostream>
#include <string>
using namespace std;
string s;
int n, sum;
bool fun(int mid)
{for (int i = 0; i + mid - 1 < n; i++)for (int j = i + mid; j + mid - 1 < n; j++){bool t = true;for (int k = 0; k < mid; k++)if (s[i + k] != s[j + k]){t = false;break;}if (t)return true;}return false;
}
int main()
{cin >> s;n = s.size();int l = 1, r = n / 2;while (l <= r){int mid = (l + r) / 2;if (fun(mid)){sum = mid;l = mid + 1;}elser = mid - 1;}cout << sum << endl;return 0;
}

 H:第K大数

题目描述

小米这几天在学习排序。今天他遇到这么一道题:
随机生成N个正整数,其中可能存在一些相同的数字,现在需要找到这N个正整数中第K个最大的整数。需要注意的是,如果存在多个正整数的大小相同,则相同的数字只能被计算一次。
你能否编写一个程序帮助小米找到这个第K大的正整数呢?

输入

单组输入。
第1行包含两个正整数N和K,两者之间用英文空格隔开,其中N<=10^6,K<=10^3。
第2行为N个正整数,两两之间用英文空格隔开。

输出

输出第K大的正整数;如果第K大正整数不存在,则输出“-1”。

样例输入 Copy
8 2
4 2 1 3 5 6 5 6
样例输出 Copy
5
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000010;
int a[N];
int main()
{int n, k;cin >> n >> k;for (int i = 0; i < n; i++)scanf("%d", &a[i]);sort(a, a + n);reverse(a, a + n);int s = 1;for (int i = 1; i < n; i++) {if (a[i] != a[i - 1]) s++;if (s == k) {printf("%d\n", a[i]);return 0;}}printf("-1\n");return 0;
}

 I:字符串变换

题目描述

Kimi同学需要对一个全部由英文字母组成的字符串进行变换,其变换规则如下:
(1) 原始字符串的总长度为N,每次从左到右取长度为M(2<=M<=N)的子字符串进行变换;如果剩余字符串长度不到M,则取剩余全部字符串进行变换。
(2) 每次取长度为M的子字符串进行变换时需要将子串中的小写字母全部改为大写字母,然后反转该子串。
请编写一个程序帮助Kimi实现上述字符串变换,输出变换之后的字符串。

输入

单组数据。
第1行输入两个正整数N和M,N表示原始字符串的长度,N<=1000;M表示每次变换时所取的子串长度,2<=M<=N。
第2行输入一个长度为N,且只包含大写和小写英文字母的字符串。

输出

输出变换之后的字符串。

样例输入 Copy
10 4
ABcdACbbEA
样例输出 Copy
DCBABBCAAE
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() 
{int n, m;cin >> n >> m;string s;cin >> s;for (int i = 0; i < n; i += m) {int sum = min(i + m, n);for (int j = i; j < sum; j++)if (islower(s[j]))s[j] = toupper(s[j]);reverse(s.begin() + i, s.begin() + sum);}cout << s << endl;return 0;
}

 J:评分计算器

题目描述

某电子商务网站对于商家的评价体系是1-5星评价体系,用户在完成订单之后可以对商家打1/2/3/4/5星,而在客户端上,商家的评级却不一定是整数,而是会显示小数点后的一位。很显然这就需要一个计算器了,小明拥有了一些商户的评价数据,希望可以计算出商家在客户端上显示出的评分。 
这个评分的计算非常简单,就是对该商家的所有客户的星级评价做求一个平均,然后去尾法显示小数点后的一位即可,例如平均得分是3.55,则显示的是3.5。例如某商家获得了1-5星评价各一个,则显示的评分是(1+2+3+4+5)/5=3.0。
如果商家没有获得评价,则显示0.0。  

输入

输入包含5个整数,依次分别表示商家获得1星到5星的评价数量,每一种评价的数量都不大于1000。

输出

输出仅包含一个保留一位的小数,表示商家在客户端上显示的评级。

样例输入 Copy
2 2 1 1 2
样例输出 Copy
2.8
#include<stdio.h>
int main()
{int a,b,c,d,e;float s;scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);if(a+b+c+d+e==0)printf("0.0\n");else{s=(float)(a+2*b+3*c+4*d+5*e)/(a+b+c+d+e);s=(float)((int)(s*10))/10;printf("%.1f\n",s);}return 0;
}

 K:缩页

题目描述

某文本编辑软件的打印功能可以根据输入的页码来打印所需的页面。有时用户会输入“1,2,3,1,1,5,6”,但是实际上需要的打印的只有“1-3,5-6”这五页,这时就需要软件对用户输入的页码进行处理。

现在请你将用户输入的页码表示为l1-r1,l2-r2……的形式,如果li=ri,则只输出li即可,中间用逗号隔开。

输入

输入第一行包含若干个整数,最少一个,最多100000个,中间用逗号隔开(页号不大于100000)。

输出

输出包含若干个形如li-ri形式的页码段,中间用逗号隔开。

样例输入 Copy
1,2,3,1,1,2,6,6,2
样例输出 Copy
1-3,6
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int a[1000005];
int main()
{string s;getline(cin, s); int n = 0;for (int i = 0; i < s.size(); i++){ if (s[i] == ',')continue;    int j = i, t = 0; while (j < s.size() && s[j] != ','){                  t = t * 10 + s[j] - '0'; j++;}a[n++] = t; i = j;       }sort(a, a + n);       n = unique(a, a + n) - a;int x = a[0],y = a[0];          for (int i = 1; i < n; i++){ if (a[i] == y + 1)y = a[i];else{if (x == y)cout << x;elsecout << x << "-" << y;cout << ",";x = a[i];y = a[i];}}if (x == y)cout << x;elsecout << x << "-" << y;return 0;
}

 L:a碟的棋盘

题目描述

a碟家里有一副国际象棋,他发现国际象棋的棋盘是黑白相间的。
国际象棋的棋盘是8*8大小的,不过他现在想让你打印出一个n(n为偶数)的国际象棋棋盘。
我们用字符'1'表示黑格,'0'表示白格。
棋盘左上角的格子为白格
规定与白格相邻的格子全部为黑格,与黑格相邻的格子全部为白格。

输入

仅一行一个正整数n(2≤n≤1000),保证n为偶数。

输出

输出一个01矩阵,表示国际象棋的棋盘。

样例输入 Copy
8
样例输出 Copy
01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010
#include<iostream>
using namespace std;
int main()
{int n;while(cin>>n){string a="",b="";for(int i=1; i<=n/2; i++){a+="01";b+="10";}for(int i=1; i<=n; i++)if(i%2)cout<<a<<endl;elsecout<<b<<endl;}return 0;
}

 

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

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

相关文章

Docker快速搭建WordPress博客系统网站

WordPress 是一款广泛使用的开源内容管理系统(CMS),用于创建和管理网站和博客。 主要功能: 易于使用的界面:WordPress 提供了一个直观的后台管理界面,使用户能够轻松创建、编辑和管理网站内容。 主题和模板:WordPress 提供了各种主题和模板,可根据网站需求进行选择和自…

MQ消息队列+Lua 脚本实现异步处理下单流程

具体实现和代码可参考我以前做过的笔记&#xff1a;《黑马点评》异步秒杀优化|消息队列 回顾一下下单流程&#xff1a; 用户发起请求 会先请求Nginx,Nginx反向代理到Tomcat&#xff0c;而Tomcat中的程序&#xff0c;会进行串行工作&#xff0c; 分为以下几个操作&#xff1…

前端(1)HTML

1、标签 创建1.html文件&#xff0c;浏览器输入E:/frontheima/1.html&#xff0c;可以访问页面 页面展示 在VSCODE安装IDEA的快捷键&#xff0c;比如ctld复制一行、ctrlx剪切 <p id"p1" title"标题1">Hello,world!</p> <p id"p2"…

聊一聊知识图谱结合RAG

因为最近在做一些关于提高公司内部使用的聊天机器人的回答准确率&#xff0c;并且最近微软官方也是开源了一下graphrag的源码&#xff0c;所以想聊一聊这个知识图谱结合rag。 rag在利用私有数据增强大模型回答的领域是一种比较典型的技术&#xff0c;也就是我们提出问题的时候&…

网络安全新纪元:挑战、趋势与应对策略

引言 随着数字化时代的到来&#xff0c;网络安全不仅成为国家稳定发展的重要保障&#xff0c;也是国家安全的重要组成部分。近年来&#xff0c;网络安全领域面临着前所未有的挑战与机遇&#xff0c;一系列引人注目的趋势和预测逐渐浮出水面。本文将从网络安全的现状、面临的挑…

排序系列 之 希尔排序

&#xff01;&#xff01;&#xff01;排序仅针对于数组哦本次排序是按照升序来的哦 介绍 英文名为ShellSort&#xff0c;又称“缩小增量排序”是直接插入排序算法的一种更高效的改进版本希尔排序是把记录按下标的指定步长分组&#xff0c;然后按照每组使用直接插入排序&#…

[C++] 模板编程-02 类模板

一 类模板 template <class T或者typename T> class 类名 { .......... } 1.1 两种不同的实现 在以下的两种实现中,其实第一种叫做成员函数模板&#xff0c;并不能称为类模板因为这种实现,我们在调用时,并不需要实例化为Product这个类指定指定特定类型。 // 实现1 clas…

C++程序的UI界面闪烁问题的解决办法总结

Windows C++程序复杂的UI界面要使用多种绘图技术(使用GDI、GDI+、ddraw、D3D等绘图),并要贴图去美化,在窗口移动或者改变大小的时候可能会出现闪烁。下面罗列一下UI界面产生闪烁的几种可能的原因,并给出相应的解决办法。 1、原因一 如果熟悉显卡原理的话,调用GDI函数向屏…

【动态规划】不同路径

不同路径&#xff08;难度&#xff1a;中等&#xff09; AC代码 有点水 class Solution { public:int uniquePaths(int m, int n) {//以m为行&#xff0c;n为列&#xff0c;创建二维数组vector <vector<int>> dp(m1,vector<int>(n1));dp[0][1]1;dp[1][0]1;…

内网渗透—内网穿透工具NgrokFRPNPSSPP

前言 主要介绍一下常见的隧道搭建工具&#xff0c;以此来达到一个内网穿透的目的。简单说一下实验滴环境吧&#xff0c;kali作为攻击机&#xff0c;winserver2016作为目标靶机。 kali 192.168.145.171 winserver2016 10.236.44.127 显然它们处于两个不同的局域网&#xff0c…

Android 软键盘挡住输入框

Android原生输入法软键盘挡住输入框,网上各种解法,但不起效。 输入框都是被挡住了,第二张图的小点,实际就是输入法的光标。 解法: packages\inputmethods\LatinIME\java\res\values-land config.xml <!-- <fraction name="config_min_keyboard_height"&g…

第12周 分布式锁:Redisson框架应用(❤❤❤❤❤)

第12-2周 Redisson分布式锁框架 1. 整合Redisson1.1 依赖1.2 方式一:通过配置类配置Redisson1.3 应用简单应用看门狗模式可重入锁公平锁联锁红锁(已弃用)读写锁信号量(限流作用)闭锁**********************************************************官方文档 1. 整合Redisson 1.1…

JavaWeb--Servlet和JSP的基本使用

JavaWeb--Servlet和JSP的基本使用 文章说明servlet和jsp的发展历程最早的手动拼接html页面的servlet使用示例采用jsp技术进行交互与展示页面标签jsp与servlet共同使用、分层处理示例项目下载 文章说明 介绍了javaWeb中Servlet和JSP的基本使用&#xff0c;尽管它们的技术相对比较…

【python中级】 pyinstaller打包可执行程序的说明

【python中级】 pyinstaller打包可执行程序的说明 1.背景2.文档3.总结1.背景 相关博客: 【python中级】 pyinstaller打包python应用程序(1) https://blog.csdn.net/jn10010537/article/details/111058613【python中级】 pyinstaller打包cv.dnn.readNet(xml,bin)推理代码失…

Spring Boot集成Redis与Lua脚本:构建高效的分布式多规则限流系统

文章目录 Redis多规则限流和防重复提交记录访问次数解决临界值访问问题实现多规则限流先确定最终需要的效果编写注解&#xff08;RateLimiter&#xff0c;RateRule&#xff09;拦截注解 RateLimiter 编写lua脚本UUID时间戳编写 AOP 拦截 总结 Redis多规则限流和防重复提交 市面…

Unity在虚拟现实(VR)游戏开发中的优势

Unity引擎是一个功能强大的游戏开发平台&#xff0c;它在虚拟现实(VR)游戏开发中展现出了许多显著的优势。以下是Unity在VR游戏开发中的主要优势&#xff1a; 跨平台支持 Unity引擎支持将游戏部署到多个平台&#xff0c;包括PC、控制台、移动设备、VR/AR设备等。这种跨平台能…

在CentOS 7上安装和使用PostgreSQL的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 关系数据库管理系统是许多网站和应用程序的关键组成部分。它们提供了一种结构化的方式来存储、组织和访问信息。 PostgreSQL&…

每天一个数据分析题(四百五十)- 数据清洗

数据在真正被使用前需进行必要的清洗&#xff0c;使脏数据变为可用数据。下列不属于“脏数据”的是&#xff08;&#xff09; A. 重复数据 B. 错误数据 C. 交叉数据 D. 缺失数据 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据…

非线性校正算法在红外测温中的应用

非线性校正算法在红外测温中用于修正传感器输出与实际温度之间的非线性关系。红外传感器的输出信号&#xff08;通常是电压或电流&#xff09;与温度的关系理论上是线性的&#xff0c;但在实际应用中&#xff0c;由于传感器特性的限制&#xff0c;这种关系往往呈现出非线性。非…

好书推荐 -- 《精通推荐算法》

新书发布&#xff0c;京东限时15天内5折优惠&#xff0c;半天即可送到。 图书封底有读者微信群&#xff0c;作者也在群里&#xff0c;任何技术、offer选择和职业规划的问题&#xff0c;都可以咨询。 《精通推荐算法》&#xff0c;限时半价&#xff0c;半日达https://u.jd.com…