Codeforces Round 948 (Div. 2) A~D

OpencvSharp学习笔记(一):图片的打开,保存灰度化,保存 近来萌生了学习OpenCv的想法,经过度娘得知老夫会的C#不能直接用OpenCv,只能用他的儿子OpenCvSharp与EmguCV,奈何奈何,这两玩意的资料少的出奇,只能慢慢的摸索了,EmguCV先不说,老夫找到了牛批的资料,先摸索OpencvSharp吧 首先打开VS通过Nuget安装 选择版本后点击安装就OK了. 安装完成后,引用里面就有以下的玩意儿了… 废话不多说了,在写程序前先 using OpenCvSharp 图片打开,灰度化,保存代码如下: static void Main(strin 阅读详情

A. Little Nikita (思维)

题意:

小AAA决定用一些立方体建一座塔。一开始,塔上没有任何立方体。在一次移动中,小AAA要么正好把 111 个立方体放到塔顶,要么正好从塔顶移走 111 个立方体。存不存在一种可能使得在走了 nnn 步之后,塔顶正好有 mmm 个立方体?

分析:

当n≥mn \ge mn≥m并且n,mn,mn,m奇偶性一样才符合题意,否则不可以。

代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n, m;
        cin >> n >> m;
        if (n >= m && (n - m) % 2 == 0) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
    return 0;
}

B.Binary Colouring (思维)

题意:

给你一个正整数 xxx 。请找出下列条件成立的任意整数数组 a0,a1,…,an−1a_0, a_1, \ldots, a_{n-1}a0​,a1​,…,an−1​ :

  • 1≤n≤321 \le n \le 321≤n≤32 ,
  • aia_iai​ 是 111 、 000 或 −1-1−1
  • x=∑i=0n−1ai⋅2ix = \displaystyle{\sum_{i=0}^{n - 1}{a_i \cdot 2^i}}x=i=0∑n−1​ai​⋅2i ,
  • 不存在同时满足 ai≠0a_{i} \neq 0ai​=0 和 ai+1≠0a_{i + 1} \neq 0ai+1​=0 的下标iii

保证存在一个有效的数组。

分析:

如果没有相邻两项必有一项为000的限制,那么就是写出nnn的二进制形式。如果nnn的二进制有大于等于222个111相邻,将最低位置为−1-1−1,最高位的后一项置为111,双指针判断即可。

代码:

#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        vector<int> a(32), b(32);
        for (int i = 0; i <= 31; i++) {
            if (n >> i & 1) {
                a[i] = 1;
                b[i] = 1;
            } else {
                a[i] = 0;
                b[i] = 0;
            }
        }
        for (int i = 0; i < 32;) {
            if (a[i] != 0 && b[i + 1] != 0) {
                int pos = i;
                while (a[i] != 0 && i <= 31) {
                    i++;
                    b[i] = 0;
                }
                a[i] = 1;
                b[pos] = -1;
                b[i] = 1;
                if (i == 32)
                    break;
            } else {
                i++;
                if (i == 32)
                    break;
            }
        }
        cout << 32 << endl;
        for (int i = 0; i < 32; i++) {
            cout << b[i] << " ";
        }
        cout << endl;
    }
    return 0;
}

C.Nikita and LCM(数学)

题意:

假设有一个长度为 nnn 的整数数组 aaa 。如果数组的一个子序列的最小公倍数 (LCM)(LCM)(LCM)不包含在 aaa 中,称该子序列为特殊序列。空子序列的 LCMLCMLCM 等于 000 。
询问 aaa 的最长特殊子序列的长度是多少?

分析:

如果所有数的最小公倍数大于数组中最大值,那么就可以全选。否则数组中所有数一定都是最小公倍数的约数,那么我们就能保证最终选出来的数组的最小公倍数一定也是其约数。那么我们枚举可能的约数然后判断一遍即可。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int mod = 998244353;

LL gcd(LL a, LL b) {
    return b == 0 ? a : gcd(b, a % b);
}

