Codeforces Round #605 (Div. 3)

A. Three Friends

给三个数a,b,c,问这三个数分别进行+1,-1和不变,三种操作中的任何一种之后,得到的|a-b|+|a-c|+|b-c|的最小值是多少?

题解:

三重for循环,让他们分别进行-1,+0,+1操作,找出最小的|a-b|+|a-c|+|b-c|

B. Snow Walking Robot

一个机器人,能够上下左右的在二维坐标中行走,现在给出需要上下左右(UDLR)行走的标记符,你需要在删除一些或不删除标记符的情况下重新排列机器人走的顺序使得标记符数量最多并且机器人不会走到之前走过的坐标(初始坐标除外),输出最大的标记符数以及机器人走的顺序。

题解:

计算UDLR各自的数量,并且UD=min(U,D);LR=min(L,R);

  1. UD==0&&LR==0直接输出0
  2. UD==0输出2再输出LR
  3. LR==0输出2再输出UD
  4. UD!=0&&LR!=0,输出(UD+LR)*2,然后输出UD个U字符,LR个R字符,UD个D字符,LR个L字符

C. Yet Another Broken Keyboard

给一个长度为n的小写字符和26个英文字符的一部分,对于n个字符中连续的满足给出字符的长度m,让你求各个m的m*(m+1)/2的和。

题解:

用flag标记给出的英文字符,然后分别求连续的字符长度,对于flag[str[i]-'a']==0时,计算ans=ans+m*(m+1)/2,m=0;for循环结束之后再计算ans=ans+m*(m+1)/2,m=0。最后输出ans

D. Remove One Element

给出一个长度为n的数字序列,你可以删除其中的一个字符或不删除任何字符情况下,让你求最大的严格递增的序列长度。

题解:

  1. 在不删除任何字符的情况下,求最长的严格递增的序列长度ans
  2. 判断可能需要删除的字符,判断条件为:!(key[i-1]<key[i]&&key[i]<key[i+1])&&key[i-1]<key[i+1],满足条件则应该删除这个key[i],ans=max(ans,计算key[i]之前严格递减的连续序列的长度+key[i]之后严格递增的连续序列的长度)
  3. 输出ans即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值