当前位置: 首页 > news >正文

ACM第三次考核题解

ACM第三次考核题解

题目序号难度题目编号题目考察知识点
1签到题A这是一道很难的题!!!输出
2迷之难度F神说要有光,于是有了手电筒贪心
3简单BThis is a real English problem!思维 英语
4简单C玩具简单排序
5简单I“近义词”字符数组
6一般G一起来运动!!二分搜索
7一般E这糖保甜吗?GCD 模拟
8一般K卖教材模拟
9一般D简单切割小游戏结构体运用
10一般J简单截断前缀和
11困难M马学长的小游戏博弈
12困难H分提拉米苏二分答案
13困难L算两次数学

A 这是一道很难的题!!!

print("想看马学长跳舞")

F 神说要有光,于是有了手电筒

需要推出一个结论:当最大的电池电量高于其他所有电池电量,则可以把其他电池给消耗完;如果不能,其他电池可以相互搭配, 11 1 1 11地消耗,始终能够把所有的电池电量和 ÷ 2 ÷2 ÷2(向下取整)消耗完,比如样例中 222 2 2 2 222 3 3 3个电池,可以用第一个电池和第二个电池消耗 1 1 1的电量,然后再和第三个电池消耗1的电量,最后第二个和第三个一起消耗 1 1 1的电量。

#include <iostream>
using namespace std;
#define ll long long
int main() {ll sum = 0, ans = 0, n = 0, a = 0;cin >> n;for (int i = 0; i < n; i++) {cin >> a;ans = max(a, ans);sum += a;}if (ans > sum / 2) cout << sum - ans;else cout << sum / 2;return 0;
}

B This is a real English problem!

题意:对于给定一个质数 n n n,输出一个最小的质数 m m m使得 n + m n+m n+m是合数。

这是一个很简单的题目,可以证明答案不是 2 2 2就是 3 3 3。因为如果是奇数+3之后一定为偶数,一定为合数,但需要考虑 + 2 +2 +2后是不是合数,因为此题找的是最小的 m m m,偶数 + 2 +2 +2仍然为偶数,一定是合数。

#include<bits/stdc++.h>
using namespace std;
int n;
bool check(int x){for(int i = 2 ; i <= n ; i++)if(x%i==0) return true;return false;
}
int main()
{cin >> n;if(check(n+2)) cout << 2;else cout << 3;return 0;
}

C 玩具

/*
* 本题思路较为简单就是先排序然后从后往前取最大的那个就可以了
* 如果你觉得的冒泡太麻烦,可以去学一下 C++ 用 C++ 的 algorithm 头文件里的 sort 函数进行排序 
*/
#include <stdio.h>
#define N 1010int a[N];int main()
{int n, sum = 0;scanf("%d", &n);for (long long int i = 1; i <= n; i ++ )scanf("%d", &a[i]);// 对数组进行排序for (int i = 1; i < n; i ++ ) for (int j = 1; j <= n - i; j ++ ) if (a[j] > a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}// 从后往前取,两个两个取,只把大的那个算入结果内for (long long int j = n; j >= 1; j -- ) {sum += a[j];j --; // 略过下一个}printf("%d\n", sum);return 0;
}
//-------------- 我是一个分割线 -----------------------
/*
* 如果你用 c++ 并使用 algorithm 这个头文件
* 第18行至第24行的排序算法可以替换成下面这行代码 sort(a + 1, a + 1 + n); 
*/ 

I “近义词”

看了题目大家应该都知道是直接遍历比较就可以,最主要的是怎么存多个字母,因为比较的字符串是在最后给出,这里提供四个思路:

1.用二维字符数组

2.用一维字符数组(但计算位置时需要退一下坐标)

3.用c++的vector容器

4.用c++的string数组

下面给出两种解法1和3的代码