LL lcm(LL a, LL b) {
    return a * b / gcd(a, b);
}

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        vector<int> a(n);
        for (int i = 0; i < n; i++)
            cin >> a[i];
        sort(a.begin(), a.end());
        set<int> tmp;
        for (int i = 0; i < n; i++)
            tmp.insert(a[i]);
        bool ok = 0;
        for (int i = 0; i < n; i++) {
            if (a[n - 1] % a[i])
                ok = 1;
        }
        if (ok) {
            cout << n << endl;
            continue;
        }
        int ans = 0;
        auto check = [&](int x) -> int {
            if (tmp.find(x) != tmp.end())
                return 0;
            int g = 1;
            int cnt = 0;
            for (int i = 0; i < n; i++) {
                int num = lcm(g, a[i]);
                if (x % num)
                    continue;
                cnt++;
                g = num;
            }
            if (g != x)
                return 0;
            return cnt;
        };
        for (int i = 1; i * i <= a[n - 1]; i++) {
            if (a[n - 1] % i)
                continue;
            ans = max(ans, check(i));
            ans = max(ans, check(a[n - 1] / i));
        }
        cout << ans << endl;
    }
    return 0;
}

D.XORificator (字符串)

题意:

给一个仅由000和111组成 n×mn \times mn×m 矩阵。你可以反转一次所选行中的所有值。规定矩阵中的一列如果正好包含一个111,则被视为特殊列。在至多进行一次操作的情况下,请找出最多有多少列可以被特殊化。

分析:

我们发现对于每一列,若它们对答案有贡献,一共有nnn种情况,且这nnn种情况一定各不相同,那么我们把各列的这些情况全部记录下来,同时记录出现次数,记作cntcntcnt。
我们将字符串记作哈希值,那么答案就是 cntcntcnt 中的最大值。这样我们同时也知道答案对应的字符串哈希值numnumnum,我们重新枚举各列对答案的贡献tmptmptmp,当tmp=numtmp=numtmp=num 即找到对应的字符串。

代码:

#include <bits/stdc++.h>

using namespace std;
using ULL = unsigned long long;
const int maxn = 3e5 + 5;
static const ULL mod = (1ull << 61) - 1;
ULL power[maxn];
mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<ULL> dist(mod / 2, mod - 1);
const ULL base = dist(rnd);

static inline ULL add(ULL a, ULL b) {
    a += b;
    if (a >= mod)
        a -= mod;
    return a;
}

static inline ULL mul(ULL a, ULL b) {
    __uint128_t c = __uint128_t(a) * b;
    return add(c >> 61, c & mod);
}

ULL merge(ULL h1, ULL h2, int len2) {
    return add(mul(h1, power[len2]), h2);
}

void init() {
    power[0] = 1;
    for (int i = 1; i < maxn; i++)
        power[i] = mul(power[i - 1], base);
}

ULL query(const vector<ULL> &s, int l, int r) {
    return add(s[r], mod - mul(s[l - 1], power[r - l + 1]));
}

vector<ULL> build(const string &s) {
    int sz = s.size();
    vector<ULL> hashed(sz + 1);
    for (int i = 0; i < sz; i++) {
        hashed[i + 1] = add(mul(hashed[i], base), s[i]);
    }
    return hashed;
}

int main() {
    init();
    int T;
    cin >> T;
    while (T--) {
        int n, m;
        cin >> n >> m;
        vector<string> s(m);
        for (int i = 0; i < m; i++)
            s[i].resize(n);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                cin >> s[j][i];
            }
        }
        unordered_map<ULL, int> mp;
        vector<vector<ULL>> tmp(m, vector<ULL>(n));
        for (int i = 0; i < m; i++) {
            auto hash = build(s[i]);
            for (int j = 1; j <= n; j++) {
                ULL hash1 = query(hash, 1, j - 1);
                ULL hash2 = ULL(s[i][j - 1] ^ 1);
                ULL hash3 = query(hash, j + 1, n);
                tmp[i][j - 1] = merge(merge(hash1, hash2, 1), hash3, n - j);
                mp[tmp[i][j - 1]] += 1;
            }
        }
        int maxval = -1;
        ULL ans = 0;
        for (auto &[x, y]: mp) {
            if (y > maxval) {
                maxval = y;
                ans = x;
            }
        }
        auto get = [&]() {
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    if (tmp[i][j] == ans) {
                        s[i][j] ^= 1;
                        cout << s[i] << endl;
                        return;
                    }
                }
            }
        };
        cout << maxval << endl;
        get();
    }
    return 0;
}

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

