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

那些年-SAP固定资产导入AS91 OASV 固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司 阅读详情

A.Painting the Ribbon (思维)

题意:

给出nnn种物品,需要用mmm种颜色进行染色,使得:

  • 不存在选择kkk个物品,将它们染成同一颜色之后,会使得所有物品颜色一致的方案。

询问能否实现。

分析:

一种颜色的数量不能超过(n−k−1)(n-k-1)(n−k−1),那么最多可以染色m×(n−k−1)m \times (n-k-1)m×(n−k−1)样物品,并且数量需要大于等于nnn。

代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n, m, k;
        cin >> n >> m >> k;
        if ((n - k - 1) * m >= n) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
    return 0;
}

B.Make It Ugly (思维)

题意:

把一个数组 aaa 称为 "美丽"数组,当且仅当能通过任意次数(可能是零)的以下操作使数组中的所有元素都相同:

  • 选择一个索引 iii ( 2≤i≤∣a∣−12 \le i \le |a| - 12≤i≤∣a∣−1 ),例如 ai−1=ai+1a_{i - 1} = a_{i + 1}ai−1​=ai+1​ ,然后将 aia_iai​ 替换为 ai−1a_{i - 1}ai−1​ 。

给出一个漂亮的数组 a1,a2,…,ana_1, a_2, \dots, a_na1​,a2​,…,an​ 。要使数组不再美丽,至少要删除多少个元素?禁止交换元素。如果不可能做到,那么输出 −1-1−1。

分析:

如果数组中所有的数字都相同直接输出−1-1−1,因为无法更改开头和结尾。计算和a[0]a[0]a[0]值相同的连续段的最小长度,那么就可以构造出两个与开头结尾不一样的数来构成一个不美丽序列。

代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        vector<int> a(n + 1);
        for (int i = 0; i < n; i++)
            cin >> a[i];
        bool flag = 1;
        for (int i = 1; i < n; i++)
            if (a[i] != a[0])
                flag = 0;
        if (flag) {
            cout << -1 << endl;
            continue;
        }
        int cnt = 0;
        int ans = 1e9;
        for (int i = 0; i < n; i++) {
            if (a[i] == a[0])
                cnt++;
            else
                ans = min(ans, cnt), cnt = 0;
        }
        if (cnt)
            ans = min(ans, cnt);
        cout << ans << endl;
    }
    return 0;
}

C.Long Multiplication (贪心)

题意:

给出两个长度相同的整数 xxx 和 yyy ,由 111 到 999 之间的数字组成。
可以执行以下操作任意多次(可能为零):交换 xxx 中的 iii 个位数和 yyy 中的 iii 个位数。
例如,如果 x=73x=73x=73 和 y=31y=31y=31 中的 222 个位数对调,就可以得到 x=71x=71x=71 和 y=33y=33y=33。
你的任务是可以使用任意次上述操作,最大化 xxx 和 yyy 的乘积。如果有多个答案,请输出任意一个。

分析:

因为x+yx+yx+y为定值,所以xxx和yyy的差值越小,积越大。令最终x≤yx\le yx≤y,那么我们逐位判断,如果前面的位数已经推出x>yx>yx>y,那么尽可能交换后面的位数使得yyy变大。如果之前位数只能推出x=yx=yx=y,那么根据当前位数判断是否能进行交换。

代码:

#include <bits/stdc++.h>

using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        string s1, s2;
        cin >> s1 >> s2;
        int n = s1.length();
        int flag = 0;
        for (int i = 0; i < n; i++) {
            if (flag == 0) {
                if (s1[i] < s2[i])
                    swap(s1[i], s2[i]);
                if (s1[i] > s2[i])
                    flag = 1;
            } else {
                if (s1[i] > s2[i]) {
                    swap(s1[i], s2[i]);
                }
            }
        }
        cout << s1 << endl << s2 << endl;
    }
    return 0;
}

