Educational Codeforces Round 168 (Div. 2) A~E

51单片机学习(5)-----蜂鸣器的介绍与使用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。 阅读详情

A.Strong Password(贪心)

题意:

给定一个字符串aaa,你需要在中间(可以是开头或结尾)插入一个字符,使得满足 ai≠ai+1a_i≠a_{i+1}ai​=ai+1​ 的iii最多。

分析:

我们很容易贪心地想到在连续两个相同的字符中间插入一个字符贡献最大。否则在字符串结尾插入一个不同于结尾的字符。再特判一下一个字符和没有连续两个相同字符的情况即可。

代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        string s;
        cin >> s;
        cout << s[0];
        int flag = 0;
        for (int i = 1; s[i]; i++) {
            if (s[i] == s[i - 1] && !flag) {
                flag = 1;
                cout << char((s[i] - 'a' + 1) % 26 + 'a');
            }
            cout << s[i];
        }
        if (!flag) {
            cout << char((s[s.size() - 1] - 'a' + 1) % 26 + 'a');
        }
        cout << endl;
    }
    return 0;
}

B.Make Three Regions (思维)

题意:

有一个2×n2 \times n2×n的网格,上面有些格子是障碍物,有些是空地。保证空地四连通。询问有多少个空地满足把它变成障碍物后,剩余的空地被分为三个四连通块。

分析:

只有这两种情况是符合题意的,我们进行特判即可。
x.x ...
... x.x

代码:

#include <bits/stdc++.h>

using namespace std;
int n;
string s[2];

int main() {
    int T;
    cin >> T;
    while (T--) {
        cin >> n;
        cin >> s[0];
        cin >> s[1];
        int ans = 0;
        for (int i = 1; i < n - 1; i++)
            if (s[0][i - 1] == 'x' && s[0][i + 1] == 'x' && s[0][i] == '.' && s[1][i + 1] == '.' && s[1][i - 1] == '.')
                ans++;
        for (int i = 1; i < n - 1; i++)
            if (s[1][i - 1] == 'x' && s[1][i + 1] == 'x' && s[1][i] == '.' && s[0][i + 1] == '.' && s[0][i - 1] == '.')
                ans++;
        cout << ans << endl;
    }
    return 0;
}

C.Even Positions (贪心)

题意:

一个合法括号序列的权值定义为匹配括号的距离和。给出一个长度为nnn的合法括号序列,但所有的奇数位置的括号都遗失了。你需要找出所有可能的原序列中,权值最小的为多少。

分析:

我们考虑到如果答案要求最小,那么就希望右括号能尽早配对。我们用栈维护前面所有的左括号,如果栈里还有左括号,那能配对就直接配对。剩下的部分一定是有解的。
在这样的操作下,每一步填完之后要么剩下两个左括号,要么什么也不剩下。因为最后一个字符一定是右括号,所以无论何时都是一定有解的。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n;
        string s;
        cin >> n >> s;
        vector<int> tmp;
        LL ans = 0;
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0) {
                if (tmp.empty()) {
                    tmp.push_back(i);
                } else {
                    ans += i - tmp.back();
                    tmp.pop_back();
                }
            } else {
                if (s[i] == '(')
                    tmp.push_back(i);
                else {
                    ans += i - tmp.back();
                    tmp.pop_back();
                }
            }
        }
        cout << ans << endl;
    }
    return 0;
}

D. Maximize the Root (贪心)

题意:

给定一个有根树,由 nnn 个顶点组成。树中的顶点编号从 111 到 nnn ,根是顶点 111 。值 aia_iai​ 写在第 iii 个顶点处。
你可以执行以下任意次操作(可能是零次):选择一个顶点 vvv至少有一个子节点,将 ava_vav​ 增加 111 ,并将所有位于 vvv 子树中的顶点 uuu (除了 vvv 本身)的 aua_uau​ 减少 111 。但是,在每次操作之后,所有顶点上的值都应为非负值。
你的任务是使用上述操作计算在根上写入的最大可能值。

