比赛链接:Here

1562A. The Miracle and the Sleeper

题意:

  • 给出 \(l,r\) 求出最大化的 \(a\ mod\ b\) (\(l\le b\le b\le a\le r\))

思路:

很容易就看出 \(l\le ⌊\frac r2⌋ + 1\) 时 \(r\bmod \left(\left\lfloor\frac{r}{2}\right\rfloor+1\right)=\left\lfloor\frac{r-1}{2}\right\rfloor\)​​ 就是最大可能的答案,

但如果 \(l > ⌊\frac r2⌋ + 1\) 的话最大值应该是 \(r\bmod l=r - l\)

时间复杂度:\(\mathcal{O}(1)\)

void solve() {
ll l, r;
cin >> l >> r;
if (r / 2 >= l) cout << ((r - 1) / 2) << "\n";
else cout << r % l << "\n";
}

1562B. Scenes From a Memory

题意:

  • 给出一个字符串 \(s\; (|s|\le50)\) 请问可以从字符串中删除的最大位数是多少使得字符串数字变为非素数? 如:\(237\) 删除第二位的 \(3\) 变为 \(27\)

思路:

说实话赛时想复杂了,因为在 \(|s|\le 50\)​ 的情况下其实素数并不多(实际也只要考虑 \(3\)​ 位数的情况就ok),即使直接去模拟情况都可以。

但利用素数筛就能很快AC了

bool prime[110];
int n;
string s;
void solve() {
for (int i = 0; i < n; i++) {
if (s[i] == '1' || s[i] == '4' || s[i] == '6' || s[i] == '8' || s[i] == '9') {
cout << 1 << endl;
cout << s[i] << endl;
return;
}
}
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (!prime[(s[i] - '0') * 10 + (s[j] - '0')]) {
cout << 2 << endl;
cout << s[i] << s[j] << endl;
return;
}
}
}
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
for (int i = 2; i < 100; ++i) {
prime[i] = 1;
for (int j = 2; j * j <= i; ++j)
if (i % j == 0)prime[i] = 0;
}
int _; for (cin >> _; _--;) {
cin >> n >> s;
solve();
}
}

1562C. Rings

题意:

  • 给出一个 \(01\) 字符串,以及函数 \(f(s):\) 将 $01 $ 转为十进制整数,请找出两对下标 \((l_1,r_1),(l_2,r_2)\) 使得 \(f(s_{(l_1,r_1)}) = k\times f(s_{(l_2,r_2)})\) 成立

思路:

麻了,前面应是没想到怎么去构造一个这样的等式,手写 \(11,..,1\) 和 \(00,...,0\) 等特殊情况的时候想到我只要定位到第一个 \(0(pos)\) 的位置就可以了,然后以 \(pos\) 为界划分为两部分就肯定能构造 \(f(s_{(l_1,r_1)}) = k\times f(s_{(l_2,r_2)})\)

const int N = 1e5 + 10;
int main() {
// ! 记得注释掉,麻了,输入流乱了导致后面debug半天没找到问题
// cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
ll n; cin >> n;
char s[N];
scanf("%s", s + 1);
ll cnt0 = 0, cnt1 = 0;
for (int i = 1; i <= n; ++i) if (s[i] == '1') cnt1 += 1;
if (cnt1 == n) {
cout << "1 " << n - 1 << " 2 " << n << "\n";
continue;
}
int p = 0;
for (int i = 1; i <= n; ++i)
if (s[i] == '0') {
p = i;
break;
}
if (p - 1 < (n / 2)) cout << p << " " << n << " " << p + 1 << " " << n << "\n";
else cout << 1 << " " << p << " " << 1 << " " << p - 1 << "\n";
}
}

1562D. Two Hundred Twenty One (Easy and Hard)

题意:

题意待补

思路:

把 \(+,-\) 号转为 \(+1,-1\) 再维护前缀和,可以快速判断奇偶(D1)

核心在于利用前缀和进行二分(D2)

