牛客周赛 Round 3 解题报告 | 珂学家 | 贪心思维场


前言

alt

寒之不寒无水也,热之不热无火也。


整体评价

感觉比较简单,更加侧重于思维吧。和前几场的Round系列,风格不太一样。


A. 游游的7的倍数

因为连续7个数,比如有一个数是7的倍数

因此从个位数中着手添加,是最好的选择.

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));String s = sc.next();// 从个位数着手, 应该更快, 连续7个数,比如有一个数是7的倍数for (int i = 0; i < 10; i++) {String s1 = s + (char)(i + '0');if (Long.valueOf(s1) % 7 == 0) {System.out.println(s1);break;}}}}
#include <bits/stdc++.h>using namespace std;int main() {int x;cin >> x;// 特殊行int res = -1;int left = x % 7;for (int i = 0; i < 10; i++) {if ((left * 10 + i) % 7 == 0) {res = i;break;}}cout << x << res << endl;return 0;
}

B. 游游的字母串

这题还是枚举,就枚举最后的结果字母,这样有26种情况

然后遍历每个字符,取其左侧/右侧移动的最小代价 总和

这样的时间复杂度为 O ( 26 ∗ n ) O(26*n) O(26n), 当然这题可以做到 O ( n ) O(n) O(n)

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));String s = sc.next();long ans = Long.MAX_VALUE;for (int i = 0; i < 26; i++) {long tmp = 0;for (char c: s.toCharArray()) {int p = c - 'a';// 取左侧和右侧最小的偏移量tmp += Math.min(Math.abs(p - i), 26 - Math.abs(p - i));}ans = Math.min(ans, tmp);}System.out.println(ans);}}
#include <bits/stdc++.h>using namespace std;int main() {string s;cin >> s;// 枚举int res = 0x3f3f3f3f;for (int i = 0; i < 26; i++) {int tmp = 0;for (char c: s) {int p = c - 'a';tmp += min(abs(p - i), 26 - abs(p - i));}res = min(res, tmp);}cout << res << endl;return 0;
}

C. 游游的水果大礼包

因为数据范围比较小, n , m < 1 0 6 n,m\lt 10^6 n,m<106

所以这题,实际上可以枚举 水果礼包1的数量,然后求得当前情况下的最优价值

或者说,对于多变量的最优解思路,往往是固定一个变量(枚举),然后求在一个变量情况下的最优解

如果范围放大

x + 2 ∗ y ≤ n x + 2 * y \le n x+2yn

2 ∗ x + y ≤ m 2 * x + y \le m 2x+ym

a ∗ x + b ∗ y a * x + b * y ax+by 最大

总得感觉这个函数是个凸函数,可以用三分搞,总之是种很奇怪的感觉

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt(), m = sc.nextInt();int a = sc.nextInt(), b = sc.nextInt();long ans = 0;for (int i = 0; i <= m; i++) {if (n < i * 2) break;long bag1 = (long)i * a;int left = Math.min((n - i * 2), (m - i)/2);long bag2 = (long)left * b;ans = Math.max(ans, bag1 + bag2);}System.out.println(ans);}}


D. 游游的矩阵权值

贡献法,可以观察得到

在中间 ( n − 2 ) × ( n − 2 ) (n-2)\times(n-2) (n2)×(n2)区域,可贡献4次机会

在边上,则能贡献3次机会

在角上,只能贡献2次机会

因此,尽量把最大的 ( n − 2 ) × ( n − 2 ) (n-2)\times(n-2) (n2)×(n2)的数放在中间区域

然后次大的放在边上,而角上永远是1,2,3,4这个组合

这边主要是易错,易错的原因是大数取模,而且部分和可能需要用到逆元

