码农知识堂 - 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. }
  • 相关阅读:
    19、架构-虚拟化容器
    Cilium 系列-2-Cilium 快速安装
    java Thread的状态分析
    Web3游戏开发指南【2D】
    canvas 像素操作(图片像素操作)
    微服务实战微服务网关Zuul入门与实战
    Jmeter电商系统压测实战<二>
    聊聊如何利用springcloud gateway实现简易版灰度路由
    【云原生】配置Kubernetes CronJob自动备份Clickhouse数据库(单机版)
    非金属管道探测仪 TFN HD15D 智能燃气PE管道定位仪 地下非金属管线探测仪
  • 原文地址:https://blog.csdn.net/weixin_62528401/article/details/126605967
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号