ISE 14.7 MCS文件的生成--- Spartan3AN XC3S200AN 步骤一: Generate Programming File生成 .bit文件 步骤二: Tools——>iMPCAT 步骤三: iMPACT Flows——>双击“Create PROM File(PROM File Formatter)” 步骤四: Non-Volatile FPGA——>点击”Spartan 3AN“——>点击“绿色箭头”——>Spartan3AN(bits)——>选择“xc3s200an"——>点击”Add storage Device“— 阅读详情

相关推荐

解决nfs挂载根文件系统报错:VFS: Unable to mount root fs via NFS, trying floppy.

解决nfs挂载根文件系统报错的问题:VFS: Unable to mount root fs via NFS, trying floppy.

汉尼拔勇闯天涯 4573

Codeforces Round 948 (Div. 2)

思路:有个非常重要的性质,对于某一列,假设确定了这一列的哪一行有1,那么这个图已经可以确定了。思路:如果n<m,显然不行。再看n>=m的情况,可以先假定放刚好m个,在思考是否可以在接下来的步骤使方块数不变。题意:给定一个数组,找到一个子数组,需使这个子数组的lcm(最小公倍数)不存在于给定的数组,问这个子数组的最大长度是多少。题意:有n次机会,每次可以选择放一个方块或者拿走一个,问最后是否可以有m个方块。题意:构造题,懒得描述了,直接看,其中第三条可以转换成不存在连续的1或-1。

2301_80041146的博客 923

ThingsBoard 3.1.1版本在window本地运行之TB-Gateway服务搭建(三)

TB-gateway服务是TB不可或缺的部分,很多的协议都需要TB-gateway来做分类处理,今天我们就来做TB-Gateway服务搭建。

晚点遇见你,余生都是你! 2474

Codeforces Round #948 (Div. 2) B (素数筛+思维)

题目链接: http://codeforces.com/contest/948/problem/B 2018-03-1517:55:53 题意:小花和她的好朋友嘉瑜君玩游戏 第一个数字Xo确定 后面的数字X1由前面一个数字确定 确定的方式是 找到小于等于Xo的一个质数 在质数的倍数中 不小于Xo的最小的数字就是下一个数字 NODE:由上文可知 当Xo为质数的时候 Xo与X1可能相等 给出...

weixin_34190136的博客 234

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 291

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

Codeforces Round #948 (Div. 2) D

题目链接:http://codeforces.com/contest/948/problem/D 题意:小花的男朋友是个智障 忘记了加密的密码 那么 就像题目前面的一大堆一样 这两句话是没有用的 给n个数字的a数组和n个数字的p数组 对于每一个a[i]在p数组里选一个数字 两者异或得到新的数组c[i] 为了使得c[i]数组的字典序最小 如何安排a[i]与p[]数组中的那个数字异或呢 p[...

weixin_33895604的博客 192

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 544

codeforces round 948(div.2)

codeforces round 948(div.2) AB

2301_79426686的博客 949

YOLOv9原创自研:卷积魔改 | 一种新颖的风车形卷积(PConv)融合注意力机制,加强微弱小目标检测能力

为了进一步提升小目标检测能力,风车形卷积(PConv)融合注意力机制进一步提升小目标检测能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 361

用 Claude Code 快速摸清一个陌生代码库

摘要:Claude Code作为AI编码助手,能帮助开发者快速理解陌生代码库。与传统代码搜索不同,它从项目根目录出发,通过分析目录结构、配置文件等技术栈信息,提供系统级的概览。最佳实践是先通过"give me an overview"获取整体架构,再深入数据模型、认证流程等核心模块。它能生成术语表、编码规范和推荐的代码阅读路径,极大降低新成员的学习成本。相比传统方式,Claude Code能主动探索项目上下文,无需人工整理相关文件,使代码理解过程更接近有经验的工程师带教。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 91

