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

news2024/11/16 9:56:28

前言

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) * 2

        System.out.println(tx(r1 + r2 + r3));
    }

}


写在最后

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

alt

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

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

相关文章

Matter - 体验,灯泡(1)

一、前言 Matter&#xff08;当时称为 Project Connected Home over IP 或 Project CHIP&#xff09;于2019年12月11日首次宣布。当时&#xff0c;它是由苹果、谷歌、亚马逊和联发科技等公司共同发起的一个项目&#xff0c;目的是创建一个开放标准&#xff0c;提高智能家居设备…

【Linux】Git - 新手入门

文章目录 1. git 版本控制器 - 该如何理解&#xff1f;2. git / gitee / github 区别&#xff1f;3. Linux 中 git 的使用3.1 安装 git3.2 使用 github 新建远端仓库3.2.1 账号注册3.2.2 创建代码仓库3.2.3 克隆仓库到本地3.2.4 .gitignore 文件 3.3 使用 git 提交代码到 githu…

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

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

震惊!你还搞不懂PMP中的合同类型?

PMP中的合同类型包括固定总价合同、总价加激励费用合同、总价加经济价格调整合同、成本加固定费用合同、成本加激励费用合同和成本加奖励费用合同等。 下面分别针对各类合同进行详细的说明&#xff1a; 固定总价合同&#xff08;FFP&#xff09;&#xff1a;是最常用的合同类型…

ERP和MES对接的几种接口方式

在数字化工厂的规划建设中&#xff0c;信息化系统的集成&#xff0c;既是重点&#xff0c;但同时也是难点。ERP和MES对接时&#xff0c;ERP主要负责下达生产计划&#xff0c;MES是执行生产计划&#xff0c;二套系统在数据交互时&#xff0c;需要确保基础数据的一致性&#xff0…

mysql原理--redo日志2

1.redo日志文件 1.1.redo日志刷盘时机 我们前边说 mtr 运行过程中产生的一组 redo 日志在 mtr 结束时会被复制到 log buffer 中&#xff0c;可是这些日志总在内存里呆着也不是个办法&#xff0c;在一些情况下它们会被刷新到磁盘里&#xff0c;比如&#xff1a; (1). log buffer…

B端产品经理学习-B端产品的项目管理

项目管理的作用 指导Roadmap落地 每个节点的项目时间需要按照时间点落地&#xff0c;才不会影响后面的项目事件 为了明确需求&#xff0c;明确研发的工作 避免产研部门因为需求扯皮、研发部门抱怨需求文档不够清晰、在开发过程中增加很多细节需求、增加了研发的工作量、初次…

探寻爬虫世界01:HTML页面结构

文章目录 一、引言&#xff08;一&#xff09;背景介绍&#xff1a;选择爬取51job网站数据的原因&#xff08;二&#xff09;目标与需求明确&#xff1a;爬取51job网站数据的目的与用户需求 二、网页结构探索&#xff08;一&#xff09;51job网页结构分析1、页面组成&#xff1…

紫光展锐T770安卓核心板_展锐T770 5G核心板规格参数

紫光展锐T770安卓核心板是一款高性能的5G安卓智能模块&#xff0c;拥有先进的6nm制程工艺和强大的性能。板载8GB Ram 256GBROM的内存单元&#xff0c;支持4K H.265/ H.264视频编解码&#xff0c;搭载Android 13以上操作系统&#xff0c;功能丰富。除了支持5G NSA和SA双模式向下…

分布式搜索——Elasticsearch

Elasticsearch 文章目录 Elasticsearch简介ELK技术栈Elasticsearch和Lucene 倒排索引正向索引倒排索引正向和倒排 ES概念文档和字段索引和映射Mysql与Elasticsearch 安装ES、Kibana安装单点ES创建网络拉取镜像运行 部署kibana拉取镜像部署 安装Ik插件扩展词词典停用词词典 索引…

勾股数 - 华为OD统一考试

OD统一考试 题解&#xff1a; Java / Python / C 题目描述 如果三个正整数A、B、C &#xff0c;A B C 则为勾股数&#xff0c; 如果ABC之间两两互质&#xff0c;即A与B&#xff0c;A与C&#xff0c;B与C均互质没有公约数&#xff0c;则称其为勾股数元组。 请求出给定 n ~ …

一篇教你生成密钥给自己打的exe添加密钥

一篇教你生成密钥给自己打的exe添加密钥 我这里是自己写了一个python 打包exe,说总是给我报毒什么的 文章目录 一篇教你生成密钥给自己打的exe添加密钥前言一、使用java jdk 自带的keytool&#xff1f;二、进行转换2.把证书密钥写入到你的exe 总结 前言 生成密钥并为自定义 .…

【IPC通信--共享内存】

进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff08;如…

xlua源码分析(五) struct类型优化

xlua源码分析&#xff08;五&#xff09; struct类型优化 上一节我们分析了xlua是如何实现lua层访问C#值类型的&#xff0c;其中我们重点提到了xlua默认实现方式下&#xff0c;struct访问的效率问题。实际上&#xff0c;xlua还提供了两种优化的方式&#xff0c;可以大大提高str…

软件测试|如何使用Selenium处理隐藏元素

简介 我们在使用selenium进行web自动化测试时&#xff0c;有时候会遇到元素被隐藏&#xff0c;从而无法对元素进行操作&#xff0c;导致我们的用例报错的情况。当我们遇到元素被隐藏的情况时&#xff0c;需要先对隐藏的元素进行处理&#xff0c;才能继续进行我们的操作&#x…

一篇文章搞懂Jenkins持续集成解决的是什么问题

01 持续集成的定义 大师 Martin Fowler 是这样定义持续集成的: 持续集成是一种软件开发实战, 即团队开发成员经常集成他们的工作. 通常, 每个成员每天至少集成一次, 也就意味着每天可能发生多次集成. 持续集成并不能消除Bug, 而是让它们非常容易发现和改正. 根据对项目实战的…

第08章_面向对象编程(高级)拓展练习(关键字:static,代码块,关键字:final,抽象类和抽象方法,接口,内部类,枚举类,注解,包装类)

文章目录 第08章_面向对象编程&#xff08;高级&#xff09;拓展练习01-关键字&#xff1a;static1、银行账户类2、图形类3、数组工具类4、二分查找5、二分查找6、素数7、阅读代码&#xff0c;分析运行结果8、阅读代码&#xff0c;分析运行结果 02-代码块9、阅读代码&#xff0…

软件测试|如何使用selenium处理下拉框?

简介 下拉框是网页表单中常见的元素之一&#xff0c;通常用于选择不同的选项。对于我们的自动化测试工作来说&#xff0c;操作下拉框是我们经常需要处理的元素&#xff0c;selenium作为我们最常使用的web自动化测试框架&#xff0c;也是支持我们对下拉框进行操作的。本文我们就…

Github镜像加速器-FastGit

简介 FastGit 是一个对于 GitHub.com 的镜像加速器。使用共享资源为 GitHub 加速。 FastGit中文指南 # 基本使用 关于 FastGit 的使用&#xff0c;本质上与 git 有关。常规的面向 GitHub 的 clone 命令可能如下&#xff1a; git clone https://github.com/author/repo使用 F…

Qt 使用vs2019制作Qt静态库( *.lib )并使用

一 .创建静态库 1.创建Qt Class Library(Qt静态类库)项目 2.设置项目名以及项目路径(注意:不能有中文字符) 点击next 3.选则需要的模式以及Qt 模块 然后点击next,Finish完成创建 4. 然后手动添加Qt Widget Form File (.ui)并对设计ui 5. tpendialog.h #pragma once #includ…