基本全是水题

第一题水,不过有hack点,先增后不变再减

Codeforces Round #424_iosCodeforces Round #424_#include_02
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-9;
const int N=100000+10,maxn=500+100,inf=0x3f3f3f;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    bool f=0;
    int last,bh=0;
    for(int i=0;i<n;i++)
    {
        int a;
        cin>>a;
        if(i==0)last=a;
        else
        {
            if(last<a)
            {
                if(bh==0)last=a;
                else if(bh==1)f=1;
                else f=1;
            }
            else if(last==a)
            {
                if(bh==0)bh=1,last=a;
                else if(bh==1)last=a;
                else f=1;
            }
            else if(last>a)
            {
                if(bh==0)bh=2,last=a;
                else if(bh==1)bh=2,last=a;
                else last=a;
            }
        }
    }
    if(f)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}
A

第二题更水,6分钟1a,maphash一下就行了

Codeforces Round #424_iosCodeforces Round #424_#include_02
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-9;
const int N=100000+10,maxn=500+100,inf=0x3f3f3f;

map<char,char>m;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    string s,p,t;
    cin>>s>>p>>t;
    for(int i=0;i<s.size();i++)
    {
        m[s[i]]=p[i];
    }
    for(int i=0;i<t.size();i++)
    {
        if('a'<=t[i]&&t[i]<='z')cout<<m[t[i]];
        else if('A'<=t[i]&&t[i]<='Z')cout<<(char)(m[t[i]-'A'+'a']+'A'-'a');
        else cout<<t[i];
    }
    cout<<endl;
    return 0;
}
B

第三题想法题,先sort,然后找间距一一对应起来就可以 了(刚开始想的是求出值来,太蠢了)

Codeforces Round #424_iosCodeforces Round #424_#include_02
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-9;
const int N=2000+10,maxn=500+100,inf=0x3f3f3f;

ll a[N],b[N];
ll sum[N];
set<ll>ans;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll k,n;
    cin>>k>>n;
    for(ll i=0;i<k;i++)
    {
        cin>>a[i];
        if(i==0)sum[i]=a[i];
        else sum[i]=sum[i-1]+a[i];
    }
    for(ll i=0;i<n;i++)cin>>b[i];
    sort(b,b+n);
    sort(sum,sum+k);
    int p=b[0];
    for(int i=0;i<n;i++)b[i]-=p;
    ll i=0;
    for(int i=0;i<k;i++)
    {
        int res=0,p=0;
        for(int j=i;j<k;j++)
        {
            if(sum[j]-sum[i]==b[p])
               p++;
            if(p>=n)
            {
                ans.insert(sum[i]);
                break;
            }
        }
    }
    cout<<ans.size()<<endl;
    return 0;
}
C

第四题,给一堆人,和一堆钥匙的坐标,每个人拿钥匙去办公室,求最小时间,sort一下,然后二分最小时间,每次判断的时候还是枚举两个数组进行匹配

Codeforces Round #424_iosCodeforces Round #424_#include_02
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000")

using namespace std;

const double g=10.0,eps=1e-9;
const int N=2000+10,maxn=500+100,inf=0x3f3f3f;

ll a[N],b[N],p,n,k;
bool ok(ll i,ll j,ll x)
{
    return abs(a[i]-b[j])+abs(b[j]-p)<=x;
}
bool check(ll x)
{
    ll j=0;
    for(int i=0;i<n;i++)
    {
        while(!ok(i,j,x)){
            j++;
        }
        if(j>=k)return 0;
        j++;
    }
    return 1;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>k>>p;
    for(ll i=0;i<n;i++)cin>>a[i];
    for(ll i=0;i<k;i++)cin>>b[i];
    sort(a,a+n);
    sort(b,b+k);
    ll l=0,r=2e9+10;
    for(int i=0;i<100;i++)
    {
        ll m=(l+r)/2;
        if(check(m))r=m;
        else l=m;
    }
    while(check(l))l--;
    cout<<l+1<<endl;
    return 0;
}
D

 第5.6先留坑

话说这场只a了两题,还好比较稳,没被hack,还涨了85分>.<