VP时间
A.
这个字符串所表示是数字为质数
17,71
wa2发
3.ac
B.
看一个数字是什么(是0)
开始遍历找到最后一个0
这块区域肯定可以一样
然后比较后面的
000101 010111
这例子可以说明应该枚举0,1之间然后让模拟一下
如果有,a的01,和b的01这个位置都一样就YES
不一样就NO
1.ac
C.
模拟
在一开始不会存在?,不会排序因为没有数字
遇到+cnt++;
遇到-cnt--;
cnt==1时不可能出现0
关键点在于1,0转变
12->1,-+,后可以变成10->0
如果cnt==2,原本是升序,现在变成降序
1.wa2
题解
A.
// Problem: A. Prime Deletion
// Contest: Codeforces - Educational Codeforces Round 154 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1861/problem/A
// Memory Limit: 512 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
//へ /|
// /\7 ∠_/
// / │ / /
// │ Z _,< / /`ヽ
// │ ヽ / 〉
// Y ` / /
// イ● 、 ● ??〈 /
// () へ | \〈
// >ー 、_ ィ │ //
// / へ / ノ<| \\
// ヽ_ノ (_/ │//
// 7 |/
// >―r ̄ ̄`ー―_
#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
string s;
cin>>s;
int n=s.length();
for(int i=0;i<n;i++){
if(s[i]=='1' || s[i]=='7' || s[i]=='9'){
cout<<s[i];
}
}
cout<<'\n';
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int q;
cin >> q;
while (q--) {
solve();
}
return 0;
}
B.
// Problem: B. Two Binary Strings
// Contest: Codeforces - Educational Codeforces Round 154 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1861/problem/B
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
//へ /|
// /\7 ∠_/
// / │ / /
// │ Z _,< / /`ヽ
// │ ヽ / 〉
// Y ` / /
// イ● 、 ● ??〈 /
// () へ | \〈
// >ー 、_ ィ │ //
// / へ / ノ<| \\
// ヽ_ノ (_/ │//
// 7 |/
// >―r ̄ ̄`ー―_
#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
string a,b;
cin>>a>>b;
int n=a.length();
for(int i=0;i<n;i++){
if(a[i]=='0' && a[i+1]=='1'){
if(b[i]=='0' && b[i+1]=='1'){
cout<<"YES"<<'\n';
return;
}else{
continue;
}
}
}
cout<<"NO"<<'\n';
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int q;
cin >> q;
while (q--) {
solve();
}
return 0;
}
C.
(stay fool)题解
模拟
用一个数组来模拟
如果最后是一个是(1,说明是有序的,0,说明是无序的,-1,是不确定)
如果前面是1,后面插入一个数,数组是不确定顺序的,插入-1
如果前面是-1,后面插入一个数,数组是无序的,插入0
// Problem: C. Queries for the Array
// Contest: Codeforces - Educational Codeforces Round 154 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1861/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
//へ /|
// /\7 ∠_/
// / │ / /
// │ Z _,< / /`ヽ
// │ ヽ / 〉
// Y ` / /
// イ● 、 ● ??〈 /
// () へ | \〈
// >ー 、_ ィ │ //
// / へ / ノ<| \\
// ヽ_ノ (_/ │//
// 7 |/
// >―r ̄ ̄`ー―_
#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
void solve() {
string s;
cin>>s;
vector<int> v={1};
int n=s.length();
int cnt=0;
for(int i=0;i<n;i++){
if(s[i]=='+'){
cnt++;
int cur=v.back();
if(cur==1 && cnt>=2){//前面是有序后面加进来可以是无序也可以是有序
cur=-1;
}
v.push_back(cur);
}else if(s[i]=='-'){
cnt--;
int cur=v.back();
v.pop_back();
if(cur==1){//前面肯定是有序的
v.back()=1;
}
}else if(s[i]=='1'){
if(v.back()==0){
cout<<"NO"<<'\n';
return;
}else if(v.back()==-1){
v.back()=1;
}
}else if(s[i]=='0'){
if(v.back()==-1){
v.back()=0;
}else if(v.back()==1){
cout<<"NO"<<'\n';
return;
}
}
}
cout<<"YES"<<'\n';
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int q;
cin >> q;
while (q--) {
solve();
}
return 0;
}