分析:

我们考虑贪心,先把所有子树能给出的颜色的最小值记录下来,记为maxvalmaxvalmaxval。如果当前根结点的值比maxvalmaxvalmaxval大,那么取maxvalmaxvalmaxval(因为根节点无法影响叶子结点),否则的话,根节点和mxmxmx取平均,通过子树把当前根的贡献增大。

代码:

#include <bits/stdc++.h>

const int maxn = 3e5 + 10;
using namespace std;
int n, a[maxn], tmp[maxn];
vector<int> e[maxn];

void dfs(int u, int fa) {
    int maxval = 0, flag = -1;
    for (auto to: e[u])
        if (to != fa) {
            dfs(to, u);
            if (flag == -1) {
                flag = 1;
                maxval = tmp[to];
            } else {
                maxval = min(tmp[to], maxval);
            }
        }
    if (flag == -1) {
        tmp[u] = a[u];
        return;
    }
    if (u == 1) {
        tmp[u] = a[1] + maxval;
        return;
    }
    if (a[u] >= maxval)
        tmp[u] = maxval;
    else
        tmp[u] = (a[u] + maxval) / 2;
}

int main() {
    int T;
    cin >> T;
    while (T--) {
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> a[i], e[i].clear();
        for (int i = 2; i <= n; i++) {
            int x;
            cin >> x;
            e[i].push_back(x);
            e[x].push_back(i);
        }
        dfs(1, 0);
        cout << tmp[1] << endl;
    }
    return 0;
}

E. Level Up (数据结构)

题意:

MonocarpMonocarpMonocarp 正在玩电脑游戏。他以 111 的等级开始游戏。他即将与 nnn 个怪物战斗,顺序从 111 到 nnn 。第 iii 个怪物的等级为 aia_iai​ 。

对于给定顺序中的每个怪物,MonocarpMonocarpMonocarp 的遭遇如下:

  • 如果 MonocarpMonocarpMonocarp 的等级严格高于怪物的等级,则怪物逃跑;
  • 否则,MonocarpMonocarpMonocarp 与怪物战斗。

每与一个怪物进行 kkk 次战斗后(逃跑的怪物不计算在内),MonocarpMonocarpMonocarp 的等级就会增加 111 。因此,在与 kkk 个怪物战斗后,他的等级变为 222 ,在与 2k2k2k 个怪物战斗后,他的等级变为 333 ,在与 3k3k3k 个怪物战斗后,他的等级变为 444 ,依此类推。

现在需要处理以下形式的 qqq 个查询:

  • i xi~xi x :如果参数 kkk 等于 xxx ,MonocarpMonocarpMonocarp 会与第 iii 个怪物战斗(或者这个怪物会逃跑)吗?

分析:

考虑到修改操作,所以我们想到预处理。对于每个iii,满足条件的kkk是一个范围,即大于等于一个阈值bib_ibi​。那么我们需要做的,就是快速求出每个iii的阈值。
我们可以用二分来查找。再考虑开一颗权值线段树,记录当前的每个kkk值对应的满足条件的下标数。每次计算出一个bib_ibi​,将线段树上bi−nbi-nbi−n的部分整体加111。查询时单点查询即可。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
#define lson rt << 1
#define rson rt << 1 | 1
const LL N = 1e6 + 10;
LL n, q;
LL a[N], b[N], tr[N];

void build(LL rt, LL l, LL r) {
    if (l == r) {
        tr[rt] = 0;
        return;
    }
    LL mid = (l + r) >> 1;
    build(lson, l, mid);
    build(rson, mid + 1, r);
}

void pushdown(LL rt, LL l, LL r) {
    if (tr[rt]) {
        tr[lson] += tr[rt];
        tr[rson] += tr[rt];
        tr[rt] = 0;
    }
}

