Codeforces Round #738 (Div. 2)

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub 构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。 阅读详情

A Mocha and Math

题目大意

给定一个长度为n的数组,然后给定一个操作:每次选择一个区间l,r使得a[l] = a[l]&a[r], a[l + 1] = a[l + 1] & a[r - 1]…以此类推,你可以对此操作执行任意次,求最终数组中最大值的最小值

主要思路

我们思考如何得到最小值

  • &操作不会使数变大,只会使数变小,那么我们能得到的最小值就是把数组中的所有数&起来,那么如何才能让这个值成为答案呢
  • 首先我们取l,r为整个数组,其次取l,mid和mid + 1, 然后继续二分区间直到最后数组中的每个数就为将原序列都&起来的那个最小值

所以答案就是把数组中所有数都&起来即可

AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010;
int n, a[N];

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        for(int i = 0; i < n; i++) cin >> a[i];
        
        int res = a[0];
        for(int i = 1; i < n; i++) res &= a[i];
        cout << res << endl;
    }
    return 0;
}

B Mocha and Red and Blue

题目大意

给定一个字符串让你把字符串中的?改为R或者B,问该串最少有多少对相邻且相同的字符

主要思路

贪心即可,让R周围的?是B,B周围的?是R

我是用队列实现的,应该有更简单的写法

AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010;
int n, a[N];

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        string s;
        cin >> s;
        queue<int> q;
        int len = s.size();
        for(int i = 0; i < s.size(); i++) if(s[i] != '?') q.push(i);
        
        if(q.size() == 0)
        {
            s[0] = 'R';
            q.push(0);
        }
        
        while(q.size())
        {
            int t = q.front();
            q.pop();
            if(t - 1 >= 0 && t - 1 < len && s[t - 1] == '?')
            {
                if(s[t] == 'R') s[t - 1] = 'B';
                else s[t - 1] = 'R';
                q.push(t - 1);
            }
            
            if(t + 1 >= 0 && t + 1 < len && s[t + 1] == '?')
            {
                if(s[t] == 'R') s[t + 1] = 'B';
                else s[t + 1] = 'R';
                q.push(t + 1);
            }
        }
        cout << s << "\n";
    }
    return 0;
}

C Mocha and Hiking

题目大意

给定一个图,问能否找到一条路径使得能不重复的走遍所有点

主要思路
  • 首先当a[1]为1时,路径为 n + 1 -> 1 -> 2 … -> n
  • 然后当a[n]为0时,路径为 1 -> 2 -> 3 …-> n -> n + 1
  • 然后当给定的数组中出现0 1序列时,一定会有 1 -> … -> i -> n + 1 -> i + 1 -> … -> n,接下来判断什么时候会出现0 1序列,当a[1]不为1且a[n]不为0时(因为已经特判),数组中一定会出现0 1序列,所以找到该序列即可,不存在无解情况
AC代码
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010;
int n, a[N];

signed main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    cin >> T;
    while(T--)
    {
        cin >> n;
        for(int i = 1; i <= n; i++) cin >> a[i];
        if(a[1] == 1)
        {
            cout << n + 1 << ' ';
            for(int i = 1; i <= n; i++) cout << i << ' ';
            cout << "\n";
        }
        else if(a[n] == 0)
        {
            for(int i = 1; i <= n + 1; i++) cout << i << ' ';
            cout << "\n";
        }
        else
        {
            int cnt = -1;
            for(int i = 2; i <= n; i++)
            {
                if(a[i - 1] == 0 && a[i] == 1)
                {
                    cnt = i;
                    break;
                }
            }
            
            for(int i = 1; i < cnt; i++)
            {
                cout << i << ' ';
            }
            cout << n + 1 << ' ';
            for(int i = cnt; i <= n; i++)
            {
                cout << i << ' ';
            }
            cout << "\n";
        }
    }
    return 0;
}

D Mocha and Diana (Easy Version)

题目大意

