码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 大厂秋招真题【贪心】顺丰20230914秋招T2-巧克力


    顺丰20230914秋招T1-巧克力

    题目描述与示例

    题目描述

    小丽明天要出去和同学春游。她准备带上总面积恰好为n的巧克力板(简化起见将巧克力板视为平面图形,忽略它的厚度,只考虑面积)去和同学们一起分享。

    出于美感的考虑,小丽希望她带上的巧克力板都是边长为整数的正方形;另一方面出于便携性考虑,小丽希望这些巧克力板的周长之和尽可能小,请你帮小丽找出可能的最小周长!

    换句话说,小丽需要你帮忙找出k个小正方形巧克力板,边长分别为a1, a2, ..., ak,使得其面积之和,即 ∑ i = 1 k a i 2 \sum_{i = 1}^{k} {a_{i}^2} i=1∑k​ai2​,恰好为要求的总面积为n;同时,使得总周长,即 ∑ i = 1 k 4 ∗ a i \sum_{i = 1}^{k} {4 * a_{i}} i=1∑k​4∗ai​最小

    输入描述

    一行,1个整数n,表示小丽希望带上的巧克力板总面积

    1 <= n <= 50000
    
    • 1

    输出描述

    输出一行一个整数表示可能的最小周长。

    示例

    输入

    11
    
    • 1

    输出

    20
    
    • 1

    解题思路

    首先可以确定的是对于任意的n,一定可以表示成为若干数字的平方和,因为一种保底的策略是n个1的平方相加。

    接下来我们考虑为了能够让 ∑ i = 1 k 4 a i \sum_{i = 1}^{k} {4a_{i}} i=1∑k​4ai​最小,而 ∑ i = 1 k a i 2 \sum_{i = 1}^{k} {a_{i}^2} i=1∑k​ai2​等于n。一种显然的贪心策略是我们优先塞大的ai,

    这是较大的ai值的平方会比较小的ai值的平方更快地减小n的值,从而最终使得a1 + a2 + ... + ak最小。

    代码

    Java

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int ans = 0;
            for (int i = n; i >= 1; --i) {
                while(i * i <= n) {
                    n -= i * i;
                    ans += i;
                }
            }
            System.out.println(4 * ans);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    C++

    #include 
    
    using namespace std;
    
    int main() {
            int n;
            cin >> n;
            int ans = 0;
    
            for (int i = n; i >= 1; --i) {
                    while(i * i <= n) {
                            n -= i * i;
                            ans += i;
                    }
            }
            cout << 4 * ans << endl;
            return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    华为OD算法/大厂面试高频题算法练习冲刺训练

    • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

    • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

    • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

    • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

    • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

    • 可查看链接 OD算法冲刺训练课程表 & OD真题汇总(持续更新)

    • 绿色聊天软件戳 od1336了解更多

  • 相关阅读:
    外汇天眼:Bitcore与Amtop Markets Ltd──诓称数据分析操盘稳赚不赔,指控账户违法逼缴校验金
    科技型中小企业有哪些?
    技术学习:Python(05)|操作XML
    【ceph】AI时代-数据为王-ceph存储将成为未来比较看好的赛道之一,为什么不all in一把学习一个不那么卷的赛道呢?
    操作系统 第二章 进程管理:进程与线程、处理机调度
    麒麟系统smb共享输入用户密码无法连接的处理方法
    山东菏泽家乡网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
    .Net Core 与数据库
    【Blender】Blender入门学习
    Ubuntu MongoDB账户密码设置
  • 原文地址:https://blog.csdn.net/weixin_48157259/article/details/133435533
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号