#include <stdio.h>
int main()
{int n,m;int num=0;int tem=0;char a[1100][1100];scanf("%d%d",&n,&m);for(int i=0;i<=n;i++){scanf("%s",a[i]);}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(a[i][j]!=a[n][j])tem++;if(tem>2)break;}if(tem<=2)num++;tem=0;}printf("%d",num);return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int n,m;
vector<string> v;
string s;
int ans;
int main()
{cin >> n >> m ;for(int i = 1 ; i <= n ; i ++){string s;cin >> s;v.push_back(s);}cin >> s;for(int i = 0 ; i < v.size() ; i ++){int t = 0;string ss = v[i];for(int i = 0 ; i < ss.size() ; i++){if(ss[i] != s[i]) t++;}if( t <= 2) ans ++;//cout << t << endl;}cout << ans;
}

G 一起来运动!!

这题本意是靠二分,但由于出题人疏忽,数据没有捏好,让你们 O ( n 3 ) O(n^3) O(n3)给过了,气死了!!!

请添加图片描述

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 1100;
int a[N];
int n;int main() {cin >> n;for(int i = 0; i < n; i ++) cin >> a[i];sort(a, a + n);int ans = 0;for(int i = 0; i < n; i ++) {for(int j = i + 1; j < n; j ++) {int l = lower_bound(a , a + n, 2 * a[j] - a[i]) - a;int r = upper_bound(a , a + n, 3 * a[j] - 2 * a[i]) - a;ans += r - l;}}cout << ans << endl;return 0;
}

E 这糖保甜吗?

#include<stdio.h>
#include<math.h>int GCD(int m, int n)
{int tmp;m = abs(m);n = abs(n);// 保证后续m%n为较大数除以较小数if (m<n){tmp = m;m = n;n = tmp;}// 辗转相除的过程,终止条件是余数为0while (m % n != 0){tmp = m;m = n;n = tmp % n;}// 返回除数(较小数)return n;
}int main() {int a, b, c, d;int gcd; // 最大公约数int den, num; // 分子num 分母denint op; // 操作数scanf("%d",&op);scanf("%d %d %d %d",&a,&b,&c,&d);gcd = GCD(b, d);// 以下是分数运算过程// 通分——分母最大den = b * d / gcd;// den/b 为分母扩大了多少倍 分子也要相应扩大倍数if (op == 1)num = a * (den / b) + c * (den / d);	elsenum = a * (den / b) - c * (den / d);// 以下是分数化到最简过程// 避免输出0/nif (num == 0) {printf("0\n");} else if (num == den) {printf("1\n");}else {gcd = GCD(num, den); num = num / gcd;den = den / gcd;printf("%d/%d",num,den);}return 0;
}

K 卖教材

根据题意模拟即可,但需要注意的是当给20元找零的时候需要先使用 5 + 10 5+10 5+10,如果没有再考虑 5 + 5 + 5 5+5+5 5+5+5

#include <bits/stdc++.h>
using namespace std;
int num5,num10,num20;
int ans=0;
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);if(x==5) {num5++;ans++;}else if(x==10){if(num5>0){num5--;num10++;ans++;}else {break;}}else {if(num5>0&&num10>0){num5--;num10--;num20++;ans++;}else if(num5>=3){num5-=3;num20++;ans++;}else {break;}}}printf("%d",ans*5);return 0;
}

D 简单切割小游戏

使用结构体存每一段,排序之后贪心地从最后一个位置切割(这也是怎么排序的依据)

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5+5;
struct node{int a, b;
}s[N];
bool cmp(node x, node y){if(x.b == y.b){return x.a < y.a;}return x.b < y.b;
}
void solve()
{int n, m;scanf("%d%d",&n,&m);for(int i = 0;i < m;i++){scanf("%d%d",&s[i].a,&s[i].b);if(s[i].a > s[i].b)swap(s[i].a,s[i].b);}sort(s,s+m,cmp);int flag = 0, ans = 0;for(int i = 0;i < m;i++){if(flag <= s[i].a){flag = s[i].b;ans++;}}printf("%d",ans);
}
int main()
{solve();return 0;
}

J 简单截断

巧妙地运用了前缀和,第一个切割点一定在所有数和的 1 3 \frac{1}{3} 31处,而第二个切割点一定在所有数和的 2 3 \frac{2}{3} 32

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int sum[N];
int n;
int main(){cin >> n;for(int i = 1 ; i <= n ; i++){int x;cin >> x;sum[i] = sum[i-1] + x;}if(sum[n]%3!=0){cout << 0;return 0;}long long cnt = 0,ans = 0;for(int i = 1 ; i <= n - 2; i ++){if(sum[i] == sum[n]/3) cnt ++;if(sum[i+1] == sum[n]/3*2) ans += cnt;}cout << ans;return 0;
}

M 马学长的小游戏

#include <iostream>
using namespace std;
int main()
{int n = 1;while(1) {cin >> n; if (n == 0) break;if (n % 2 == 1) printf("maxuezhang win\n");else printf("xiaoJtongxue win\n");}return 0;
}

H 分提拉米苏

#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10;
int l[N], r[N];
int n, k;
bool check(int mid){int res = 0;for(int i = 0 ; i < n ; i ++){res += (l[i]/mid)*(r[i]/mid);if(res >= k) return true;}return false;
}
int main()
{cin >> n >> k;for(int i = 0 ; i < n ; i ++) cin >> l[i] >> r[i];int l = 1 , r = 10000;while(l < r){int mid = (l + r + 1) / 2;if(check(mid)) l = mid;else r = mid - 1;}cout << l << endl;return 0;
}

L 算两次