D.Colored Balls (dp)

题意:

有 nnn 种颜色的球,其中 iii 种颜色的球的数量是 aia_iai​ 。

这些球可以组合成一组。每组最多包含 222 个球,每种颜色的球不超过 111 个。

考虑所有 2n2^n2n 组颜色。对于一组颜色,让我们把它的值表示为这些颜色的球所能分配到的最少组数。例如,如果有三种颜色,分别有 333 、 111 和 777 个球,它们可以组合成 777 组(且不少于 777 ),那么这组颜色的值就是 777 。

你的任务是计算所有 2n2^n2n 种可能的颜色组的值之和。并将答案对998 244 353998\,244\,353998244353 取模。

分析:

将问题转化成:有若干个小球,每个小球具备某种颜色,不同颜色的可以匹配,问最少的分组数。那么我们设最多颜色的小球有mxmxmx个,总数有nnn个,如果mxmxmx超过nnn的一半,那最小分组数就是mxmxmx个,否则就是⌈n2⌉\lceil \frac{n}{2} \rceil⌈2n​⌉个。
我们将各种颜色小球的数量排序,然后枚举数量最多的小球有多少个。用背包统计在这之前选择了xxx个小球的方案数,计算答案即可。

代码:

#include <bits/stdc++.h>

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

int main() {
    int T;
    T = 1;
    while (T--) {
        int n;
        cin >> n;
        vector<LL> a(n);
        int m = 0;
        for (int i = 0; i < n; i++)
            cin >> a[i], m += a[i];
        sort(a.begin(), a.end());
        vector<LL> dp(m + 1, 0);
        dp[0] = 1;
        LL ans = 0;
        for (auto x: a) {
            for (int j = 0; j <= m; j++) {
                if (j <= x) {
                    ans += x * dp[j];
                    ans %= mod;
                } else {
                    ans += ((x + j + 1) / 2) * dp[j];
                    ans %= mod;
                }
            }
            for (int j = m; j >= x; j--) {
                dp[j] += dp[j - x];
                dp[j] %= mod;
            }
        }
        cout << ans << endl;
    }
    return 0;
}

E. Chain Reaction (数据结构)

题意:

一排站着 nnn 只怪物。第 iii 个怪物的生命值是 aia_iai​ 。

每隔一秒,你可以选择一只活着的怪物,向它发射一道连锁闪电。闪电会对它造成 kkk 伤害,同时也会向左(向 iii 递减)和向右(向 iii 递增)扩散到只活着的怪物身上,对每只怪物造成 kkk 伤害。当闪电到达死亡怪物或行首/行尾时,就会停止。如果怪物的生命值严格大于 000 ,则视为存活。

例如,考虑以下情况:有三个怪物的健康值分别等于 [5,2,7][5, 2, 7][5,2,7] 和 k=3k = 3k=3 。你可以在 444 秒内将它们全部杀死:

  • 向 3th3th3th 的怪物发射连锁闪电,那么它们的生命值为 [2,−1,4][2, -1, 4][2,−1,4] ;
  • 向 1th1th1th 怪物发射连锁闪电,则它们的生命值为 [−1,−1,4][-1, -1, 4][−1,−1,4] ;
  • 向 3th3th3th 怪物发射连锁闪电,则它们的生命值为 [−1,−1,1][-1, -1, 1][−1,−1,1] ;
  • 向 3th3th3th 怪物发射连锁闪电,则它们的生命值为 [−1,−1,−2][-1, -1, -2][−1,−1,−2] 。

从 111 到 max⁡(a1,a2,…,an)\max(a_1, a_2, \dots, a_n)max(a1​,a2​,…,an​) 的每个 kkk ,计算杀死所有怪物所需的最少秒数。

分析:

