码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【刷题】蓝桥杯


    蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com)

     初步想法,x = y2 − z2=(y+z)(y-z)

    即x=a*b,a=y+z,b=y-z

    2y=a+b

    即a+b是2的倍数就好了。

    即x存在两个因数之和为偶数就能满足条件。

    但时间是(r-l)*x,数据1e9,直接T了

    1. #include
    2. using namespace std;
    3. const int N=1e5+10;
    4. map<int,int> mp;
    5. int cnt;
    6. bool judge(int x)
    7. {
    8. for(int i=1;i<=x;i++)//找两个因数
    9. {
    10. if(x%i!=0) continue;
    11. int d=x/i+i;
    12. if(d%2==0||x==1)//说明是整数
    13. {
    14. return true;
    15. }
    16. }
    17. return false;
    18. }
    19. signed main()
    20. {
    21. ios::sync_with_stdio(false);
    22. cin.tie(nullptr);
    23. int l,r;
    24. cin>>l>>r;
    25. for(int i=l;i<=r;i++)
    26. {
    27. if(judge(i)) cnt++;
    28. }
    29. cout<
    30. return 0;
    31. }

    运行结果:

    进一步分析:

    根据题意多写几个,不难发现奇数似乎都能拆成y2 − z2的形式?因此,我们从奇偶的角度来找规律。

    (这个地方写错了,是\left ( k+1 \right )^{^{2}}-\left ( k \right )^{^{2}}

    那么,在这里就可以得出结论辣。想要数字能表示成y2-z2的形式,只有两种可能:

    1.奇数   2.4的倍数

    代码:

    1. #include
    2. using namespace std;
    3. const int N=1e5+10;
    4. int cnt;
    5. signed main()
    6. {
    7. int l,r;
    8. cin>>l>>r;
    9. for(int i=l;i<=r;i++)
    10. {
    11. if(i%2) cnt++;
    12. if(i%4==0) cnt++;
    13. }
    14. cout<
    15. return 0;
    16. }

     (这一步还不能过属实有点钻牛角尖了。。。。。

    但是好在,已知一个数x,对应的奇数、4的倍数的数的个数是可以算出来的。

    1. #include
    2. using namespace std;
    3. const int N=1e5+10;
    4. int cnt;
    5. signed main()
    6. {
    7. int l,r;
    8. cin>>l>>r;
    9. int d=(l-1)/2;
    10. if((l-1)%2==0) d--;
    11. int p=l/4;
    12. if((l%4)==0) p--;
    13. cnt=(r-1)/2-d+r/4-p;
    14. cout<
    15. return 0;
    16. }

    蓝桥杯2023年第十四届省赛真题-更小的数 - C语言网 (dotcpp.com)

     暴力

    思路:

    任取子串起点为i,终点为j。

    然后运用双指针算法对子串进行判断。如果两边相等就往中间走。如果左边大了,说明这个子串反转后会变小;如果右边大了,说明这个子串反转后会变大。

    1. #include
    2. using namespace std;
    3. const int N=5e3+10;
    4. string x;
    5. int cnt;
    6. signed main()
    7. {
    8. cin>>x;
    9. for(int i=0;ilength();i++)
    10. {
    11. for(int j=i+1;jlength();j++)
    12. {
    13. int l=i,r=j;
    14. while(l<=r)
    15. {
    16. if(x[l]break;
    17. if(x[l]>x[r])
    18. {
    19. cnt++;
    20. break;
    21. }else l++,r--;
    22. }
    23. }
    24. }
    25. cout<
    26. return 0;
    27. }

     暴力做法没想到在这个平台上直接过了,于是换了个平台P2070 - [蓝桥杯2023初赛] 更小的数 - New Online Judge (ecustacm.cn)

    果然时间超限。。 

     

    DP

    上面是三重循环,能想到的就是优化最后那一层while循环。

    如果左边大了,说明这个子串反转后会变小;如果右边大了,说明这个子串反转后会变大。如果两边相等就l++,r--,这就意味着这种情况下当前这个字串的状态可以由较小的那一层决定。我们就可以想到DP。

    稍微画一下就可以理解,dp[i][j]由dp[i+1][j-1]得到,因此最外面一层循环我们要从大到小,里面一层顺序无所谓,因为先得到dp[i+1][j]还是dp[i+1][j-1]对dp[i][j]没有任何影响。

    1. #include
    2. using namespace std;
    3. const int N=5e3+10;
    4. string x;
    5. int cnt;
    6. int dp[N][N];
    7. signed main()
    8. {
    9. cin>>x;
    10. for(int i=x.length()-1;i>=0;i--)
    11. {
    12. for(int j=i+1;jlength();j++)
    13. {
    14. if(i>=j) continue;
    15. if(x[i]>x[j]) dp[i][j]=1;
    16. else if(x[i]==x[j]) dp[i][j]=dp[i+1][j-1];
    17. cnt+=dp[i][j];
    18. }
    19. }
    20. cout<
    21. return 0;
    22. }

     蓝桥杯2023年第十四届省赛真题-颜色平衡树 - C语言网 (dotcpp.com)

    暂时能力达不到。。。。

  • 相关阅读:
    二叉树的基本性质与遍历
    【负优化】如何理解Android手机系统升级时,反而“负优化”? | 附:国产AI大模型列表 | 人的真实注意力相关:为什么有时候一直看一个汉字,反而感觉不认识这个汉字了呢?
    带你走进Nginx
    读书感悟【Vue.js设计与实现】第1章 权衡的艺术 【Vue进阶系列】
    云原生Kubernetes:pod基础与配置
    UTF-16究竟如何编码
    抖音小店爆款制造指南:打造抖音爆款商品的八大技巧
    会议动态 | 浙江省水泥行业高质量发展暨碳达峰推进会成功召开
    ModelBox实战开发:RK3568实现摄像头虚拟背景
    优雅地处理Python中的条件分支:字典映射、函数组合与match-case语句
  • 原文地址:https://blog.csdn.net/m0_74183164/article/details/133000057
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号