不过有人用 map + set 也过了就很神奇(TQL

// D1
const int N = 3e5 + 10;
int a[N], sum[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, q;
string s;
cin >> n >> q >> s;
int id = 0;
for (int i = 0; i < s.size(); ++i) {
if (i & 1) {
if (s[i] == '+') a[++id] = -1;
else a[++id] = 1;
} else {
if (s[i] == '-') a[++id] = -1;
else a[++id] = 1;
}
sum[id] = sum[id - 1] + a[id];
}
while (q--) {
int l, r; cin >> l >> r;
if (abs(sum[r] - sum[l - 1]) == 0) cout << "0\n";
else if (abs(sum[r] - sum[l - 1]) & 1) cout << "1\n";
else cout << "2\n";
}
}
}
// D2
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n, q;
cin >> n >> q;
string _s;
cin >> _s;
vector<int> which(n);
for (int i = 0; i < n; i++) {
which[i] = (_s[i] == '-') != (i & 1);
}
vector<int> psum(n + 1, 0);
for (int i = 0; i < n; i++) {
psum[i + 1] = psum[i] + (which[i] ? -1 : 1);
}
while (q--) {
int l, r;
cin >> l >> r; l--; r--;
if (psum[r + 1] == psum[l]) cout << "0\n\n";
else {
if ((r + 1 - l) & 1) cout << "1\n";
else {
cout << "2\n";
cout << (r + 1) << ' ';
r--;
}
int d = min(psum[l], psum[r + 1]) + abs(psum[l] - psum[r + 1]) / 2;
// d -> d+1
int s = l;
int e = r + 1;
while (s + 1 < e) {
int m = (s + e) / 2;
if ((psum[m] <= d) == (psum[s] <= d)) s = m;
else e = m;
}
cout << s + 1 << "\n";
}
}
}
}

Codeforces Round #741 (Div. 2) 个人题解 A~D的更多相关文章

  1. # Codeforces Round #529(Div.3)个人题解

    Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...

  2. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  3. Codeforces Round #540 (Div. 3) 部分题解

    Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...

  4. Codeforces Round #538 (Div. 2) (A-E题解)

    Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...

  5. Codeforces Round #531 (Div. 3) ABCDEF题解

    Codeforces Round #531 (Div. 3) 题目总链接:https://codeforces.com/contest/1102 A. Integer Sequence Dividin ...

  6. Codeforces Round #527 (Div. 3) ABCDEF题解

    Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...

  7. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  8. Codeforces Round #545 (Div. 1) 简要题解

    这里没有翻译 Codeforces Round #545 (Div. 1) T1 对于每行每列分别离散化,求出大于这个位置的数字的个数即可. # include <bits/stdc++.h&g ...

  9. Codeforces Round #624 (Div. 3)(题解)

    Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...

  10. Codeforces Round #821(Div.2) (A-C) 题解

    Codeforces Round #821(Div.2) (A-C) A.Consecutive Sum 大致题意 给定一组共 n 个数据 ,如果俩个数的下标在 mod k 意义下同余,则可以交换a[ ...

随机推荐

  1. IDEA提示无法解析resourse中的方法getResourceAsStream

    一.解决方案 1.错误展示: InputStream inputStream = Resources.getResourceAsStream(resource); 2.报错展示: 报错原因:这是因为找 ...

  2. Kafka集群调优+能力探底

    一.前言 我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐:4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另 ...

  3. 论文阅读:2023_Semantic Hearing: Programming Acoustic Scenes with Binaural Hearables

    论文地址:语义听觉:用双耳可听器编程声学场景 论文代码:https://semantichearing.cs.washington.edu/ 引用格式:Veluri B, Itani M, Chan ...

  4. [CF1416F] Showing Off

    题目链接 如果把方向看做有向边,整个图是一个内向基环树. 所以考虑哪些点有可能放在基环树的非环部分上,当且仅当一个点周围有严格小于他的点. 由于图一定是二分图(黑白染色),没有奇环,所有偶环一定可以拆 ...

  5. 本地部署modelscope-agent

    本地部署modelscope-agent 部署流程 在modelscope社区创建一个自己的空间(假设name是LocalAgent),clone空间到本地(或云服务器如魔搭Notebook) git ...

  6. C++ Qt开发:ToolBar与MenuBar菜单组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ToolBar ...

  7. 数字孪生为何需要融合GIS?以智慧城市项目为例说明

    数字孪生和地理信息系统(GIS)是两个在现代科技中崭露头角的概念,它们的融合为智慧城市项目带来了革命性的机会.本文将解释数字孪生为何需要融合GIS,并以智慧城市项目为例进行说明. 数字孪生是一种虚拟模 ...

  8. MyBatis中获取参数值的两种方式:${} 和 #{},以及它们之间区别是什么?

    MyBatis中获取参数值的两种方式 ${}:的本质就是字符串拼接 #{}:的本质就是占位符赋值 ① 使用${}占位符,在字符串拼接的方式拼接sql,若为字符串类型或为日期类型的字段进行赋值时,需要手 ...

  9. 关于 K8s 的一些基础概念整理

    〇.前言 Kubernetes,将中间八个字母用数字 8 替换掉简称 k8s,是一个开源的容器集群管理系统,由谷歌开发并维护.它为跨主机的容器化应用提供资源调度.服务发现.高可用管理和弹性伸缩等功能. ...

  10. grpc是基于http/2协议的高性能的rpc框架

    师傅领进门,修行在个人,跟着官方脚手架demo了grpc后,之后就需要扩展前后知识边界,下面总结grpc的前世今生和最佳实践. https://www.cnblogs.com/JulianHuang/ ...