给定两个森林,问给左边森林加一条边的同时也必须在右边的森林加一条边(两条边必须都未连接过),且连接后两边还是森林,问最多能连几条边

主要思路

我们用并查集维护两个森林,由于n范围为1000,所以暴力枚举所有边,判断是否能连接即可,改边能连接的条件是,两个点在两个森林中都在不同的树上

AC代码
#include <bits/stdc++.h>

using namespace std;
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
typedef long long ll;
const int N = 200010;
int n, m1, m2;
int p1[N], p2[N]; //存储每个点的祖宗节点
int ans;
pair<int, int> p[N];

    // 返回x的祖宗节点
int find(int x, int p[])
{
    if (p[x] != x) p[x] = find(p[x], p);
    return p[x];
}

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int T;
    T = 1;
    while(T--)
    {
        cin >> n >> m1 >> m2;
        for (int i = 1; i <= n; i ++ ) p1[i] = i;
        for (int i = 1; i <= n; i ++ ) p2[i] = i;
        
        for(int i = 0; i < m1; i++)
        {
            int a, b;
            cin >> a >> b;
            int t1 = find(a, p1);
            int t2 = find(b, p1);
            if(t1 != t2)
            {
                p1[t2] = t1;
            }
        }
        
        for(int i = 0; i < m2; i++)
        {
            int a, b;
            cin >> a >> b;
            int t1 = find(a, p2);
            int t2 = find(b, p2);
            if(t1 != t2)
            {
                p2[t2] = t1;
            }
        }
        
        for(int i = 1; i <= n; i++)
        {
            int t1 = find(i, p1);
            int r1 = find(i, p2);
            for(int j = 1; j <= n; j++)
            {
                if(i == j) continue;
                int t2 = find(j, p1);
                int r2 = find(j, p2);
                
                if(t1 != t2 && r1 != r2)
                {
                    p[ans++] = {i, j};
                    p1[t2] = t1;
                    p2[r2] = r1;
                }
            }
        }
        cout << ans << endl;
        for(int i = 0; i < ans; i++)
        {
            cout << p[i].x << ' ' << p[i].y << endl;
        }
    }
    return 0;
}
图像处理 | 基于matlab的多尺度Retinex(MSR)和自适应直方图均衡化(CLAHE)算法联合的低照度图像增强(附代码) 本文介绍了一种基于多尺度Retinex(MSR)和CLAHE的低照度图像增强算法。算法首先对图像进行多尺度Retinex处理,通过不同尺度的高斯核去除光照影响;然后采用CLAHE算法进行对比度增强。Matlab实现展示了算法流程,包含灰度转换、多尺度Retinex增强和CLAHE处理。实验结果显示,该方法能有效提升低照度图像的可见性,增强细节表现。最后提出了改进建议,包括引入深度学习方法和优化参数选择。 阅读详情

相关推荐

开发者体验度量:构建DevEx评估体系的方法论与工具

在深入讨论度量方法前,我们需要明确什么是开发者体验(DevEx)。许多人将其简化为"开发工具好不好用",这是一个危险的误解。开发者体验是指开发者在完成工作过程中的整体感受和效率,它由三大核心维度组成:工具与基础设施:开发、测试、部署工具链的效能流程与协作:工作流程的顺畅度和团队协作的效率文化与成长:支持实验、学习和专业发展的环境这三个维度相互作用,共同决定了开发者能否高效且愉悦地完成工作。开发者体验不是一个目的地,而是一段持续的旅程。

2401_88760782的博客 1429

【无标题】编写一个函数int Count(double a[],int n),统计出具有n个元素的一维数组中大于等于所以元素平均值的元素个数并返回这个值

【代码】【无标题】编写一个函数int Count(double a[],int n),统计出具有n个元素的一维数组中大于等于所以元素平均值的元素个数并返回这个值。

Ll801003的博客 361

基于Java的高校校园点餐系统