import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;public class Main {static final long mod = 10_0000_0007l;public static long tx(long t) {return (t % mod + mod) % mod;}public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));// 算贡献分long n = sc.nextLong();long m = n * n % mod;long cn = tx(n - 2) * tx(n - 2) % mod;long en = tx(n - 2) * 4 % mod;long inv2 = BigInteger.valueOf(2).modInverse(BigInteger.valueOf(mod)).longValue();// 烂肚皮(最大的(n-2)*(n-2)个数放中间)long r1 = tx(m + m - cn + 1) * cn % mod * inv2 % mod * 4 % mod;// 银边(剩下最大的4*(n-2)个数放边)long r2 = tx(m - cn + m - cn - en + 1) * en % mod * inv2 % mod * 3 % mod;// 金角(1,2,3,4)long r3 = 20l; // 固定值 (1+2+3+4) * 2System.out.println(tx(r1 + r2 + r3));}}

写在最后

只需记得,她永远是那位“兼具智慧与美貌的八重神子大人”就好。

alt

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

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

相关文章

java自定义排序Comparator

&#x1f4d1;前言 本文主要是【java】——java自定义排序Comparator的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每…

2024年AMC8历年真题练一练和答案详解(8),以及全真模拟题

今天是1月15日&#xff0c;距离本周五的AMC8正式比赛还有四天时间&#xff0c;已经放寒假了的孩子可以多点时间复习备考&#xff0c;还在准备期末考试的孩子可以先以期末考试为重&#xff0c;忙里偷闲刷一下AMC8的题目保持感觉——系统的知识学习可能时间不够了&#xff0c;可以…

响应式编程初探-自定义实现Reactive Streams规范

最近在学响应式编程&#xff0c;这里先记录下&#xff0c;响应式编程的一些基础内容 1.名词解释 Reactive Streams、Reactor、WebFlux以及响应式编程之间存在密切的关系&#xff0c;它们共同构成了在Java生态系统中处理异步和响应式编程的一系列工具和框架。 Reactive Streams…

参与直播领取龙年大礼盒!23年Coremail社区年终福利大放送

2023年终福利大放送 Coremail 管理员社区是由 Coremail 邮件安全团队、服务团队及多条产品线共同维护&#xff0c;集 7*24h 在线自助查询、技术问答交流、大咖互动分享、资料下载等功能于一体&#xff0c;专属于 Coremail 邮件管理员、安全员成长互动的知识库社区。 转眼间&am…

数据库|数据库范式(待完成)

文章目录 数据库的范式数据库的基本操作什么是数据库的范式产生的背景&#xff08;没有规范化的坏处/带来的问题&#xff09;规范化表格设计的要求五大范式的作用——树立标准打个比方——桥的承载能力1NF&#xff08;1范式&#xff09;如何转换成合适的一范式 2NF&#xff08;…

迈向高效LLM微调:低秩适应(LoRA)技术的原理与实践

在快速发展的人工智能领域中&#xff0c;以高效和有效的方式使用大型语言模型&#xff08;LLM&#xff09;变得越来越重要。在本文中&#xff0c;您将学习如何以计算高效的方式使用低秩适应&#xff08;LoRA&#xff09;对LLM进行调整&#xff01; 为什么需要微调&#xff1f;…

吼!原来教师这样发布学生期末成绩,轻松没烦恼

​随着科技的进步和教育的不断创新&#xff0c;教师发布学生期末成绩的方式也在逐渐发生变化。传统的方式&#xff0c;如纸质成绩单和口头通知&#xff0c;已经不能满足现代教育的需求。那么&#xff0c;教师应该如何更有效地发布学生期末成绩呢&#xff1f; 一、电子成绩单 电…

2024年【北京市安全员-C3证】复审考试及北京市安全员-C3证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-C3证复审考试考前必练&#xff01;安全生产模拟考试一点通每个月更新北京市安全员-C3证证考试题目及答案&#xff01;多做几遍&#xff0c;其实通过北京市安全员-C3证模拟考试题很简单。 1、【多选题】《…

使用scipy处理图片——任意比例缩放

大纲 缩小放大代码地址 在《使用numpy处理图片——缩放图片》一文中&#xff0c;我们每2个取1个像素来达到图像缩小的效果。这就要求缩小的比例只能是整数倍&#xff0c;而不能支持缩小到0.3倍或者放大到1.5倍这样的效果。 为了支持任意倍数的缩放功能&#xff0c;我们需要使用…

