Codeforces Round #738 (Div. 2) 题解

前言

蒟蒻又来发题解了,今天感觉没有水题 又是哭哭唧唧写题的一天啊QAQ

A.Mocha and Math

A题原题戳这里

题目的大致意思:利用&(与运算符)对给定数字序列中的任意两个数进行操作,求指定任意区间所得结果的最大值的最小值。(实质上是求所有元素按照二进制来看的相同位置上都是1的位数进行统计后取得最小值)

题解:

#include<iostream>
using namespace std;
int main()
{
   
    int t;
    cin >> t;
    while(t--)
    {
   
        int n;
        cin >> n;
        int x;
        cin >> x;//序列中的第一个数
        for(int i = 0; i < n - 1; i++)
        {
   
            int y;
            cin >> y;
            x &=y;//并不是每一次都是将后一个的位数直接覆盖到前面,而是将两者位数进行比较之后取得相等位数取最小值(x=x&y)
        }
        cout << x << endl;
    }
    return 0;
}

B. Mocha and Red and Blue

B题原题戳这里

题目的大致意思:将给定的一串字符进行红蓝涂色,相邻位置尽量不涂相同颜色,所有字符都要涂色,已经涂过颜色的字符颜色不能更改。最后要求输出涂色相邻位置颜色不同的组数最大的一种涂色方法。

解题思路:先将字符串从前往后遍历,根据已经给出的有颜色的字符依次填充与之相邻的空处,然后从后向前遍历,填充未能填充的部分(比如从前往后遍历的时候未能涂色的开头一个字母,或者从开头往后都是没有颜色的连续字符串),最后不要忘掉如果给定的字符串都未进行涂色的情况要单独涂色,看自己想怎么涂交替进行就可以啦!
***也不用担心相邻两个涂色部分中间直接进行循环涂色会达不到题目想要的答案,题目中间需要涂色的情况无非一以下几种:***

第一种:两头是相同颜色,中间是奇数个数需要涂色
R???R
根据解题思路进行涂色:
RBRBR

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值