Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录)
Posted tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录)相关的知识,希望对你有一定的参考价值。 补题链接:Here 本题中改编为一维坐标上的生命游戏 即使 \\(m(m\\in[1,1e9])\\) 的范围很大,但每次进化不会超过 \\(n\\) 次,因为如果我们进化结果与上一代是相同的则说明游戏结束了,但我们只有 \\(n\\) 格。所以最多进行 \\(n\\) 次进化迭代 所以我们可以直接模拟进化过程 时间复杂度:\\(\\mathcal{O}(n^2)\\) 现有两种操作:选定两个元素(\\(i\\not=j\\ \\in(1,n)\\) ) ,\\(n\\le10^3\\) 并且 \\(n\\) 为偶数 现在希望执行最多 \\(5000\\) 次操作使得 \\([a_1,a_2,...,a_n] \\to [-a_1,-a_2,...,-a_n]\\) 这里读者可以手写模拟一下,要将任何一对数字 \\((a,b)\\) 转换为一对 \\((-a,-b)\\) ,可以执行一系列操作,例如 \\((1,2,1,2,1,2)\\),同时 \\(n\\) 为偶数,所以我们可以直接对 \\((1,n)\\) 的元素如上操作 时间复杂度:\\(\\mathcal{O}(n)\\) 有一个任务表,其中任务里也会嵌套任务,现在由于某些原因任务表出现问题,需要由我们恢复 这道题需要用 STL 构建堆栈。 在堆栈中维护列表的当前深度。 最初堆栈是空的。 对于每个新的 \\(a_i\\),有两个选项: 在每次迭代结束后,我们将打印结果堆栈作为列表中的新项目。 请注意,由于输出整个列表,复杂度将是二次的。 时间复杂度:\\(\\mathcal{O}(n^2)\\) 【题意待补】 以上是关于Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录)的主要内容,如果未能解决你的问题,请参考以下文章 Deltix Round, Spring 2021 (rated, Div. 1 + Div. 2)ABCDEFGH题解 Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) A~D题解 Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录) Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
1523A. Game of Life
void solve() {
int n; ll m;
string s;
cin >> n >> m >> s;
s = "0" + s + "0";
while (m--) {
string t = s;
for (int i = 1; i <= n; ++i)
t[i] |= s[i - 1] ^ s[i + 1];
if (t == s)break;
s = t;
}
cout << s.substr(1, n) << "\\n";
}
1523B. Lord of the Values
using ll = long long;
void solve() {
int n; cin >> n;
vector<ll>a(n + 1);
for (int i = 1; i <= n; ++i)cin >> a[i];// 这里可以不用存,伪读入即可
cout << n * 3 << \'\\n\';
for (int i = 1; i <= n; i += 2) {
cout << "1 " << i << " " << i + 1 << \'\\n\';
cout << "2 " << i << " " << i + 1 << \'\\n\';
cout << "1 " << i << " " << i + 1 << \'\\n\';
cout << "2 " << i << " " << i + 1 << \'\\n\';
cout << "1 " << i << " " << i + 1 << \'\\n\';
cout << "2 " << i << " " << i + 1 << \'\\n\';
}
}
1523C. Compression and Expansion
void solve() {
int n; cin >> n;
vector<int>a;
for (int i = 0, x; i < n; ++i) {
cin >> x;
if (x > 1) {
while (!a.empty() && a.back() + 1 != x)
a.pop_back();
assert(!a.empty());
a.pop_back();
}
a.push_back(x);
for (int j = 0; j < (int) a.size(); j++) {
if (j > 0) {
cout << ".";
}
cout << a[j];
}
cout << \'\\n\';
}
}
1523E. Crypto Lights
using ll = long long;
const int N = 1e5 + 10, P = 1e9 + 7;
ll n, k, ans, fac[N], inv[N];
ll qpow(ll a, ll b) {
ll ans = 1;
for (; b; b >>= 1, a = a * a % P)
if (b & 1) ans = ans * a % P;
return ans;
}
void initC() {
fac[0] = 1;
for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i % P;
inv[n] = qpow(fac[n], P - 2);
for (int i = n; i >= 1; i--) inv[i - 1] = inv[i] * i % P;
}
ll C(ll n, ll m) {
if (n < m) return 0;
return fac[n] * inv[m] % P * inv[n - m] % P;
}
void solve() {
cin >> n >> k;
initC();
ans = 1;
for (int i = 1; (i - 1) * (k - 1) <= n; ++i)
ans = (ans + C(n - (i - 1) * (k - 1), i) * qpow(C(n, i), P - 2) % P) % P;
cout << ans << "\\n";
}