牛客周赛 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,一经查实,立即删除!

相关文章

Android所有版本的存储权限适配

第一步&#xff1a;在Manifest文件添加如下权限 <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion"28" tools:ignore"ScopedStorage"/> <uses-permission andr…

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…

论生逢其时

我们无法选择生时&#xff0c;所以都是生逢此时。而你采取什么样的态度去面对&#xff0c;决定着你时随波逐流还是顺势而为&#xff0c;更有甚者创造一个时代&#xff0c;度过精彩人生。 首先&#xff0c;即使我们能够生在自认为的“伟大时代”也不一定能够成就一番伟业。我…

参与直播领取龙年大礼盒!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; 一、电子成绩单 电…

调用多个NFT的代理合约应该怎么设计?

需求&#xff1a;项目方由10个NFT合约&#xff0c;需要不定时的去某个合约中 转账/mint 特定的ID到特定用户。 粗笨方法&#xff1a;直接发起10笔交易&#xff0c;每次单独call 一个 合约 执行 转账操作合约代理方案&#xff1a;直接实现一个代理合约&#xff0c;由该合约执行c…

剑指offer题解合集——Week4day1

文章目录 剑指offerWeek4周一&#xff1a;二叉搜索树的后序遍历序列AC代码思路&#xff1a; 剑指offerWeek4 周一&#xff1a;二叉搜索树的后序遍历序列 题目链接&#xff1a;二叉搜索树的后序遍历序列 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历…

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

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

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

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

代码随想录算法训练营Day27|39. 组合总和、40.组合总和II、131.分割回文串

目录 39. 组合总和 前言 算法实现 剪枝优化 40.组合总和II 前言 算法实现 31.分割回文串 前言 算法实现 总结 39. 组合总和 题目链接 文章链接 前言 本题的组合求和对数组中的数字可以无限制重复选取&#xff0c;本题没有组合数量要求&#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…

ERP简要数据模型

1. 人力资源管理模块数据模型&#xff1a; -- 创建员工信息表 CREATE TABLE employee (employee_id INT PRIMARY KEY AUTO_INCREMENT,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,gender ENUM(Male, Female, Other),birth_date DATE,email VARCHAR(100),…