比赛链接:ABC352
Problem A:
签到题。
#include <bits/stdc++.h>
using namespace std;
int main(){int N,X,Y,Z;cin>>N>>X>>Y>>Z;if((X<=Z && Z<=Y) || (Y<=Z && Z<=X))cout<<"YES"<<endl;elsecout<<"NO"<<endl;return 0;
}
Problem B:
没什么好说的。看代码吧。
#include <bits/stdc++.h>
using namespace std;
int main(){string S,T;cin>>S>>T;int j=0;for(int i=0;i<T.size();i++){if(j<S.size() && T[i]==S[j]){cout<<i+1<<endl;j++;}}return 0;
}
Problem C:
出奇的简单,比以往的C简单很多。
#include <bits/stdc++.h>
using namespace std;
int main(){int N;cin>>N;long long h=0;int mx=0;for(int i=1;i<=N;i++){int A,B;cin>>A>>B;h+=A;mx=max(mx,B-A);}h+=mx;return 0;
}
Problem D:
这题用set不好吗?用什么乱七八糟的。
记录位置。令当前数是,则set里放的就是到,ans每次对set里最大最小值的差取min即可。
#include <bits/stdc++.h>
using namespace std;
int p[200005];
int main(){int N,K;cin>>N>>K;for(int i=0;i<N;i++){int P;cin>>P;P--;p[P]=i;}int ans=N;set<int> st;for(int i=0;i<N;i++){st.insert(p[i]);if(i>=K)st.erase(p[i-K]);if(i>=K-1)ans=min(ans,*st.rbegin()-*st.begin());}cout<<ans<<endlreturn 0;
}
以上就是本期的全部内容了,我们下期再见!
友情提醒:本期的代码都有问题,请不要无脑Ctrl C+Ctrl V。