本文介绍了一个基于Java技术开发的高校校园点餐系统,该系统以B/S结构为基础,采用MySQL作为数据库,实现了一个高效、便捷的在线点餐平台。系统主要面向三类用户:管理员、用户和食堂工作人员,提供包括用户管理、食堂管理、菜单管理、订单管理等在内的多项功能。通过系统的具体测试,验证了其可行性和有效性,为高校师生提供了一个科学化、系统化的点餐服务。高校校园点餐系统的开发和实现,不仅提高了校园餐饮服务的效率和质量,也为师生提供了一个更加便捷的点餐体验。

a632341031的博客 840

【AcWing 100】 增减序列 差分+贪心 详解

给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。 输入格式 第一行输入正整数n。 接下来n行,每行输入一个整数,第i+1行的整数代表ai。 输出格式 第一行输出最少操作次数。 第二行输出最终能得到多少种结果。 数据范围 0<n≤105, 0≤ai<2147483648 输入样例: 4 1 1 2 2 输出样例: 1

待到山花烂漫时 2118

Aspose Java 25.10 版本深度破解:基于字节码修改的实战指南

本文提供了Aspose Java 25.10版本基于字节码修改的实战指南。详细介绍了如何通过Javassist工具逆向分析并修改Aspose Cells、Words、Slides及PDF组件的许可证验证逻辑,从而实现绕过限制,并完成最终的打包与功能验证。

stone的博客 1362

详解一典型的反激式开关电源方案

如图,在某系统方案上看到下图所示的单端反激式开关电源方案。

alala120的博客 1万+

Codeforces Round #738 (Div. 2)【solve 5/6】

A:Mocha and Math 给定一个长度为n的序列,选择一个区间 [L, R] ,对于所有的值i(0≤i≤r-l),同时用aL + i & aR - i 替换aL + i 。这个操作可以进行任意次。求序列最大值的最小值。 一个简单的例子 2 3 7 9 ,他们的二进制表示为 0010 0011 0111 1011 由位与的性质易知,只要某个数位上存在0 ,它可以通过操作扩散到每一个值,即答案中该数位为0。 #include <bits/stdc++.h> using names

qq_29541301的博客 238

Unity 面试篇|(二)Unity基础篇 【全面总结 | 持续更新】

在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。一个程序在运行(执行)的过程中所需要的硬件和软件环境运行时的主要作用是提供程序运行所需要的环境和基础设施,通过为程序提供内存分配、线程管理、类型检查、对象实例化和垃圾回收等操作来支持程序的运行公共语言运行时(Common Language Runtime,CLR)是整个.NET框架的核心,它为.NET应用程序提供了一个托管的代码执行环境。

游戏开发小Y的博客 13万+

Cities(区间dp)

题意: 给出一个长度为 n 的数组,一次操作可以选择一段连续且值都相同的区间,然后使其变成其他值,问最少需要多少次操作,才能使得数组的值全相等。数组中每个数最多出现 15 次。 思路: 首先分析,可以直接将n个数压缩成m个不同的数的数组,m个数如果全部不同那么需要m-1 次操作,其实这题的最少多少次操作我们需要把他转化成最多减少多少次操作,能想到这点就好做了,dp[i][j]表示i到j的区间内最多减少多少次操作。状态转移方程就如下: 枚举K 的位置就可以得到答案了 ,ans= m-1-dp[1].

lxddddas的博客 239

【SpringBoot 4.x 第29节】Spring Security 7 入门:先理解认证和授权!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 553

【Power Compiler手册】4.saif文件

功耗计算的准确性取决于切换活动数据的准确性。这些数据是通过使用RTL仿真或门级仿真生成的,并存储在SAIF文件中。在执行功耗优化和分析之前,应该使用SAIF文件来反标设计对象上的切换活动信息。SAIF是由Synopsys支持的ASCII格式,用于促进不同Synopsys工具之间的信息交换(参见IEEE 1801标准,附录J)。使用`read_saif`命令读取SAIF文件,使用`write_saif`命令写出SAIF文件。有关更多信息,请参见`read_saif`和`write_saif`命令的手册页。

QRBQ 2187

