Deltix Round, Spring 2021 (rated, Div. 1 + Div. 2)ABCDEFGH题解
Posted quinn18
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deltix Round, Spring 2021 (rated, Div. 1 + Div. 2)ABCDEFGH题解相关的知识,希望对你有一定的参考价值。
A - Game of Life
题意:给你一个长 n n n的 01 01 01串,1是活细胞永远不死, 0 0 0是死细胞当他边上恰好只有一个活细胞他才能复活,每 1 1 1次就有满足细胞复活,问 m m m次的 01 01 01串
所以就是把
1
1
1向前向后延伸
m
m
m的长度并且我们可以知道假如
m
m
m无线大
10001中间的0是绝对不会复活的
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N = 1e3+10;
int t, n, m, q, ans, a[N];//记录活细胞的位置
string s;
char ss[N];
bool vis[N];//表示这个位置的细胞永远不会复活
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--) {
q=0;
memset(vis, 0, sizeof vis);
cin>>n>>m>>s;
for(int i=0; i<n; i++) {
ss[i]=s[i];
if(s[i]=='1') a[++q]=i;
if(i!=0&&i!=n-1&&s[i]=='0'&&s[i+1]=='1'&&s[i-1]=='1') vis[i]=1;
}
for(int i=2; i<=q; i++) {
if((a[i]-a[i-1])%2==1)continue;
else vis[(a[i]+a[i-1])/2]=1;//这里判断错了wa了一发TAT
}
for(int i=1; i<=q; i++) {
for(int j=0; j<n; j++) {
if(j>=a[i-1]&&s[j]=='0'&&j>=a[i]-m&&j<=a[i]+m&&!vis[j]) ss[j]='1';//其实这里也不用新的数组直接变然后条件了把s[j]==0删了
}
}
for(int i=0; i<n; i++) cout<<ss[i];
cout<<endl;
}
return 0;
}
B - Lord of the Values
题意:给你一个长度是偶数的数组,你可以经过两种操作,把给你的数组变成全负的,输出操作
1
i
j
=
=
>
a
i
=
a
i
+
a
j
1 i j==>ai=ai+aj
1ij==>ai=ai+aj
2
i
j
=
=
>
a
j
=
a
j
−
a
i
2 i j==>aj=aj-ai
2ij==>aj=aj−ai
经过代换来带换去我们发现先二后一就是
a
i
=
−
a
j
ai=-aj
ai=−aj,先一后二就是
a
j
=
a
i
aj=ai
aj=ai再模拟一下随便两个数就出了
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N = 1e3+10;
int t, n, m, q, ans, a[N];
string s;
char ss[N];
bool vis[N];
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--) {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i];
}
cout<<n/2*6<<endl;
for(int i=1; i<=n; i++) {
if(i%2) {
cout<<1<<" "<<i<<" "<<i+1<<endl;
cout<<2<<" "<<i<<" "<<i+1<<endl;
cout<<2<<" "<<i<<" "<<i+1<<endl;
cout<<1<<" "<<i<<" "<<i+1<<endl;
cout<<2<<" "<<i<<" "<<i+1<<endl;
cout<<2<<" "<<i<<" "<<i+1<<endl;
}
}
}
return 0;
}
C - Compression and Expansion
题意:就是一个目录突然变成这个目录行的最后一个数了,通过这个最后的数字,你要恢复原来的目录呜呜呜
挺像模拟题的就是要想清楚
输入是
1
1
1的时候就直接在之前的输出加
1
1
1
不然假如之前的最后一个数是当前输入的数-1那么我们直接替换
不然就跳到最后一个数是当前输入的数-1的那一层
用字符串存的话就不知道怎么返回去所以是用vector存数字就可以了。。
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N = 1e3+10;
int t, n, m, x, k, ans, a[N];
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--) {
cin>>n;
vector<int> v;
for(int i=1; i<=n; i++) {
cin>>x;
if(v.empty()) {
v.push_back(x);
cout<<x<<endl;
}else if(x==1) {
v.push_back(1);
for(int i=0; i<v.size()-1; i++) {
cout<<v[i]<<".";
}
cout<<v.back()<<endl;
}else if(v.back()==x-1) {
v.back()=x;
for(int i=0; i<v.size()-1; i++) {
cout<<v[i]<<".";
}
cout<<x<<endl;
}else {
while(v.back()!=x-1) v.pop_back();
v.back()=x;
for(int i=0; i<v.size()-1; i++) {
cout<<v[i]<<".";
}
cout<<x<<endl;
}
}
}
return 0;
}
总结
菜狗自杀了就又
以上是关于Deltix Round, Spring 2021 (rated, Div. 1 + Div. 2)ABCDEFGH题解的主要内容,如果未能解决你的问题,请参考以下文章
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)