void change(LL rt, LL l, LL r, LL x, LL y, LL z) {
    if (x <= l && r <= y) {
        tr[rt] += z;
        return;
    }
    pushdown(rt, l, r);
    LL mid = (l + r) >> 1;
    if (x <= mid)
        change(lson, l, mid, x, y, z);
    if (y > mid)
        change(rson, mid + 1, r, x, y, z);
}

LL query(LL rt, LL l, LL r, LL x) {
    if (l == r)
        return tr[rt];
    pushdown(rt, l, r);
    LL mid = (l + r) >> 1;
    if (x <= mid)
        return query(lson, l, mid, x);
    else
        return query(rson, mid + 1, r, x);
}

int main() {
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = 0;
    }
    build(1, 1, n);
    change(1, 1, n, 1, n, 1);
    for (int i = 2; i <= n; i++) {
        LL l = 1, r = n, res = 0;
        while (l <= r) {
            LL mid = (l + r) >> 1;
            if (query(1, 1, n, mid) / mid + 1 > a[i])
                l = mid + 1;
            else
                res = mid, r = mid - 1;
        }
        b[i] = res;
        change(1, 1, n, res, n, 1);
    }
    while (q--) {
        LL x, y;
        cin >> x >> y;
        if (b[x] <= y)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}

赛后交流

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

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

Linkage Mapper 工具参数详解——Building Network and Map Linkages 此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。 阅读详情

相关推荐

【蓝桥杯——单片机学习笔记】十三.点阵(STC15F2K60S2)

一.点阵内部图 点阵的有两种,分为共阴和共阳(与数码管类似,后续代码根据共阳点阵编写)。点阵的控制主要是每行和每列电平的控制。如图,以共阳为例:若要使左上角的灯亮,则第一行输出高电平(其他行均为低电平),第一列输出低电平(其他列均为高电平)。 二.原理图 与数码管共用接口,所以数码管和点阵的显示只能选一个使用! 原理图中点阵的接口R5即代表第5行(Row),C8即代表第8列(Column)。通...

默默无闻小菜鸡的博客 2011

Educational Codeforces Round 128 (Rated for Div. 2) E. Moving Chips

dp 预处理:求 minminmin 所以初始化要 INFINFINF 状态:dp[i][j]dp[i][j]dp[i][j] 中 iii 表示第 iii 位,jjj 取值 0,10,10,1 表示第 000 行,第 111 行 转移方程:分四种情况,见代码 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 10; int dp[N][2]; int main() { ios::sync_with_std

m0_53091571的博客 225

Python爬虫实战:绕过B站-352风控的完整解决方案

网络爬虫技术是数据采集和自动化测试的重要工具,其核心原理是通过模拟HTTP请求获取网页数据。在实践过程中,开发者常会遇到网站反爬机制,这涉及请求指纹识别、IP行为分析等安全技术。这些风控措施的价值在于保护网站数据安全和服务器资源,广泛应用于电商、社交、内容平台等场景。针对B站等平台的-352风控错误,需要综合运用请求头伪装、会话管理、参数签名破解等技术方案。本文重点探讨如何通过构建完整的浏览器级请求头、管理Cookie会话、以及使用Playwright等浏览器自动化工具,有效解决Python爬虫在B站数据采

weixin_33912638的博客 399

Educational Codeforces Round 168 (Rated for Div. 2) A~E

睡了一觉起来写的

swan416的博客 611

FMQL开发环境实战:从零构建国产FPGA SoC的软件基石

本文详细解析了构建国产复旦微FMQL FPGA SoC软件开发环境的完整流程。针对开发者在环境搭建中遇到的核心痛点,文章深入剖析了Procise、IAR与Vivado三大工具的协同角色与版本选择,提供了从软件下载、安装避坑到核心配置的实战指南,并总结了常见问题的排查方法,旨在帮助开发者高效跨过FMQL开发的“第一道坎”。

weixin_29215391的博客 126

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6803

Educational Codeforces Round 168 (Rated for Div. 2)(A-E)

因为每次操作根节点,都会使得子树内除根以外的所有节点数值减一,所以根节点的最多操作次数或者说最大增量,即为子树内除根以外节点的数值最小值。字符串的长度不大,所以可以枚举在字符串的哪个位置插入了哪个字符,然后计算对应的输入时间,保留输入时间最大的字符串即为答案。若白色单元格变色后,白色连通块的数量增加二,意味着该白色单元格变色后,会与三个连通块相邻。问网格中有多少个白色单元格,满足将该单元格变成黑色之后,网格中的白色连通块恰好为。的界限,不小于这个界限怪物就会进行战斗,否则就不会。

weixin_50143539的博客 4587

SuperMap iDesktop 9D三维倾斜摄影数据处理

OSGB格式的三维倾斜摄影数据进入时空大数据平台之前需要进行数据优化和格式转换

weixin_43204897的博客 1131

Educational Codeforces Round 168 (Rated for Div. 2)

思路:题目要求根节点的最终值最大,每一次操作能够使得父节点的值加一而根节点的值减一,所以自底向上操作的方案一定更优,同时我们应该保证每一次操作之后都应使得子节点的最小值不小于父节点的值,否则我们进行这样的操作是没有意义的。对于每一个k,我们都存储题目的查询,同时要按照怪物出现顺序的升序排序,因为显然对于同一个k,我们的等级越高能够枚举到的怪物就越远,由此来检查当前等级是否与当前怪物战斗。的前缀,这是显然的,因为对于同一个k值,都是从一级慢慢升上来的。,这样我们枚举所有的k,那次数也只有。

Fr1nGeLove的博客 973

Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)

