大一集训--c++vector容器

vector容器

题目一:P1675

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int x;
    vector<int>ve;
    while(cin >> x&&x)
    {
        ve.push_back(x);
    }
    if(ve.size()&1)
    {
        cout << ve[(ve.size()-1)/2] << endl ;
    }
    else
        cout << ve[ve.size()/2]+ve[ve.size()/2-1] << endl ;
    return 0;
}

题目二:P2128

#include <bits/stdc++.h>
using namespace std;
vector<int>ve[10005];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=-1)
    {
        int x,y;
        while(m--)
        {
            scanf("%d%d",&x,&y);
            ve[x].push_back(y);
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<ve[i].size();j++)
            {
                if(j==0)
                    printf("%d",ve[i][j]);
                else
                    printf(" %d",ve[i][j]);
            }
            printf("\n");
            ve[i].clear();
        }
    }
    return 0;
}

题目三:P2129

#include <bits/stdc++.h>
using namespace std;
vector<int>ve[100005];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=-1)
    {
        for(int i=1;i<=n;i++)
        {
            ve[i].push_back(i);
        }
        int a,b;
        while(m--)
        {
            scanf("%d%d",&a,&b);
            if(a==b||ve[b].size()==0)
                continue;
            while(!ve[b].empty())
            {
                ve[a].push_back(*ve[b].begin());
                ve[b].erase(ve[b].begin());
            }
        }
        for(int i=1;i<=n;i++)
        {
            if(ve[i].size()==0)
            {
                printf("-1\n");
                continue;
            }
            for(int j=0;j<ve[i].size();j++)
            {
                if(j==0)
                    printf("%d",ve[i][0]);
                else
                    printf(" %d",ve[i][j]);
            }
            printf("\n");
            ve[i].clear();
        }
    }
    return 0;
}

题目四:P1676

#include <bits/stdc++.h>

using namespace std;
int main()
{
    vector<string>date[1005];
    map<string,int>vis;
    int n,m;
    cin >> n >> m;
    string s,x;
    int i=0;
    while(m--)
    {
        cin >> s >> x;
        if(vis[s]!=0)
        {
            date[vis[s]].push_back(x);
            continue;
        }
        else
        {
            vis[s]=++i;
            date[vis[s]].push_back(s);
            date[vis[s]].push_back(x);
        }
    }
    for(i=1;i<=n;i++)
    {
        for(int j=0;j<date[i].size();j++)
        {
            if(j==0)
                cout << date[i][j];
            else
                cout << " " << date[i][j];
        }
        cout << endl ;
    }
    return 0;
}

题目五:P2127

#include <bits/stdc++.h>
using namespace std;
int vis[20005];
int main()
{
    int n,m;
    while(cin >> n >> m)
    {
        memset(vis,0,sizeof(vis));
        //set<int>bad;
        vector<int>people;
        for(int i=0;i<2*n;i++)
        {
            people.push_back(i);
        }
        int now=0;
        for(int i=1;i<=n;i++)
        {
            int t;
            t=(now-1+m)%people.size();
            now=t;
            //bad.insert(people[t]);
            vis[people[t]]=1;
            people.erase(people.begin()+t);
        }
        for(int i=0;i<2*n;i++)
        {
            if(vis[i])
            {
                printf("B");
            }
            else
            {
                printf("G");
            }
        }
        printf("\n");
    }
    return 0;
}

题目六:P2124

#include <bits/stdc++.h>
using namespace std;
int a[100005];
int s[100005];
int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    //priority_queue<int,vector<int>,greater<int> >que;
    int x;
    int maxx=1;
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&x);
        a[x]++;
        if(x>maxx)
            maxx=x;
    }
    s[0]=a[0];
    for(int i=1;i<=maxx;i++)
    {
        s[i]=s[i-1]+a[i];
    }
    int ans;
    if(k>maxx)
    {
        ans=n;
    }
    for(int i=0;i+k<=maxx;i++)
    {
        if(i==0)
        {
            ans=s[k];
        }
        else
        {
            ans=(s[k+i]-s[i-1])>ans?(s[k+i]-s[i-1]):ans;
        }
    }
    printf("%d\n",ans);
    return 0;
}

发布了44 篇原创文章 · 获赞 13 · 访问量 2333

猜你喜欢

转载自blog.csdn.net/NEFU_kadia/article/details/104395765