原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处。

最近写学习了一下网络爬虫,但昨天晚上的CF让人感觉实力明显退步,又滚回来刷题了QAQ...

比赛链接:Here

1389A. LCM Problem

给定区间 \([l,r]\),求两个不同的数字 \(x,y\) ,使得\(l≤x<y≤r,l≤LCM(x,y)≤r\) 。

思路

这道题和之前的一道求区间最大 \(\gcd\)​​ 的签到很像,感兴趣的可以去看看 CF1370A. Maximum GCD

在这个题目中的条件可以整合为 \(l\le x < y \le lcm\le r\),所以我们只需要让 \(lcm\) 最小即可 。

\(x\) 和 \(y\) 的最小公倍数最小为 \(lcm_{min}(x,y) = y = 2x\) ,此时令 \(x=l\) ,可以得到 \(lcm_{min}=y=2l\) ,即为最小的答案。如果 \(2l>r\), 无解。

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
ll l, r; cin >> l >> r;
if (2 * l > r) cout << "-1 -1\n";
else cout << l << " " << 2 * l << "\n";
}
}

1389B. Array Walk

给定数组 \(a_1,a_2,a_3,...,a_n\),起点为 \(a_1\) ,你可以向左向右移动,不能越界,最多 \(k\) 次。

并且限制不能连续的向左移动,且向左移动的次数最多为 \(z\) 。

每次移动到位置 \(i\) 可以获取分数 \(a_i\) ,初始分数为 \(a_1\) ,询问你可以得到的最大分数和。

思路:

最开始在写的时候挺懵逼的,但考虑差分之后感觉可以就往下推了,正好这个思路是正解?

首先,向左移动不能连续,所以如果有向左移动,就只能以左右间隔的形式反复横跳。其次,以贪心的思想,最大和出现的情况,一定是只在某两个相邻位置之间反复横跳。

我们将移动分为三个阶段:

  • 第一阶段,假设初始向右移动了 \(i\) 步,那么当前处于的位置为 \(a_{i+1}\) ,积分和为 \(s1= sum_{i+1}\) (设 \(sum_i = \sum_{k=1}^ia_k\),即前 \(i\) 项和)
  • 第二阶段,随后在 \(a_i\)​ 与 \(a_{i +1}\)​之间反复横跳,设此过程中向左次数最多为 \(p\)​ 次,向右次数最多为 \(q\)​​ ,则 \(p=\min \left(z,\left\lceil\frac{k-i}{2}\right\rceil\right), q=\min (p, k-i-p),\) 得到的积分为 \(s_{2}=p * a_{i}+q * a_{i+1}\)​​
  • 第三阶段,设剩余的步数为 \(k_1 = k - i - p - q\)

    • 如果 \(k_1 > 0\) ,全部用于向右移动,可以得到的积分为 $s_{3}=s u m_{k_{1}+i+1}-s u m_{i+1} $ (如果有剩余步,那 么第二阶段结束后位置一定在 \(i+1\)​) 。
    • 如果 $k_{1}=0 $, 则 $s_{3}=0 $, 且同时 $ i+1=k-p-q+1$ ,即 $s u m_{i+1}=s u m_{k-p-q+1} $, 无论阶段二的落点是在 \(i\) 还是 $i+1 $ 。

三个阶段的总积分获取为:\(r e s=s_{1}+s_{2}+s_{3}=s u m_{k-p-q+1}+p * a_{i}+q * a_{i+1}\)

则最大积分和 \({ ans }=\max \left\{\mathrm{res}_{i} \mid r e s_{i}=\operatorname{sum}_{k-p-q+1}+p * a_{i}+q * a_{i+1}, i \in[1, k]\right\}\)​ ,

复杂度为:\(\mathcal{O}(k)\)

const int N = 1e5 + 10;
ll a[N], s[N];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
ll n, k, z;
cin >> n >> k >> z;
for (int i = 1; i <= n; ++i) cin >> a[i];
ll ans = 0;
s[0] = 0;
for (int i = 1; i <= n; ++i) s[i] = s[i - 1] + a[i];
for (int i = 1; i < k + 1; i += 1) {
ll p = min(1ll * z, (k + 1 - i) / 2);
ll q = min(1ll * p, k - i - p);
ll res = s[k - p - q + 1] + p * a[i] + q * a[i + 1];
ans = max(ans, res);
}
cout << ans << "\n";
}
}

1389C. Good String

规定字符串 \(t_1,t_2,t_3,...,t_n\)

如果 \(t_n,t_1,t_2,...t_{n−3},t_{n−2},t_{n−1},t_n\)​与 \(t_2,t_3,t_4,...t_{n−1},t_n\)​ 完全相同,则称该字符串为 Good String

判断给定字符串至少删除多少个字符可以变成 Good String 。

