蓝翔杯子校内赛练习代码

写的代码保存一下,留作纪念

第一题

#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 1000010;
int A[maxn];
int main(void)
{
    int n;
    cin>>n;
    while(n!=-1)
    {
        for(int i=0;i<n;i++)
        {
            cin >> A[i];
        }
        int pre = 0;
        for(int i=1;i<n;i++)
        {
            if(A[i]!=A[pre])
            {
                A[++pre]=A[i];
            }
            else 
            {
                //
            }
        }
        for(int i=0;i<=pre;i++)
        {
            cout << A[i];
            if(i!=pre) cout <<" "; 
        }
        cin >> n;
    }
    return 0;
} 
View Code

第二题

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string.h>
using namespace std;
const int maxn = 1024*1024+10;
int A[26][maxn];
int B[26];
int C[26];
int ans = 0;
string pwd[1010];
string str;
int main(void)
{
    int n;
    cin >> str;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> pwd[i];
    }
    int len = str.length();
    for(int i=0;i<len;i++)
    {
        char ch = str[i];
        if(i!=0)
        {
            for(int j=0;j<26;j++) 
                A[j][i]=A[j][i-1];
        }
        A[ch-'a'][i]++;
    }
    
    for(int i=0;i<n;i++)//i密码 
    {
        memset(B,0,sizeof(B));
        for(int k=0;k<8;k++)
        {
            B[pwd[i][k]-'a']++;
        }
        for(int k=7;k<len;k++)
        {
            bool flag = true;
            for(int j=0;j<26;j++)
            {
                if(k==7)
                {
                    C[j] = A[j][k];
                }
                else
                {
                    C[j] = A[j][k]-A[j][k-8];
                }
            }
            for(int j=0;j<26;j++)
            {
                if(C[j]!=B[j])
                {
                    flag = false; 
                    break;
                }
            }
            if(flag==true) ans++;
        }
    }
    cout << ans;
    return 0;
}
View Code

第三题

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int m,n,w;
int x1,y1;
int x2,y2;
void makePoint1()
{
    y1 = (m+w-1)/w;
    if(y1%2==0)
    {
        x1 = w - (m-(y1-1)*w)+1;
    }
    else
    {
        x1 = m-(y1-1)*w;
    }
}
void makePoint2()
{
    y2 = (n+w-1)/w;
    if(y2%2==0)
    {
        x2 = w-(n-(y2-1)*w)+1;
    }
    else 
    {
        x2 = n-(y2-1)*w;
    }
}
int main(void)
{
    cin >> w >> m >> n;
    makePoint1();
    makePoint2();
    int ans = abs(x1-x2)+abs(y1-y2);
    cout << ans; 
    return 0;    
} 
View Code

第四题

#include<iostream>
#include<algorithm>
#include<map>
#include<string> 
using namespace std;
map<string,string> table;
map<string,int> sum; 
const int maxn = 50010;
int M,N;
string A[maxn];
string B[maxn];
int main(void)
{
    table["A"]=table["B"]=table["C"]="2";
    table["D"]=table["E"]=table["F"]="3";
    table["G"]=table["H"]=table["I"]="4";
    table["J"]=table["K"]=table["L"]="5";
    table["M"]=table["N"]=table["O"]="6";
    table["P"]=table["Q"]=table["R"]=table["S"]="7";
    table["T"]=table["U"]=table["V"]="8";
    table["W"]=table["X"]=table["Y"]=table["Z"]="9";
    cin >> N >> M;
    for(int i=0;i<N;i++) 
    {
        cin >> A[i];
    }
    for(int i=0;i<M;i++)
    {
        cin >> B[i];
        sum[B[i]]=0;
    }
    for(int i=0;i<N;i++)
    {
        string hand = "";
        for(int k=0;k<A[i].length();k++)
        {
            string ch = A[i].substr(k,1);
            ch = table[ch];
            hand+=ch;
        }
        //cout << hand<<endl;
        sum[hand]++;
    }
    for(int i=0;i<M;i++)
    {
        cout << sum[B[i]];
        if(i!=M-1) cout<<" "; 
    } 
    return 0;
}
View Code

第五题

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
bool used[26];
bool have[26];
char ans[6][6];
string key;
int main(void)
{
    cin >> key;
    for(int i=0;i<key.length();i++)
    {
        if(key[i]=='J') key[i]='I';
        else
        {
            have[key[i]-'A']=true;
        }
    }
    memset(used,0,sizeof(used));
    used['J'-'A']=true;
    int pos=0;
    for(int i=0;i<key.length();i++)
    {
        int k = key[i]-'A';
        if(have[k]==true&&used[k]==false)
        {
            used[k]=true;
            int x = pos/5;
            int y = pos%5;
            ans[x][y]='A'+k;
            pos++;
        }
    }
    for(int i=0;i<26;i++)
    {
        if(used[i]==false)
        {
            int x = pos/5;
            int y = pos%5;
            ans[x][y]='A'+i;
            pos++;
        }
    }
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            cout << ans[i][j];
        }
        if(i!=5) cout << endl;
    }
    return 0;    
} 
View Code

第六题

#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int maxn = 100010;
int A[maxn],N;
int len[maxn];
int main(void)
{
    cin >> N;
    for(int i=0;i<N;i++)
    {
        cin >> A[i];
        len[i]=1;
    }
    for(int i=1;i<N;i++)
    {
        for(int k=0;k<i;k++)
        {
            if(A[k]<A[i] && len[k]+1>len[i])
            {
                len[i] = len[k]+1; 
            }
        }
    }
    int ans = N-len[N-1];
    cout << ans;
    return 0;    
} 
View Code

第七题

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn = 100000+10;
int n,ans=0;
int X[maxn],Y[maxn];
int main(void)
{
    cin >> n;
    for(int i=0;i<n;i++) cin >>X[i]>>Y[i];
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(X[i]+X[j]==Y[i]+Y[j]) ans++;
        }
    }
    cout << ans;
    return 0;
}
View Code

第八题

#include<iostream>
#include<algorthm>
#include<cstdio>
using namespace std;
int n
int main(void)
{
    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/zuimeiyujianni/p/10110075.html