码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022.10.29每日刷题打卡(补


    由于前一段时间电脑坏了,所以把鸽的补回来~

    Orray

    题意:对a重新排序使得a的前缀或和最大

    思路:

    题目时间限制2s,所以可以稍微暴力地去写。

    要使前缀或和,那么第一个位置一定要放数组最大的值,剩下的排序我们可以遍历一下去找到或最大的结果找的一个可以存一个,最后没存进去的按顺序输出就可以啦。

    1. #include
    2. void solve()
    3. {
    4. int n;
    5. std::cin >> n;
    6. std::vector<int> a(n);
    7. std::vector<bool> vis(n, false);
    8. for(int &ai : a) std::cin >> ai;
    9. std::sort(a.begin(), a.end());
    10. int ans = a.back();
    11. std::vector<int> res;
    12. res.push_back(ans);
    13. for(int i = 0; i < n; i++){
    14. int f = 0;
    15. bool fy = 0;
    16. for(int j = 1; j < n; j++)
    17. if(!vis[f] && (ans | a[j]) > (ans | a[f]))
    18. f = j, fy = 1;
    19. if(fy) ans |= a[f], vis[f] = 1, res.push_back(a[f]);
    20. }
    21. for(auto x : res) std::cout << x << " ";
    22. for(int i = 0; i < n - 1; i++) if(!vis[i]) std::cout << a[i] << " ";
    23. std::cout << "\n";
    24. }
    25. int main()
    26. {
    27. std::ios::sync_with_stdio(false);
    28. std::cin.tie(nullptr);
    29. int t;
    30. std::cin >> t;
    31. while (t--)
    32. {
    33. solve();
    34. }
    35. return 0;
    36. }

    等等.....这题这样写会TLE

    其实仔细想想就可以想到,2e5的数据这样跑必T,那么怎么优化呢,其实可以考虑到如果我们标记的fy没有变化那么说明这个时候已经找不到最大的或值,所以在这里直接结束循环即可。

    1. #include
    2. void solve()
    3. {
    4. int n;
    5. std::cin >> n;
    6. std::vector<int> a(n);
    7. std::vector<bool> vis(n, false);
    8. for(int &ai : a) std::cin >> ai;
    9. std::sort(a.begin(), a.end());
    10. int ans = a.back();
    11. std::vector<int> res;
    12. res.push_back(ans);
    13. for(int i = 0; i < n; i++){
    14. int f = 0, fy = 0;
    15. for(int j = 1; j < n; j++)
    16. if(!vis[f] && (ans | a[j]) > (ans | a[f]))
    17. f = j, fy = 1;
    18. if(fy) ans |= a[f], vis[f] = 1, res.push_back(a[f]);
    19. else break;
    20. }
    21. for(auto x : res) std::cout << x << " ";
    22. for(int i = 0; i < n - 1; i++) if(!vis[i]) std::cout << a[i] << " ";
    23. std::cout << "\n";
    24. }
    25. int main()
    26. {
    27. std::ios::sync_with_stdio(false);
    28. std::cin.tie(nullptr);
    29. int t;
    30. std::cin >> t;
    31. while (t--)
    32. {
    33. solve();
    34. }
    35. return 0;
    36. }

     

     

     

  • 相关阅读:
    算法|每日一题|根据规则将箱子分类|注意转换数据类型
    MySQL存储过程
    【数据结构——单链表】本篇文章通过图文结合的方式能让你轻松的掌握单链表
    服务器的基本概念与初识Ajax
    Spring boot 如何使用视图解析器 thymeleaf 模板引擎来渲染页面 详解一
    【100天精通Python】Day47:Python网络编程_Web开发:web服务器,前端基础以及静态服务器
    我们怎样制作照片拼图?简单实用的拼图方法来了
    Redis3.2.1如何设置远程连接?允许局域网访问
    性能优化必备——火焰图
    九耶丨阁瑞钛伦特-Vue(三)
  • 原文地址:https://blog.csdn.net/weixin_62802134/article/details/127641996
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号