Educational Codeforces Round 94 (Rated for Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1400
A. String Similarity
题意
给出一个长 $2n-1$ 的二进制串 $s$,构造一个长 $n$ 的字符串,使其与 $s$ 的每个长 $n$ 的子串至少有一处字母相等。
题解
长 $n$ 的子串恰有 $n$ 个,每个子串取一位即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int n;
string s;
cin >> n >> s;
for (int i = 0; i < int(s.size()); i += 2)
cout << s[i];
cout << "\n";
} int main() {
int t;
cin >> t;
while (t--) solve();
}
B. RPG Protagonist
题意
有两个容积分别为 $p,f$ 的背包和两种物品:
- 一种有 $cnt_s$ 个,每个体积为 $s$
- 一种有 $cnt_w$ 个,每个体积为 $w$
问最多能装多少个物品。
题解
优先装体积较小的一种物品,然后枚举第一个背包所装的数量。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int p, f;
cin >> p >> f;
int cnt_s, cnt_w;
cin >> cnt_s >> cnt_w;
int s, w;
cin >> s >> w;
if (s > w) {
swap(cnt_s, cnt_w);
swap(s, w);
}
auto func = [](int& cap, int wt, int &cnt) {
int mi = min(cnt, cap / wt);
cap -= mi * wt;
cnt -= mi;
return mi;
};
int ans = 0;
const int N = min(cnt_s, p / s);
for (int i = 0; i <= N; i++) {
int res = i;
int caps = p - i * s, capw = f;
int ns = cnt_s - i, nw = cnt_w;
res += func(caps, w, nw);
res += func(capw, s, ns);
res += func(capw, w, nw);
ans = max(ans, res);
}
cout << ans << "\n";
} int main() {
int t;
cin >> t;
while (t--) solve();
}
C. Binary String Reconstruction
题意
一个二进制串 $s$ 的衍生串 $t$ 按如下规则构造:
- 如果 $s_{i-x}=1$ 或 $s_{i+x}=1$,$t_i=1$
- 否则 $t_i=0$
给出 $t$ 和 $x$,试还原 $s$ 。
题解
根据 $t_i=0$ 确定 $s$ 中的 $0$,其余位置均为 $1$ 。
然后判断构造出的 $s$ 是否与 $t$ 矛盾即可。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
string s;
cin >> s;
int x;
cin >> x;
const int N = s.size();
string ans(N, '1');
for (int i = 0; i < N; i++) {
if (s[i] == '0') {
if (i - x >= 0) ans[i - x] = '0';
if (i + x < N) ans[i + x] = '0';
}
}
bool ok = true;
for (int i = 0; i < N; i++) {
if (s[i] == '1') {
if (i - x >= 0 and ans[i - x] == '1') continue;
if (i + x < N and ans[i + x] == '1') continue;
ok = false;
}
}
cout << (ok ? ans : "-1") << "\n";
} int main() {
int t;
cin >> t;
while (t--) solve();
}
D. Zigzags
题意
给出一个大小为 $n$ 的数组 $a$,找出满足:
- $1 \le i < j < k < l \le n$
- $a_i=a_k$ and $a_j=a_l$
的四元组 $(i,j,k,l)$ 的数目。
题解
移项得:$(a_i,a_j)=(a_k,a_l)$ 。
即计算数组中相同的二元组的数目。
Tips
因为 $n^2$ 将近 $10^7$,所以使用 map 的 $O(n^2log_n)$ 会超时,可以用二维散列代替。
代码
#include <bits/stdc++.h>
using namespace std; void solve() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
--a[i];
}
long long ans = 0;
vector<int> cnt(n * n);
for (int j = 0; j < n; j++) {
for (int i = j - 1; i >= 0; i--) {
++cnt[a[i] * n + a[j]];
}
int k = j + 1;
for (int l = k + 1; l < n; l++)
ans += cnt[a[k] * n + a[l]];
}
cout << ans << "\n";
} int main() {
int t;
cin >> t;
while (t--) solve();
}
Educational Codeforces Round 94 (Rated for Div. 2)【ABCD】的更多相关文章
- Educational Codeforces Round 97 (Rated for Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1437 A. Marketing Scheme 题解 令 \(l = \frac{a}{2}\),那么如果 \(r < ...
- Educational Codeforces Round 94 (Rated for Div. 2) String Similarity、RPG Protagonist、Binary String Reconstruction、Zigzags 思维
题目链接:String Similarity 题意: 首先题目定义了两个串的相似(串的构成是0.1),如果两个串存在对于一个下标k,它们的值一样,那么这两个串就相似 然后题目给你一个长度为2n-1的串 ...
- Educational Codeforces Round 94 (Rated for Div. 2) D. Zigzags (枚举,前缀和)
题意:有一长度为\(n(4\le n\le 3000)\)的数组,选择四个位置\((i,j,k,l)\ (1\le i<j<k\le n)\),使得\(a_i=a_k\)并且\(a_j=a ...
- Educational Codeforces Round 94 (Rated for Div. 2) C. Binary String Reconstruction (构造)
题意:给你一个字符串\(s\),原字符串为\(w\),如果\(i>x\)且\(w_{i-x}=1\),那么\(s_{i}=1\),如果\(i+x\le n\)且\(w_{i+x}=1\),那么\ ...
- Educational Codeforces Round 94 (Rated for Div. 2) B. RPG Protagonist (数学)
题意:你和你的随从去偷剑和战斧,你可以最多可以拿\(p\)重的东西,随从可以拿\(f\)重的东西,总共有\(cnt_{s}\)把剑,\(cnt_{w}\)把战斧,每把剑重\(s\),战斧重\(w\), ...
- Educational Codeforces Round 94 (Rated for Div. 2) A. String Similarity (构造水题)
题意:给你一个长度为\(2*n-1\)的字符串\(s\),让你构造一个长度为\(n\)的字符串,使得构造的字符串中有相同位置的字符等于\(s[1..n],s[2..n+1],...,s[n,2n-1] ...
- Educational Codeforces Round 74 (Rated for Div. 2)【A,B,C【贪心】,D【正难则反的思想】】
A. Prime Subtractiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inpu ...
- 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 ...
- 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 ...
随机推荐
- phpstorm 注册码破解
激活码1 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2ln ...
- sql查询速度慢分析及如何优化查询
原因分析后台数据库中数据过多,未做数据优化数据请求-解析-展示处理不当 网络问题提高数据库查询的速度方案SQL 查询速度慢的原因有很多,常见的有以下几种:1.没有索引或者没有用到索引(查询慢最常见的问 ...
- docker+mysql集群+读写分离+mycat管理+垂直分库+负载均衡
依然如此,只要大家跟着我的步骤一步步来,100%是可以测试成功的 centos6.8已不再维护,可能很多人的虚拟机中无法使用yum命令下载docker, 但是阿里源还是可以用的 因为他的centos- ...
- 【Spring】Spring JdbcTemplate
Spring JdbcTemplate 文章源码 JdbcTemplate 概述 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装.Spring 框架提供了很多的操 ...
- python列表字符串集合常用方法
1.1 列表常用方法 # 1. append 用于在列表末尾追加新的对象a = [1,2,3]a.append(4) # the result : [1,2,3,4]# 2. count方法统计某个 ...
- 关于spring-data与elasticsearch的使用,自定义repository
之前没有使用过spring-data,关于spring-data有很多很棒的设计,例如仅仅只需要声明一个接口就行,你甚至都不需要去实现,spring-data有内置默认的实现类,基本就上完成绝大多数对 ...
- .NET 云原生架构师训练营(模块二 基础巩固 Scrum 核心)--学习笔记
2.7.2 Scrum 核心 3个工件 5个会议 5个价值观 3个工件 产品待办列表(Product Backlog) Sprint 待办列表(Sprint Backlog) 产品增量(Product ...
- 利用Numpy求解投资内部收益率IRR
一. 内部收益率和净现值 内部收益率(Internal Rate of Return, IRR)其实要和净现值(Net Present Value, NPV)结合起来讲.净现值指的是某个投资项目给公司 ...
- 一文读懂k8s之Pod安全策略
导读 Pod容器想要获取集群的资源信息,需要配置角色和ServiceAccount进行授权.为了更精细地控制Pod对资源的使用方式,Kubernetes从1.4版本开始引入了PodSecurityPo ...
- Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...