4138。

u011699626的博客 1619

智能 Agent 跨模态决策机制实战:多源数据融合与感知驱动行为策略设计

随着智能 Agent 应用从结构化文本处理拓展至图像识别、语音交互、传感器响应等多模态环境,其决策机制也面临从单模态语言理解向“多源感知驱动行为选择”的系统跃迁。本文聚焦跨模态输入下的 Agent 决策体系,系统性解析多源数据建模、感知融合方式、模态对齐机制、输入权重控制策略与策略引擎适配路径,进一步结合多模态提示构建、模态感知异常检测、模态优先级路由调度等工程问题进行实战拆解。通过企业级智能客服、制造车间控制、智慧医疗助手等典型案例,本文提供面向真实场景的跨模态 Agent 架构与多输入决策融合方案。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1353

Educational Codeforces Round 168 (Rated for Div. 2) D题题解记录

如果一棵子树包含的所有节点(除了子树的根)均为正数,我们可以进行如下操作:使得子树的根权值+1,子树中所有节点-1。每次操作之后,节点值需为非负。现求在不限次数操作的条件下根节点的最大权值可以为多少。对于2号节点,如果本身权值就大于等于x,那么对于其子树中的所有节点,仍然只需要要求加x;如果权值小于x,那么还需要针对2号节点操作使得其权值变成等于x,操作。考虑一棵树,假设我们要在根节点1加上x,那么对于子树中所有的节点都要求加x。而新操作的次数又会要求子树中的节点权值再次下降。一定是合法的,其次,如果。

m0_55592958的博客 1833

OmniDrive(2):环境搭建

项目中使用的是全量的数据集(full dataset v1.0), 数据量比较大,训练验证(trainval) + test 总计200多G的数据,单独一个个下载会比较慢。参数,否则安装的时候会自动卸载已安装好的torch,重新安装最新版本的torch,这是不允许的。在cuDNN官网下载,默认下载的是最新版本的cuDNN,我们这里点击。,== 博文中详细介绍了完整的cuda和cudnn的安装过程==分析: 这是因为yapf 安装的版本不对,需要安装特定的版本。出现训练的loss变化,就说明可以正常训练了。

@bangbang的博客 623

Educational Codeforces Round 168 (Rated for Div. 2)(A-C)