#include <bits/stdc++.h>
#define ll long long
#define N 100005
int f[N],p[N],nu1[N],nu2[N];
int num1=0,num2=0;
int ma=0;
using namespace std;
int num=0;
void init_p()
{f[1]=1;num=0;for(int i=2;i<=N;i++){if(f[N]==0){p[++num]=i;}for(int j=1;j<=num;j++){if(i*p[j]<N) f[i*p[j]]=1;if(i%p[j]==0||i*p[j]>N) break;}}
}
int main()
{init_p();int m;scanf("%d",&m);for(int i=1;i<=m;i++){int op,x;scanf("%d%d",&op,&x);if(x<0){num1++;x=-1*x;}ma=max(ma,x);if(op==1){for(int i=1;p[i]<=x;i++){if(f[x]==0){nu1[x]++;break;}while(1){if(x%p[i]==0){nu1[p[i]]++;x/=p[i];}else break;}}}else {for(int i=1;p[i]<=x;i++){if(f[x]==0){nu1[x]--;break;}while(1){if(x%p[i]==0){nu1[p[i]]--;x/=p[i];}else break;}}}}scanf("%d",&m);for(int i=1;i<=m;i++){int op,x;scanf("%d%d",&op,&x);if(x<0){num2++;x=-1*x;}ma=max(ma,x);if(op==1){for(int i=1;p[i]<=x;i++){if(f[x]==0){nu2[x]++;break;}while(1){if(x%p[i]==0){nu2[p[i]]++;x/=p[i];}else break;}}}else {for(int i=1;p[i]<=x;i++){if(f[x]==0){nu2[x]--;break;}while(1){if(x%p[i]==0){nu2[p[i]]--;x/=p[i];}else break;}}}}if(num1%2!=num2%2){printf("NO");return 0;}for(int i=1;p[i]<=ma;i++){if(nu1[p[i]]!=nu2[p[i]]){printf("NO");return 0;}}printf("YES");return 0;
}

相关文章:

ACM第三次考核题解

ACM第三次考核题解 题目序号难度题目编号题目考察知识点1签到题A这是一道很难的题&#xff01;&#xff01;&#xff01;输出2迷之难度F神说要有光&#xff0c;于是有了手电筒贪心3简单BThis is a real English problem&#xff01;思维 英语4简单C玩具简单排序5简单I“近义词…...

基于Vue3内置的lodash函数库实现防抖节流

前言 防抖节流是可以说是一种优化组件性能的技巧&#xff0c;可以有效减少组件中的渲染次数和计算量&#xff0c;从而提高组件的响应速度和用户体验。在Vue3中可以使用lodash库中的debounce和throttle函数来分别实现防抖和节流。当然也可以自行设计实现防抖节流函数&#xff0…...

ls -a有什么作用

ls -a 是一个在类Unix操作系统&#xff08;如Linux、macOS&#xff09;中使用的命令&#xff0c;用于列出目录中的所有文件和目录&#xff0c;包括那些以.开头的隐藏文件。 具体作用如下&#xff1a; ls: 这是一个列出目录内容的命令。 -a: 这是一个选项&#xff0c;表示"…...