上述操作等价于每次选择不含000的一段,让段里每个数字都减去111,求出原序列的差分序列,使得操作等价于选择两个数字(x,y)(x,y)(x,y),让dxd_xdx​加一,dyd_ydy​减一。
通过观察发现。在差分序列中,如果出现一个负数,那么之前一定出现了对应数量的正数,所以我们可以选择一个正数和负数进行配对,就可以删掉一个111 和一个−1-1−1。所以操作数等于差分序列中正数之和。同时可以发现相邻元素的大小关系不会改变,所以我们用整除分块枚举每个位置可能的取值,用差分静态前缀和更新答案。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;

int main() {
    int T;
    T = 1;
    while (T--) {
        int n;
        cin >> n;
        vector<int> a(n + 2);
        int maxval = 0;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
            maxval = max(maxval, a[i]);
        }
        const int m = maxval;
        vector<LL> d(m + 2);
        for (int i = 1; i <= n; i++) {
            int x = a[i];
            for (int l = 1, r; l < x; l = r + 1) {
                int tmp = (x + l - 1) / l;
                r = (x + tmp - 2) / (tmp - 1) - 1;
                if (a[i] >= a[i - 1]) {
                    d[l] += tmp;
                    d[r + 1] -= tmp;
                }
                if (a[i] <= a[i + 1]) {
                    d[l] -= tmp;
                    d[r + 1] += tmp;
                }
            }
            if (a[i] <= a[i + 1]) {
                d[x] -= 1;
            }
            if (a[i] >= a[i - 1]) {
                d[x] += 1;
            }
        }
        for (int i = 1; i <= m; i++) {
            d[i] += d[i - 1];
            cout << d[i] << " ";
        }
        cout << endl;
    }
    return 0;
}

赛后交流

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

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

SAP特殊库存全解析:供应商寄售、客户寄售、分包与项目库存说明 客户寄售库存(Customer Consignment)是企业将物料存放于客户处,客户实际领用后才确认销售收入。这种模式能缩短交货周期、提高客户满意度,但需严格跟踪寄售库存的数量与状态。 阅读详情

相关推荐

uniapp 开发微信小程序请求问题 , 真机调试正常,开发工具正常,但是使用扫码预览接口都是不通的,发布到体验版也是请求失败

uniapp开发小程序体验版接口请求失败(真机可以)

weixin_60408555的博客 3954

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

那么怎么求呢,我们按照血量从 1 开始枚举已经造成的伤害,每次都枚举当前这个血量的怪物的位置,实际上就是这个怪物在下一轮我们操作时会消失,假设当次操作没有任何怪物死亡,那么下次造成伤害时的代价一定与当次操作的代价是相同的,接下来考虑变化。如果当前位置两端的怪物都存活,那么代价加一,因为伤害要分开进行;详细解释一下怎么利用提到的“当前对整个序列进行一次操作(在上一次操作的基础上再造成一次伤害)需要耗费的代价是什么”在每次查询中计算贡献:现有序列一定的情况下,我们再对当前序列操作一次所产生的代价不受。

Fr1nGeLove的博客 839

2026年AI编程工作流实战:Claude Code与Open Code深度对比

AI编程已从代码生成工具升级为IDE级智能工作流核心能力。其本质是将大语言模型深度嵌入开发环境,通过语义理解、上下文感知与行动闭环重构传统编码范式。Claude Code以企业级知识图谱和双轨Code Review为代表,强调合规性、可审计与深度集成;Open Code则依托Skill可组合性、本地优先模型与ocp协议,实现开源驱动的灵活扩展。二者共同推动IDE从‘编辑器’进化为‘数字搭档’——能理解RFC文档、记住PR评论、自动补全带重试的fetch逻辑,并在Promise链发呆时一键重构为async/a

weixin_33739523的博客 463

Educational Codeforces Round 164 (Rated for Div 2)