这把打的有点sb了,太着急了,A题吃了4发,最后才读清题40分钟过,B题看出结论了,二十多分钟就过了,C感觉有点贪心模拟的意思。没码出来,看了人家的代码感觉真简单,D听说也不难,也没有做到。

2301_76888784的博客 917

数学建模模型总结

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[题解] Educational Codeforces Round 168 (Rated for Div. 2) E - level up

用树状数组实时维护出当前队列内大于等于当前玩家等级的怪物的区间数量( 同权值线段树的用法 ), 注意 check 时要减去在当前位置前的等级高于等于玩家的怪物(, 完全可以处理出每个 k 下, 每一个等级时玩家对应的在哪一段.后, 对于每个输入, 只需要二分对应的。, 总的个数是一个调和级数,等级的最早位置, 小于。了, 这个怪就会逃跑.

taulee01 的博客 689

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Educational Codeforces Round 168 (Rated for Div. 2) ABCD

我们只关心根节点的孩子节点(即高度为1的节点)的dp值, 对他们取min后,即为最终能在根节点进行的操作数, 于是最终的答案为。时,我们考虑,如果前面还有没有配对的左括号,那么我们应该在此处填写右括号,使它尽早配对,尽可能减少产生的代价。输出插入字符后的字符串。如果存在两个相邻相同字母, 那么我们就在他们中间插入一个不同的字母,会使得总的代价加三。如果上述条件不成立, 我们就在最后一个字符的后面加上一个不同的字母,使得总的代价加二。定义一个“正则括号序列”的代价为,所有互相匹配的括号对的距离的总和。

qq_66608435的博客 762

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Educational Codeforces Round 168 (Rated for Div. 2)(A~D题题解)

思路:想要最长的时间,那么肯定就是,在中间插入一个不同的字符,直接在最后插入一个和原字符串最后一个字符不同的字符。

2301_80475191的博客 843

Educational Codeforces Round 168 (Rated for Div. 2 ABCDE题)视频讲解

Educational Codeforces Round 168 (Rated for Div. 2) A-E题视频讲解

Edward Shi的博客 640

CF Educational Round 168(Div.2)题解(A~D)

给定一个以1为根节点,共有n个带权顶点的树,可以对至少有一个子节点的顶点进行操作,将这个顶点的后代节点(包括子顶点、孙顶点等)的权值-1,该顶点权值+1(但是要保证每个顶点的权值都不为负数),求经过若干这种操作后,顶点1的权值的最大值。给定一个由'(',')'和'_'三种字符组成的字符串,'_'出现在所有的奇数位,现在需要我们在'_'中填入'('或')',使得每个括号一定能够配对(保证一定存在这样的字符串),使得字符串的分数最大(每个括号左右下标差的累加值)具体逻辑在代码中注释出来了。

2302_80036984的博客 1268

Educational Codeforces Round 168 E. Level Up

树状数组 + 二分

m0_73582730的博客 540

Educational Codeforces Round 168 (Rated for Div. 2) Problem B

Educational Codeforces Round 168 (Rated for Div. 2) Problem B

2401_86351320的博客 351

Educational Codeforces Round 168 (Rated for Div. 2)A——D题解

题意:给一个小写字符串密码,添加一个小写字母,使得密码更加复杂。题解:有相同的相邻的字母,再其中间添加不同的字母;如果没有相同的相邻的字母,则最后添加一个字母。

qq_50196144的博客 803

Educational Codeforces Round 168 (Rated for Div. 2)-7.30复盘

codeforces educational round

jia_jia_LL的博客 1527

Educational Codeforces Round 168 (Rated for Div. 2)部分题解A~D

Educational Codeforces Round 168 (Rated for Div. 2)部分题解A~D

_Djhhh` blog 538
上一篇: Codeforces Pinely Round 4 (Div. 1 + Div. 2) A~G
下一篇: AtCoder Beginner Contest 366 A~F
AC-Panda
博客等级 码龄5年 1736粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值