Codeforces Round 948 (Div. 2)的B题,思路就是最后一张图片

【代码】Codeforces Round 948 (Div. 2)的B题,思路就是最后一张图片。

2303_79552392的博客 234

生存曲线绘制及图例标签添加(使用R语言)

数据应该包含两列:一个是表示个体生存时间的时间变量(通常称为"时间(time)“)和一个是表示个体是否发生事件(如死亡)的事件变量(通常称为"事件(event)”)。通过修改上述代码中的数据和参数,您可以根据自己的需求绘制生存曲线,并添加相应的图例信息和标签。生存曲线是在生存分析中常用的工具,用于描述一组个体随时间的存活概率。函数的第一个参数指定图例的位置,这里我们选择了右上角(“topright”)。包来进行生存曲线的绘制,并通过添加图例信息和标签来增强可视化效果。的数据框,包含这两列数据。

CyberXZ的博客 555

Codeforces Round 948

Codeforces Round 948

青少年趣味编程 908

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Codeforces Round 948 (Div. 2) C题 Nikita and LCM(LCM,思维)

数组的任意一个子序列的最小公倍数(LCM),其一定为。,并同时记录子序列的长度的最大值即可。是否为满足要求的子序列的。

weixin_74754298的博客 938

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Codeforces Round 971

Codeforces Round 971

青少年趣味编程 1514

VC中sqlite的使用

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

Codeforces Round 960

Codeforces Round 960

青少年趣味编程 705

Codeforces Round 967

Codeforces Round 967

青少年趣味编程 1004

Codeforces Round 950

Codeforces Round 950

青少年趣味编程 966

Codeforces Round 963

Codeforces Round 963

青少年趣味编程 696

Codeforces Round 948 (Div. 2)题解

给一个正整数x,是否可以构造一个由-1,0,1组成的二进制,求和得x,并且数组中不能出现连续不为0的情况。若区间 [ l , r ] 标记全为1时,可以转化为 l 处为-1,r+1 为1。一共可以走n步,每走一步可以放置或者取走一个方块,n步后是否可以得到m个方块。若 i 处为 1,i+1 处为 -1,等价于 i 处为 -1,i+1 处为0。若 i 处为 -1,i+1 处为 1,等价于 i 处为1,i+1 处为0。保证(n+m)和(n-m)为偶数,并且n>=m。设+1次数为x,-1次数为y。

Cgetierr的博客 629

Codeforces Round 948 (Div. 2) A - C

【代码】Codeforces Round 948 (Div. 2)

Xyrsis的博客 359

Codeforces Round 952

Codeforces Round 952

青少年趣味编程 655

codeforces round 948 div2(a,b,c)

给定正整数xxx,构造满足以下条件的数列。

weixin_70831807的博客 1170

【CF】Day62——Codeforces Round 948 (Div. 2) CD (思维 + LCM + 枚举因数 | 思维 + 哈希)

非常好的思维题,顺便复习了一下快速枚举因数和lcm的性质我们先来看答案的上界,即全选,此时说明 lcm(a1,a2,a3,...) > a_max 其中 a_max 为 a 中最大的数,那么如果答案不是 n 呢?既然不是 n,也就是说如果我们全选的话这个数会出现在 a 中,而如果要出现在 a 中,显然这个数一定是 a_max那么我们可以假设最后不在 a 中的 lcm 为 m,而根据 lcm 性质我们可以知道子序列的lcm 肯定是整个序列lcm 的一个 因数 x。

qq_61422664的博客 460

Codeforces Round 948 (Div. 2) C. Nikita and LCM 题解 数学

LCM 因数 数学 Codeforces题解 C++代码 附详细注释

一只摸鱼的bbc 1572
上一篇: AtCoder Beginner Contest 356 A~F
下一篇: 信息学一周赛事安排
AC-Panda
博客等级 码龄5年 1736粉丝 191原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值