考虑一个颜色集合,最优分组法是每次选球最多的两种颜色组合,设其数量最多的颜色球为A,总球数为B,若B−A≤A,则其value为A;若B−A≥A,其value值为⌈B⌉。则可先对数组a排序,枚举所选球数的颜色i,只需知道满足前i−1种颜色构成的颜色集合总球数j对应的方案数即可计算答案,方案数的计算则可用dp解决。

JSDBJSJSH的博客 1956

Android应用开发从零到一:基于Kotlin与Jetpack Compose的完整实践指南

移动应用开发的核心在于构建一个架构清晰、可维护且可扩展的应用基础。理解应用架构的原理,如关注点分离和数据驱动UI,是实现高质量应用的关键技术价值。在现代Android开发中,Kotlin语言凭借其空安全特性和协程,能有效提升代码的健壮性与开发效率。Jetpack Compose作为声明式UI框架,代表了UI开发的未来方向,与Kotlin协程深度集成,简化了复杂交互界面的构建。这些技术共同服务于个人任务管理、企业工具等多种应用场景。本文以构建一个完整的个人任务管理应用为例,系统阐述从环境搭建、UI构建、数据持

weixin_32667955的博客 313

Bartender 2021破解版安装教程:手把手教你从下载到激活(附详细步骤图)

本文详细介绍了BarTender 2021专业版的安装与高效应用指南,从基础配置到高级条码设计,帮助用户快速掌握标签设计与打印技术。内容涵盖安装步骤、标签模板创建、数据连接与批量打印技巧,以及高级功能如安全策略与自动化集成,适合零售、物流、制造等行业用户提升工作效率。

p4q5r6s7t的博客 2634

Educational Codeforces Round 164 (Rated for Div. 2)(A ~ E 视频讲解)

Educational Codeforces Round 164 (Rated for Div. 2)(A ~ E 视频讲解)

Edward Shi的博客 1362

freeswitch之呼叫中心acd模块开发

一、定义: ACD(Automatic Call Distributor) 自动呼叫分配,也叫智能选择座席。它是呼叫中心整个前台接入系统逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前。ACD是现代呼叫中心有别于一般的热线电话系统和自动应答系统的重要标志,其性能的优劣直接影响到呼叫中心的效率和顾客的满意度。 二、ACD包含的功能点: 1 、程控交换功能 ACD在本质上也是交换机的一种类型,必须具有程控交换最基本的话务交换功能。 2 、排队功能 ACD必须具有话务排队的功能,所谓排队是指在内线都

飞鸟的博客 1870

Educational Codeforces Round 164 (Rated for Div. 2)——B&C

因为两个数的所有数位顺序不可更改,所以要找到找到x,y两个数字第一个不同的位置(记为x),使这个位置的大值归x,小值归y。在数组中,令等于开头和结尾的元素为“1”,其余都为“0”,如果存在两个以上的“0”在一起,则这些数无法被更改,数组就会丑陋。由于原来的数组是美丽的,首先,如果此数组所有的元素均相等,显然美丽,我们无法令其变成不美丽数组。题意:对于一个数组,如果能进行若干以下操作,使得所有元素均相等,则是“美丽”的。对于 a[i-1] = a[i+1] 的情况,令 a[i] = a[i-1]。

miaojiachun的博客 1121

高性能优化的本质

在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。

发狂的小花的博客 273

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

weixin_44119674的博客 440

CF Educational Codeforces Round 164 Div.2 D. Colored Balls 题解

动态规划 CF题解 C++代码 背包dp 附详细注释

一只摸鱼的bbc 1150

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 928

Educational Codeforces Round 164 (Rated for Div. 2)(A,B,C,D,E)

Educational Codeforces Round 164 (Rated for Div. 2)(A,B,C,D,E)

qq_45809243的博客 2065

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Educational Codeforces Round 164 (Rated for Div. 2)