思路:

简单推导可以得到 Good String 中:

  • 如果 \(n\) 是偶数,\(t_1 = t_3 = t_5 =...=t_{n-3} = t_{n-1}\) 且 \(t_2 = t_4 =...=t_{n-2} = t_n\)

    如 \(25252525\)

  • 如果 \(n\) 为奇数,\(t_1 = t_2 = ...=t_n\) ,如 \(2222\)

而且题目规定 \(t_i \in [0,9]\) ,我们通过可以构造 \(10\times 10\) 种情况,分别算转化需要的最小花费。

复杂度为:\(\mathcal{O}(10^2n)\)​

int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
int _; for (cin >> _; _--;) {
string s; cin >> s;
int a[2] = {};
int ans = INT_MAX;
for (int i = 0; i < 10; ++i)
for (int j = 0; j < 10; ++j) {
a[0] = i, a[1] = j;
int ct = 0, k = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] != a[k & 1] + '0') ct++;
else k = !k;
}
if (int(s.size() - ct) & 1) if (i != j) ct++; //只有全相等才能为奇数
ans = min(ans, ct);
}
cout << ans << "\n";
}
}

1389D. Segment Intersections

待补

Educational Codeforces Round 92 (Rated for Div. 2) A~C的更多相关文章

  1. Educational Codeforces Round 92 (Rated for Div. 2) B、C题解

    TAT 第一场codeforces B. Array Walk #暴力 #贪心 题目链接 题意 有\(a1, a2, ..., an\) 个格子(每个格子有各自分数),最初为1号格(初始分数为\(a1 ...

  2. Educational Codeforces Round 92 (Rated for Div. 2)

    A.LCM Problem 题意:最小公倍数LCM(x,y),处于[l,r]之间,并且x,y也处于[l,r]之间,给出l,r找出x,y; 思路:里面最小的最小公倍数就是基于l左端点的,而那个最小公倍数 ...

  3. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  4. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  5. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  6. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  7. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  8. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

  9. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  10. Educational Codeforces Round 39 (Rated for Div. 2) G

    Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...

随机推荐

  1. python之if语句处理列表

    目录 检查特殊元素 确定列表不是空的 使用多个列表 检查特殊元素 在我们上期讲的python之史上最详细if教程就提到过有关于列表的关系运算符 那我们现在来创建并且打印一个列表先 list_1 = [ ...

  2. 使用OSS搭建私有云内网yum仓库的方法

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 使用OSS搭建私有云内网yum仓库的方法 文字&图片内容已脱敏 #.前几天接到一个搭建内网yum源的任务.刚接 ...

  3. 环形缓冲区 Ring Buffer 的实现

    环形缓冲区(Circular Buffer 或 Ring Buffer)是一种数据结构,它在逻辑上形成一个闭环.这种结构非常适用于需要固定大小的缓冲区的情况,如音频处理.网络通信.实时数据传输等.环形 ...

  4. python3使用pandas备份mysql数据表

    操作系统 :CentOS 7.6_x64 Python版本:3.9.12 MySQL版本:5.7.38 日常开发过程中,会遇到mysql数据表的备份需求,需要针对单独的数据表进行备份并定时清理数据. ...

  5. [USACO2007OPEN S] Catch That Cow S

    题目描述 FJ丢失了他的一头牛,他决定追回他的牛.已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动.FJ的行走方式很特别:他每一次可以前进一步.后退一步或者直接走到2*x的位置.计算他 ...

  6. Vue重用组件

    1.是什么? 这里主要是简单入门使用一下,复杂高阶的用法笔者暂时还没了解到 Vue重用组件是指可以被多个Vue实例重复使用的组件.这些组件可以包含自定义的状态和事件处理程序,并且可以在整个应用程序中共 ...

  7. Redis入门实践

    安装Redis 下载:官网:https://redis.io/download/,选择稳定版下载. 上传至linux 解压Redis:tar -zxvf redis-6.2.7.tar.gz,得到: ...

  8. 可视化学习:CSS transform与仿射变换

    引言 在几年前,我就在一些博客中看到关于CSS中transform的分析,讲到它与线性代数中矩阵的关系,但当时由于使用transform比较少,再加上我毕竟是个数学学渣,对数学有点畏难心理,就有点看不 ...

  9. DRF限流

    https://www.django-rest-framework.org/api-guide/throttling/ 限制.控制客户端可以向 API 发出的请求的速率. 设置限流策略 默认限制策略可 ...

  10. .NET周刊【1月第1期 2023-01-07】

    一月头条:C# 被评为2023年度编程语言! 在TIOBE指数的历史上,祝贺 C# 首次赢得了年度编程语言奖项!C# 已经是十大顶尖选手超过两个十年了,现在它正在迎头赶上四大语言,凭借一年内最大增幅( ...