码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022河南萌新联赛第(七)场:南阳理工学院 B 龍


    B-龍_2022河南萌新联赛第(七)场:南阳理工学院 (nowcoder.com)

    题意:

    思路:

    问全部变为1的最小花费为多少。

    分析:不全为1则至少存在一段0区间,那么就必须要采取取反操作。假设有 sum 个0区间,存在三种方法:

    1. 把所有0区间全翻转到一起,至少需要sum−1操作,再进行一次取反操作。
    2. 对每个0区间直接取反。
    3. 对区间进行两种操作,设翻转操作进行 i 次,取反操作进行 j 次操作,i+j==sum

    因为每翻转一次就会消去一个0区间,就会少取反一次区间,所以上述等式成立。

    再进一步分析,每种方法都需要sum次操作,其中一定存在一次取反操作,其余要么()(sum−1)∗a次翻转操作,要么()(sum−1)∗b次取反操作, 要么i∗a+j∗b次混合操作。 要根据和a和b大小决定操作,并且3操作一定不会是最优操作或者可以被其他两种操作取代(a等于b时)。

    最后答案合并就是 b+min(a,b)∗(k−1)

    1. #include
    2. using namespace std;
    3. const int mxn=3e5+10;
    4. #define int long long
    5. int n,a,b,x,ans=0,cnt=0;
    6. char s[mxn];
    7. void solve(){
    8. cnt=0;
    9. scanf("%lld%lld%lld%lld",&n,&a,&b,&x);
    10. scanf("%s",s+1);
    11. for(int i=1;i<=n-1;i++){
    12. if(s[i]=='0'&&s[i+1]=='1') cnt++;
    13. }
    14. if(s[n]=='0') cnt++;
    15. ans=x;
    16. if(cnt) ans=x-min(a,b)*(cnt-1)-b;
    17. if(ans>=0){
    18. puts("Yes");
    19. printf("%lld\n",ans);
    20. }else puts("No");
    21. }
    22. signed main(){
    23. int T;
    24. scanf("%lld",&T);
    25. while(T--) solve();
    26. return 0;
    27. }
  • 相关阅读:
    Spark SQL 概述
    bochs 对 Linux0.11 进行调试 (TODO: 后面可以考虑集成 vscode+gdb+qemu)
    protocol 协议语言介绍
    十月,2024北京老博会,北京养老产业展览会
    利用Python给女朋友跨年放个烟花
    详解nvim内建LSP体系与基于nvim-cmp的代码补全体系
    金仓数据库KingbaseES数据库参考手册(服务器配置参数13. 锁管理)
    大模型背景下软件工程的机遇与挑战
    php获取文件扩展名的三种方法
    手机能做静态二维码吗?用手机做二维码的教程
  • 原文地址:https://blog.csdn.net/weixin_62528401/article/details/126605967
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号