【方法】Excel表格如何“限制编辑区域”?

在制作Excel表格的时候&#xff0c;你是否遇到这些情况&#xff1f;有时候需要限定部分区域让他人协助填写&#xff0c;有时候会有很多数据或公式&#xff0c;要防止误改&#xff0c;否则会引起错误。要保护好这些区域&#xff0c;我们可以给Excel表格设置“限制编辑区域”。 …

微信小程序------WXML模板语法之条件渲染和列表渲染

目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用 前言 上一期我们讲解wxml模版语法中的数据绑定和事件绑定&#xff08;上一期链接&#xff1a;…

PDF修改技巧之:如何简单方便的编辑PDF文件?

在当今精通技术的世界中&#xff0c;PDF 的使用已变得普遍&#xff0c;尤其是在商业和教育方面。如果您在审阅 PDF 文件时遇到语法或其他错误怎么办&#xff1f; 尽管 PDF 文件不像 Word 或在线文档那样容易编辑&#xff0c;但借助高级工具&#xff0c;您一定可以进行编辑。 …

MySQL的安装

一&#xff1a;MySQL的安装 步骤一&#xff1a; 下载mysql&#xff0c;地址&#xff1a;MySQL :: Download MySQL Installer 在MySQL的官网对其进行下载&#xff1a; 也可以下滑&#xff0c;在下面点击此社区服务器安装进行下载&#xff1a; 步骤二&#xff1a; 进入到下载…

Redis之bigkey

目录 1、什么是bigkey&#xff1f; 2、bigkey大的小 3、bigkey有哪些危害&#xff1f; 4、bigkey如何产生&#xff1f; 5、bigkey如何发现&#xff1f; 6、bigkey如何删除&#xff1f; 7、BigKey调优&#xff0c;惰性释放lazyfree 8、生产上限制keys * /flushdb/flushal…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域&#xff0c;除了常见的XSS&#xff08;跨站脚本&#xff09;攻击外&#xff0c;CSRF&#xff08;跨站请求伪造&#xff09;攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下&#xff0c;执行非授权的操作。了解CSRF攻击的机…

2.3数据链路层01

2.3数据链路层 2.3.1数据链路层概述 1、数据链路层在网络体系结构中所处的地位 如下图所示&#xff1a;主机H1给主机H2发送数据&#xff0c;中间要经过三个路由器、电话网、局域网、广域网等多种网络。 从五层协议原理体系结构的角度来看&#xff0c;主机应该具有体系结构中…

数据结构初阶之插入排序与希尔排序详解

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力,共赴大厂。 目录 一.前言 二.插入排序 …

深入浅出Pytorch宝典1.0

文章目录 前言1. 张量操作2. 自动微分3. 数据加载和处理4. 模型构建和训练5. 预训练模型和迁移学习6. 调试和性能7. 高级特性总结 torch中主要的数据对象主要特点和功能张量的创建 数据处理和转换1.torch.tensor() 创建一个新的张量&#xff08;Tensor&#xff09;2.torch.zero…

YOLOv8训练自己的数据集

文章目录 1. 创建数据集文件结构数据集标注脚本分割数据集转换数据格式 2. 配置文件2.1 数据集配置2.2 选择需要的模型 3. 模型训练4. 测试 1. 创建数据集 环境&#xff1a; Ultralytics YOLOv8.0.230 &#x1f680; Python-3.8.18 torch-2.3.0.dev20231226cu118 CUDA:0 (NVIDI…

【DDR】基于Verilog的DDR控制器的简单实现(三)——读操作

上一节 【DDR】基于Verilog的DDR控制器的简单实现&#xff08;二&#xff09;——写操作 本文继续以美光(Micron&#xff09;公司生产的DDR3芯片MT41J512M8RH-093&#xff08;芯片手册&#xff09;为例&#xff0c;说明DDR芯片的读操作过程。下图为读操作指令格式&#xff08;…