Codeforces Round #738 (Div. 2)题解全集

emm作为验题人,首先感谢崔哥的邀请 test情况来看E是比D2要简单一点点的(( 确信 前四题太过于简单。 emmm赛后已经过穿了,D2网友的神仙随机化写法太秀了。 Mocha and Math A题 其实&操作是会保留共同的1,那么只需要记录n个数的2进制位上哪一位是n个数共有的,就可以算出答案了。 int n; int cnt[33]; int main() { ios :: sync_with_stdio(false); cin.tie(0); int t;

weixin_45948940的博客 305

【微信小程序-uniapp】CustomPicker 自定义单项选择器组件

自定义底部弹出框单项选择器组件,适用于uniapp小程序

Komorebi_00的博客 1532

Codeforces Round #738 (Div. 2) 题解

文章目录前言A.Mocha and MathB. Mocha and Red and BlueC. Mocha and Hiking总结 前言 蒟蒻又来发题解了,今天感觉没有水题 又是哭哭唧唧写题的一天啊QAQ A.Mocha and Math A题原题戳这里 题目的大致意思:利用&(与运算符)对给定数字序列中的任意两个数进行操作,求指定任意区间所得结果的最大值的最小值。(实质上是求所有元素按照二进制来看的相同位置上都是1的位数进行统计后取得最小值) 题解: #include<iostre

lfy0的博客 329

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Codeforces Round #738 (Div. 2) A--D1

原题戳这里Codeforces Round #738 (Div. 2) A. Mocha and Math 题目大意 通过对某个区间内的数进行题目所给操作 希望最小化序列中的最大值 思路 万恶的位运算竟然出现在第一题说明只要转个小弯就能看破 一个数和其他数做位与运算(以下自己结合运算特点想一想就能想通) 要么不变(与自己相同的数) 要么变小(与自己不同的数) 所以和别的元素相与时不亏的,所以全部与一遍就好啦 因为操作次数不限,所以一定能实现上述 代码 #include&l

m0_60610120的博客 940

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Codeforces Round #738 (Div. 2) E

Codeforces Round #738 (Div. 2) 莫比乌斯函数+前缀和背包 #include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) #define dep(i,a,b) for(int i=a;i>=b;i--) #define db double #define V vector #define pb push_back #define N 100007

weixin_44539230的博客 197

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Codeforces Round #738 (Div. 2) 2021.08.16

Codeforces Round #738 (Div. 2) 闲话:手速场,题区分度有点差。前四题比较简单就简单说一下。 A. Mocha and Math 因为操作次数是任意的,每次一个数&上另一个数肯定是会变小的,那么最小值就是所有数&起来。 代码: https://codeforces.com/contest/1559/submission/125947426 /* * @Autor: violet apricity (zpx) * @Date: 2021-07-22 22:06:

violet-apricity的博客 222

Codeforces Round #738(Div.2)

Codeforces Round #738(Div.2) 比赛链接:https://codeforces.com/contest/1559 A - Mocha and Math #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> /*因为操作次数是任意的,每次一个数&上另一个数肯定是会变小的, 那么最小的最大值值就是所有数&起来。 */

m0_51876133的博客 220

Codeforces Round #738 (Div. 2) 题解(A-D1)

Codeforces Round #738 (Div. 2) 题解(A-D1) A. Mocha and Math 题目大意: 存在一个长度为nnn的整数数组,可以选择任意一个区间[l,r][l,r][l,r]对于所有的i(0≤i≤r−l)i(0\le i\le r-l)i(0≤i≤r−l),将aia_iai​变成al+i&ar−ia_{l+i}\And a_{r-i}al+i​&ar−i​,这种操作可以执行无数次。 问整个数组中最大值能取到的最小值是多少。 解题思路: 其实这个操作看似很复

qq_43657674的博客 341
上一篇: Codeforces Round #737 (Div. 2)
下一篇: Codeforces Round #739 (Div. 3) A~F2
zhbbbb!
博客等级 码龄7年 43粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值