码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 蓝桥杯每日一题2023.11.19


    题目描述

    “蓝桥杯”练习系统 (lanqiao.cn)

    题目分析

    首先想到的方法为dfs去寻找每一个数,但发现会有超时

    1. #include
    2. using namespace std;
    3. const int N = 2e5 + 10;
    4. int n, cnt, a[N];
    5. void dfs(int dep, int sum, int start)
    6. {
    7. if(dep == 4)
    8. {
    9. if(sum == 0 && cnt == 0)
    10. {
    11. for(int i = 0; i < 4; i ++)
    12. {
    13. cout << a[i] << ' ';
    14. }
    15. cnt ++;
    16. }
    17. return;
    18. }
    19. for(int i = start; i <= sqrt(sum); i ++)
    20. {
    21. a[dep] = i;
    22. dfs(dep + 1, sum - (i * i), i);
    23. }
    24. }
    25. int main()
    26. {
    27. cin >> n;
    28. dfs(0, n, 0);
    29. return 0;
    30. }

    使用二分

    先将后两个数确定,将其后两个数的平方和以及分别对应的数字存入结构体中,再一一枚举前两个数,二分出可以匹配的后两个数,确定出答案

    1. #include
    2. using namespace std;
    3. const int N = 5e6 + 10;
    4. int n, num;
    5. struct node
    6. {
    7. int ss, c, d;
    8. }sum[N * 2];
    9. bool cmp(node x, node y)
    10. {
    11. if(x.ss != y.ss)
    12. {
    13. return x.ss < y.ss;
    14. }
    15. else
    16. {
    17. if(x.c != y.c)
    18. {
    19. return x.c < y.c;
    20. }
    21. else
    22. {
    23. return x.d < y.d;
    24. }
    25. }
    26. }
    27. int main()
    28. {
    29. cin >> n;
    30. for(int c = 0; c * c <= n; c ++)
    31. {
    32. for(int d = c; c * c + d * d <= n; d ++)
    33. {
    34. sum[num ++] = {c * c + d * d, c, d};
    35. }
    36. }
    37. sort(sum, sum + num, cmp);
    38. for(int a = 0; a * a <= n; a ++)
    39. {
    40. for(int b = 0; a * a + b * b <= n; b ++)
    41. {
    42. int t = n - a * a - b * b;
    43. int l = 0, r = num - 1;
    44. while(l < r)
    45. {
    46. int mid = l + r >> 1;
    47. if(sum[mid].ss >= t)r = mid;
    48. else l = mid + 1;
    49. }
    50. if(sum[l].ss == t)
    51. {
    52. cout << a << ' ' << b << ' ' << sum[l].c << ' ' << sum[l]. d;
    53. return 0;
    54. }
    55. }
    56. }
    57. return 0;
    58. }
  • 相关阅读:
    JavaScript面向对象(2)—继承的实现
    HTTPS基础原理和配置-2
    Swift学习笔记一(Array篇)
    Python 深度学习入门之CNN
    StripedFly恶意软件框架感染了100万台Windows和Linux主机
    [开源]基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案
    一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
    Kutools for Excel 结合 300 多种高级功能和工具
    git大文件推送报错
    DVWA教程详细的DVWA-CSRF全等级通关教程
  • 原文地址:https://blog.csdn.net/m0_75087931/article/details/134495954
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号