码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C. Jumping on Tiles codeforces1729C


    Problem - C - Codeforces

    题目大意:给出一个字符串s,从第一个字符开始,每次可以移动到任意一个字符,费用为两个字符的差值,问在费用最低的情况下,怎么用最多的步数到字符串最后一个字符

    思路:费用最小值就等于第一个字符到最后一个字符的费用,要想步数最多,就要依次经过头尾两个字符中间的字符,用一个结构体储存字符和他在字符串中的位置,如果头字符大于尾字符,就按字符从大到小排序,否则按从小到大排序,然后遍历排序后的数组,找到头元素后,记录步数,将字符位置记录到数组里,知道找到尾字符后退出循环

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. const int N = 2e5 + 5;
    6. struct ch
    7. {
    8. char c;
    9. int po;
    10. }a[N];
    11. int p[N];
    12. bool cmp(ch a, ch b)
    13. {
    14. if (a.c == b.c)
    15. return a.po < b.po;
    16. return a.c > b.c;
    17. }
    18. bool cmp2(ch a, ch b)
    19. {
    20. if (a.c == b.c)
    21. return a.po < b.po;
    22. return a.c < b.c;
    23. }
    24. int main()
    25. {
    26. int t;
    27. cin >> t;
    28. while (t--)
    29. {
    30. string s;
    31. cin >> s;
    32. int len = s.length();
    33. int cnt = 0;
    34. for (int i = 0; i < len; i++)
    35. {//a储存字符和字符的位置
    36. a[++cnt].c = s[i];
    37. a[cnt].po = cnt;
    38. }
    39. if (s[0] > s[len - 1])
    40. {//头字符大于尾字符就从大到小排序
    41. sort(a + 1, a + len + 1, cmp);
    42. }
    43. else
    44. {
    45. sort(a + 1, a + len + 1, cmp2);
    46. }
    47. printf("%d", abs(s[0] - s[len - 1]));
    48. int ans = 0;
    49. bool temp = 0;
    50. for (int i = 1; i <= len; i++)
    51. {
    52. if (!temp&&a[i].c == s[0])
    53. {//找到了头字符
    54. temp = 1;
    55. p[++ans] = a[i].po;
    56. }
    57. else if (a[i].po == len)
    58. {//找到了尾字符
    59. p[++ans] = a[i].po;
    60. break;
    61. }
    62. else if (temp)
    63. {//头字符和尾字符之间的元素
    64. p[++ans] = a[i].po;
    65. }
    66. }
    67. printf(" %d\n", ans);
    68. for (int i = 1; i <= ans; i++)
    69. {
    70. printf("%d ", p[i]);
    71. }
    72. printf("\n");
    73. }
    74. return 0;
    75. }

  • 相关阅读:
    springboot家政服务管理平台springboot29
    gRPC简介
    视频下载为什么需要大带宽服务器?
    react antdpro优化(一)开启gzip 并正确配置nginx
    QML中的模板方法模式
    【Flutter】Flutter 包管理(13)国际化 使用 intl 包处理 负数 性别 双向文本 复杂的日期和数字格式化
    conda环境下pip安装tb_nightly失败解决方案
    PHP 异常处理
    微服务效率工具 goctl 深度解析(上)
    linux进程间通信之消息队列
  • 原文地址:https://blog.csdn.net/ashbringer233/article/details/126945965
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号