LLM - 使用 RAG (检索增强生成) 多路召回 实现 精准知识问答 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142629289 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 RAG (R…...

编程语言图书创作要注意的事情有哪些?

编程语言图书的创作是一项复杂且具有挑战性的任务&#xff0c;需要作者深入理解技术、清晰表达&#xff0c;并考虑读者的学习体验。一本优秀的编程书籍不仅能够教授技术知识&#xff0c;更能引导读者逐步深入&#xff0c;激发他们的思考和实际应用能力。以下将详细探讨编程语言…...

主流高级编程语言的推出时间及年份

1.下表一些主流高级编程语言的推出时间及年份&#xff1a; 高级语言 推出时间 岁数 FORTRAN 1957 67 LISP 1959 65 COBOL 1961 63 BASIC 1964 60 Pascal 1970 54 C 1972 52 MATLAB 1978 46 SQL 1978 46 Objective-C 1983 41 C 1983 41 Perl …...

qt 模仿简易的软狗实现

我们在写软件的时候&#xff0c;希望我们的软件只在固定的机器上运行&#xff0c;其他机器上运行不了&#xff0c;那我们应该如何做呢&#xff1f; 1 首先我们需要得到运行机器的mac地址&#xff0c;这样可以简易的判断是否是我们授权的机器。 那我们首先定义一个授权mac机器…...

荣业食品销售费用每年上亿元:主要产品收入大降,电商占比过低

《港湾商业观察》黄懿 今年3月&#xff0c;广东荣业食品有限公司的控股公司Wing Yip Food Holdings Group Limited&#xff08;下称“荣业食品”&#xff09;向美国SEC递交了纳斯达克上市申请。 据悉&#xff0c;2023年11月&#xff0c;商务部宣布移除了一批共计55家因长期经…...

数据结构:并查集

数据结构&#xff1a;并查集 并查集原理实现框架初始化合并查询获取成员路径压缩其它 总代码 并查集 在生活中&#xff0c;经常会出现分组问题。比如一个班级分为多个小组&#xff0c;打篮球分为两方等等。在同一个组中的所有成员&#xff0c;就构成一个集合。对这种一个群体分…...

微信小程序实战教程:轻松实现列表批量选择功能

在许多场景下&#xff0c;用户需要对列表中的多项内容进行操作&#xff0c;如批量删除、批量下载等。为了满足这一需求&#xff0c;我们需要在微信小程序中实现列表批量选择功能。具体要求如下&#xff1a; 用户可以逐个选择列表项&#xff0c;也可通过全选按钮快速选择所有列表…...

企业微信:开启客户联系和配置

前言 客户联系是企业微信的一项非常实用且自定义化配置丰富的功能&#xff0c;使企业内的授权员工可以添加外部客户&#xff08;企业微信联系人和微信联系人&#xff09;进行工作沟通&#xff0c;并且还可以建立客户群&#xff0c;甚至发表内容到客户朋友圈&#xff01; 由于功…...

Python发送邮件教程:如何实现自动化发信?

Python发送邮件有哪些方法&#xff1f;如何利用python发送邮件&#xff1f; 无论是工作汇报、客户通知还是个人提醒&#xff0c;邮件都能快速传递信息。Python发送邮件的自动化功能就显得尤为重要。AokSend将详细介绍如何使用Python发送邮件&#xff0c;实现自动化发信&#x…...

一周热门|苏姿丰:芯片行业不能只盯着 GPU;Gartner:GenAI 即将越过期望膨胀期

大模型周报将从【企业动态】【技术前瞻】【政策法规】【专家观点】四部分&#xff0c;带你快速跟进大模型行业热门动态。 01 企业动态 Open AI 计划从非营利组织向营利组织转型 日前&#xff0c;路透社报道称&#xff0c;OpenAI 正在制定一项计划&#xff0c;将其核心业务重…...

Failed to load WebView provider: No WebView installed

1、问题 使用webview加载网页&#xff0c;在应用运行时&#xff0c;报了如下错误&#xff1a;android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed2、分析 通过查看项目的修改记录&#xff0c;确实安装了We…...

java日志框架之Log4j

文章目录 一、Log4j简介二、Log4j组件介绍1、Loggers (日志记录器)2、Appenders&#xff08;输出控制器&#xff09;3、Layout&#xff08;日志格式化器&#xff09; 三、Log4j快速入门四、Log4j自定义配置文件输出日志1、输出到控制台2、输出到文件3、输出到数据库 五、Log4j自…...

C++ bitset(位图)的模拟实现

文章目录 一、bitset接口总览二、bitset模拟实现1. 构造函数2. set、reset、flip、test3. size、count4. any、none、all5. 打印函数 三、完整代码 一、bitset接口总览 成员函数功能set设置指定位或所有位为1&#xff08;即设置为“已设置”状态&#xff09;reset清空指定位或…...

Llama 3.2:利用开放、可定制的模型实现边缘人工智能和视觉革命

在我们发布 Llama 3.1 模型群后的两个月内&#xff0c;包括 405B - 第一个开放的前沿级人工智能模型在内&#xff0c;它们所产生的影响令我们兴奋不已。 虽然这些模型非常强大&#xff0c;但我们也认识到&#xff0c;使用它们进行构建需要大量的计算资源和专业知识。 我们也听到…...

解决R语言bug ‘sh‘ is not recognized as an internal or external command

安装源码包‘httr2’ trying URL ‘https://cran.rstudio.com/src/contrib/httr2_1.0.5.tar.gz’ Content type ‘application/x-gzip’ length 230632 bytes (225 KB) downloaded 225 KB installing source package ‘httr2’ … ** package ‘httr2’ successfully unpacked…...

记一次Mac 匪夷所思终端常用网络命令恢复记录

一天莫名奇妙发现ping dig 等基础命令都无法正常使用。还好能浏览器能正常访问&#xff0c;&#xff0c;&#xff0c;&#xff0c; 赶紧拿baidu试试^-^ ; <<>> DiG 9.10.6 <<>> baidu.com ;; global options: cmd ;; connection timed out; no serve…...

2024最新!!Java后端面试题(4)看这一篇就够了!!!!

七、异常 throw 和 throws 的区别&#xff1f; throw用来显式地抛出一个异常&#xff0c;而throws则用于在方法声明中指明该方法可能抛出的异常。简单来说&#xff0c;throw是抛出异常的实际动作&#xff0c;throws是告知调用者这个方法可能会抛出哪些异常的声明。 final、f…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...