首页 > 代码库 > 2015年江西理工大学C语言程序设计竞赛(初级组)

2015年江西理工大学C语言程序设计竞赛(初级组)

JankTao相亲记

解法:排序

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
using namespace std;
const double INF = 1e20;
const double pi = acos(-1.);
int main()
{
    int t;
    int a[100];
    while(cin>>t)
    {
        while(t--)
        {
        for(int i=0;i<11;i++)
        {
            cin>>a[i];
        }
        sort(a,a+11);
        printf("%d\n",a[9]);
        }
    }
    return 0;
}

David的沙漠之路

解法:贪心,尽量往最大的距离走,加上它经历过的加油站中最大的那个,模拟这个过程需要考虑很多情况

#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
struct cmp
{
    bool operator ()(int &a,int &b)
    {
        return a<b;
    }
};
struct node
{
    int x,y;
} e[1005];
int main()
{
    priority_queue<int,vector<int>,cmp>que;
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,l,s,x,y,cnt=0,flag=0,f=0;
        scanf("%d%d%d",&n,&l,&s);
        for(int i=0; i<n; i++)
        {
            scanf("%d%d",&e[i].x,&e[i].y);
        }
        e[n].x=0,e[n].y=l;
        for(int i=0; i<=n; i++,f=0)
        {
            x=e[i].x,y=e[i].y;
            if(y<=s)
            {
                que.push(x);
                f=1;
                //最长可以横跨多少加油站,把他们放在队列里
            }
            while(y>=s)
            {
                if(s>=l) break;
                if(!f && s==y)
                {
                    que.push(x);
                    f=1;
                    //没有横跨,刚刚好到达
                }
                if(que.empty())
                {
                    printf("TJ\n");
                    flag=1;
                    break;
                }
                int xx=que.top();//取最近的加油站
                que.pop();
                s+=xx;
                cnt++;
            }
            if(!f) que.push(x);
            if(s>=l)
            {
                printf("%d\n",cnt);
                flag=1;
                break;
            }
            if(flag) break;
        }
        if(!flag) printf("TJ\n");
        while(!que.empty()) que.pop();
    }
    return 0;
}

TJ的文件系统

解法:字符串处理

#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
using namespace std;
const int maxn = 22;
int main()
{
    int t;
    int n;
    int i;
    int j;
    string s,ss;
    while(cin>>t)
    {
        while(t--)
        {
            string sss="";
            int ans;
            cin>>n>>s;
            for(i=0;i<n;i++)
            {
                string sss="";
                cin>>ss;
                ans=ss.find(".");
             //   cout<<ans<<endl;
                for(j=ans+1;j<ss.length();j++)
                {
                    sss+=ss[j];
                }
           //     cout<<sss<<endl;
                if(sss==s)
                {
                    cout<<ss<<endl;
                }
            }
        }
    }
 
    return 0;
}

握手定理

解法:水题

#include <stdio.h>
int main()
{
    int SEQ, ACK1, ACK2, T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d %d %d", &SEQ, &ACK1, &ACK2);
        if((ACK1 == SEQ + 1) && (ACK2 == ACK1 + 1))
        {
            printf("QWN3213\n");
        }
        else
            printf("TJ\n");
    }
    return 0;
}

Alice AND Bob

解法:模拟

#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
using namespace std;
int a[100000],b[100000],c[100000];
int main()
{
    int t;
    int i,j;
    int n,m;
    int x,y;
    int k;
    cin>>t;
    while(t--)
    {
        k=0;
        cin>>n>>m;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(i=0;i<n;i++)
        {
            cin>>x;
            a[x]++;
        }
        for(i=0;i<m;i++)
        {
            cin>>y;
            b[y]++;
        }
       for(i=0;i<100000;i++)
       {
            if(a[i]&&b[i])
                c[k++]=i;
       }
        for(i=0;i<k;i++)
        {
            if(i==0)
            {
              printf("%d",c[i]);
            }
            else
            {
                printf(" %d",c[i]);
            }
        }
        cout<<endl;
    }
    return 0;
}

建群数据

解法:字符串处理时间

#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
using namespace std;
struct P
{
    int number;
    int hhmmss;
}hehe[100000];
int cmp(P a,P b)
{
    if(a.number==b.number)
        return a.hhmmss<b.hhmmss;
    else
        return a.number<b.number;
}
string s,ss,sss,ssss;
string sssss;
int t,n;
int a;
int i,j;
int ans;
int poi;
int num;
int main()
{
 
    cin>>t;
    while(t--)
    {
        poi=1;
        cin>>n;
        for(i=0;i<n;i++)
        {
            cin>>a>>s;
            hehe[i].number=a;
            ss=s.substr(0,2);
            sss=s.substr(2,2);
            ssss=s.substr(4,2);
            //   cout<<ss<<" "<<sss<<" "<<ssss<<endl;
            hehe[i].hhmmss=((ss[0]-‘0‘)*10+(ss[1]-‘0‘)*1)*3600+((sss[0]-‘0‘)*10+(sss[1]-‘0‘))*60+((ssss[0]-‘0‘)*10+(ssss[1]-‘0‘));
        }
        cin>>sssss;
        ss=sssss.substr(0,2);
        sss=sssss.substr(2,2);
        ssss=sssss.substr(4,2);
        ans=((ss[0]-‘0‘)*10+(ss[1]-‘0‘))*3600+((sss[0]-‘0‘)*10+(sss[1]-‘0‘))*60+((ssss[0]-‘0‘)*10+(ssss[1]-‘0‘));
        sort(hehe,hehe+n,cmp);
        num=hehe[0].hhmmss;
        for(int i=1;i<n;i++)
        {
            if(hehe[i].number!= hehe[i-1].number||hehe[i].hhmmss-num>ans)
            {
                poi++;
                num=hehe[i].hhmmss;
            }
        }
        printf("%d\n",poi);
    }
    return 0;
}

  

2015年江西理工大学C语言程序设计竞赛(初级组)