可以发现操作会删去a[i],等于序列变得更加完美。当a[i-1]=a[i+1] and a[i-1]!=a[i]为保持序列不在更加完美,我们应删去前后最短的连续等于a[i-1]序列 双指针遍历即可,注意开头可能也会存在一段。显然我们让每种颜色平分n个位置就行了。那么最多的颜色就会有n/m个,如果鲍勃操作的次数 k 小于 n −n/m,最后的丝带就变不成相同颜色,反之就可以。某一位上相同时对乘积不会产生贡献。当位上不同时,根据均值不等式,不同位的差越小则乘积越大,所以只需满足所有位上数不同时差值尽可能小。

2301_79858965的博客 250

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Educational Codeforces Round 164 A-E

Educational Codeforces Round 164 A-E

qq_41418557的博客 1046

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

Educational Codeforces Round 164 (Rated for Div. 2) A-E题解,D,E好题

Unlimitedz的博客 1184

Educational Codeforces Round 164 D. Colored Balls

There are balls of nnn different colors; the number of balls of the iii-th color is aia_iai​.The balls can be combined into groups. Each group should contain at most 222 balls, and no more than 111 ball of each color.Consider all 2n2^n2n sets of colors. Fo

m0_69367351的博客 955

Educational Codeforces Round 164 (Rated for Div. 2)—B题

1 和 2 是不同的元素,并且是交叉排布的,我们只需要删除最小相同区间即可破坏这个优美序列。这里就是删除头部的1即可,那么删除的最小数量就是1。

2301_79363050的博客 612

Educational Codeforces Round 164 (Rated for Div. 2)—C题

根据重要不等式,当两个数相近时,他们的乘积是最大的。当(a+b)固定是,a*b取最大值是a==b。

2301_79363050的博客 499

Educational Codeforces Round 164 (Rated for Div. 2) ----- F. Unique Strings ----- 题解

那么我们再考虑,我们对于染色方案有其他要求需要满足,置换可以看作是几个循环,那么我们就可以将染色方案在置换作用下不变,看作是他在分为g组的情况下,组内的元数相等(这样的循环就一定相等),那么我们就可以利用g个前缀字符唯一定义一个字符串,那么每个字符会复制 n/g次后变为原字符串,那么这g个前缀中最多拥有 a = (k+c) / (n/g) 个1,那么等价于至少拥有 b = g - a个0,并且需要满足前缀中还是要包含连续的c个1,但是正面并不好求,那么我们利用容斥原理来求得。

weixin_73936404的博客 1035

Codeforces Educational Codeforces Round 164 E. Chain Reaction 【思维、分块、调和级数复杂度】

个人练习记录

m0_73500785的博客 1006

Educational Codeforces Round 164 (Rated for Div. 2) -B,C

当两个数的和固定时,当两个数的差值越小,乘积越大。知道这个知识后就好做了,我们只需让两个数不断接近即可。(等我有时间搞个合集)

2301_79679684的博客 373

Educational Codeforces Round 164(A-C)

A将n段彩带涂成m种颜色,B可以修改k段彩带,B想让彩带颜色一样。

m0_74732040的博客 587

Educational Codeforces Round 164 (Rated for Div. 2) D. Colored Balls

优先与数量最大的解和。

qq_73671385的博客 447

Educational Codeforces Round 164 (Rated for Div. 2) ---- E. Chain Reaction ---- 题解

但是这样对每一个k暴力求答案的时间复杂度是趋近于 O(n*n),那么想怎么优化,我们可以发现对于9来说, 当k=1--1时提供9的贡献,当k=2--2时提供5的贡献,当k=3--4时提供3的贡献,当k=5--8时提供2的贡献,可以发现计算答案贡献时,其实有部分长的区间贡献是相同的,所以我们可以利用差分数组,来计算区间段的贡献。向怪物发送k伤害的闪电打击,但是攻击只在活着的怪物中传播,假如 a b c d e,b和d怪物死了,如果攻击任意活着的怪物那么只有它自己受到伤害。那么多块区域怎么计算答案。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值