大一寒假训练二(排序)【更新完成】

本次训练共10题,本文附AC代码和题目链接。

本次训练中稍有难度的题:nefu 874 相约摩洛哥

大一寒假训练二(排序初级版)

nefu 1481 谁考了第k名-排序

#include <bits/stdc++.h>
using namespace std;
struct node
{
    string num;
    double mark;
}p[101];
bool cmp(node a,node b)
{return a.mark>b.mark;}
int main()
{
    int n,k,i;
    cin>>n>>k;
    for(i=0;i<n;i++)
    cin>>p[i].num>>p[i].mark;
    sort(p,p+n,cmp);
    printf("%s %g\n",p[k-1].num.c_str(),p[k-1].mark);
    return 0;
}

nefu 1482 奇数单增序列

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,a[510];
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        for(i=1;i<=n;i++)
        {
            if(a[i]%2==1)
            {
                if(i==1)printf("%d",a[i]);
                else printf(",%d",a[i]);
            }
        }
        printf("\n");
    }
    return 0;
}

nefu 1483 成绩排序

#include <bits/stdc++.h>
using namespace std;
struct node
{
    string name;
    int mark;
}p[21];
bool cmp(node a,node b)
{
    if(a.mark!=b.mark)return a.mark>b.mark;
    else return a.name<b.name;
}
int main()
{
    int i,n;
    cin>>n;
    for(i=0;i<n;i++)
    cin>>p[i].name>>p[i].mark;
    sort(p,p+n,cmp);
    for(i=0;i<=n-2;i++)
    printf("%s %d\n",p[i].name.c_str(),p[i].mark);
    printf("%s %d",p[n-1].name.c_str(),p[n-1].mark);
    return 0;
}

大一寒假训练二(排序)

nefu 860 排序

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,a[101];
    while(scanf("%d",&n)!=-1)
    {
        for(i=0;i<=n-1;i++)
        scanf("%d",&a[i]);
        sort(a,a+n);
        for(i=0;i<=n-1;i++)
        {
            if(i==n-1) printf("%d\n",a[i]);
            else printf("%d ",a[i]);
        }
    }
    return 0;
}

nefu 429 绝对值排序

#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{return abs(a)>abs(b);}
int main()
{
    int i,n,a[101];
    while(scanf("%d",&n)!=-1)
    {
        if(n==0)break;
        for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
        sort(a+1,a+n+1,cmp);
        for(i=1;i<=n-1;i++)
        printf("%d ",a[i]);
        printf("%d\n",a[n]);
    }
    return 0;
}

nefu 1604 QWQ和彩色石

这题数据比较水,用暴力循环两层都能过。
但是用桶排序的方法,比暴力循环要快得多。

//桶排序
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,x,ans,t[101];//t为存储1~100内每个数字出现次数的"桶"
    while(scanf("%d",&n)!=-1)
    {
        memset(t,0,sizeof(t));
        ans=0;//赋初值,相同数字的个数最少是0
        for(i=1;i<=n;i++)
        {
            scanf("%d",&x);//依次输入x
            t[x]++;//如果输入x,x对应的"桶"是t[x],把t[x]+1即可
            ans=max(ans,t[x]);//每次把新得到的t[x]与之前的最大的ans比较,取max
        }
        printf("%d\n",ans);
    }
    return 0;
}

nefu 554 老和尚的导员

#include <bits/stdc++.h>
using namespace std;
struct student
{
    int a[5],s,k;
};
bool cmp(student m,student n)
{
    if(m.s!=n.s) return m.s>n.s;//先降序排列总成绩
    else if(m.a[1]!=n.a[1]) return m.a[1]>n.a[1];//如果总成绩相同,排序分成绩1
    else if(m.a[2]!=n.a[2]) return m.a[2]>n.a[2];//如果总成绩、分成绩1相同,排序分成绩2
    else if(m.a[3]!=n.a[3]) return m.a[3]>n.a[3];//如果总成绩、分成绩1、2相同,排序分成绩3
    else if(m.a[4]!=n.a[4]) return m.a[4]>n.a[4];//如果总成绩、分成绩1、2、3相同,排序分成绩4
}
int main()
{
    int i,n;
    student stu[200];
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        {
            scanf("%d%d%d%d",&stu[i].a[1],&stu[i].a[2],&stu[i].a[3],&stu[i].a[4]);
            stu[i].s=stu[i].a[1]+stu[i].a[2]+stu[i].a[3]+stu[i].a[4];
            stu[i].k=i;
        }
        sort(stu+1,stu+n+1,cmp);
        for(i=1;i<=n;i++)
        printf("%d %d\n",stu[i].k,stu[i].s);
    }
    return 0;
}

nefu 556 健忘的老和尚

#include <bits/stdc++.h>
using namespace std;
struct student
{
    int a;
    char name[101];
};
bool cmp(student m,student n)
{return m.a<n.a;}
int main()
{
    int i,n,m,o;
    student p[200];
    while(scanf("%d%d%d",&n,&m,&o)!=-1)
    {
        for(i=1;i<=n;i++)
        scanf("%s%d",&p[i].name,&p[i].a);
        sort(p+1,p+n+1,cmp);
        for(i=n-m+1;i<=n;i++)
            printf("%s\n",p[i].name);
        for(i=1;i<=o;i++)
            printf("%s\n",p[i].name);
    }
    return 0;
}

nefu 873 戏说三国
在输入数据和计算数据之前,把题目看清楚,不要因为没看清题出现WA

#include <bits/stdc++.h>
using namespace std;
struct student
{
    double s,x,y,z,x1,y1,z1;
    char name[30];
};
bool cmp(student m,student n)
{
    if(m.s!=n.s)return m.s>n.s;
    else if(m.x1!=n.x1)return m.x1>n.x1;
    else if(m.y1!=n.y1)return m.y1>n.y1;
    else if(m.z1!=n.z1)return m.z1>n.z1;
}
student p[100001];
int main()
{
    int t,n,i,I;
    double a,b,c;
    while(scanf("%d",&t)!=-1)
    {
        for(I=1;I<=t;I++)
        {
            scanf("%d%lf%lf%lf",&n,&a,&b,&c);
            for(i=1;i<=n;i++)
            {
                scanf("%s%lf%lf%lf",p[i].name,&p[i].x,&p[i].y,&p[i].z);
                p[i].x1=p[i].x*b*0.01;
                p[i].y1=p[i].y*a*0.01;//这里故意坑你,要把题目看清楚。题目说的是“每个官员有一个智育、德育、武育三个分数,分别以b%,a%,c%的比率”,也就是说,不是a、b、c,而是b、a、c!
                p[i].z1=p[i].z*c*0.01;
                p[i].s=p[i].x1+p[i].y1+p[i].z1;
            }
            sort(p+1,p+n+1,cmp);
            printf("Case #%d:\n",I);
            for(i=1;i<=n;i++)
            printf("%s %.4lf %.4lf %.4lf %.4lf\n",p[i].name,p[i].s,p[i].x1,p[i].y1,p[i].z1);
        }
    }
    return 0;
}

nefu 874 相约摩洛哥
注意审题
最后的获胜者为正确解答题目最多且总用时最少的队伍,
每道试题用时将从竞赛开始到试题解答被判定为正确为止,
其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时!
比如说第一题提交10次都是错的,但是这道题不加罚时10*20!

#include <bits/stdc++.h>
using namespace std;
struct student
{
    char name[30];
    int t[4],sub[4],tsum,subac;
};

bool cmp(student m,student n)
{
    if(m.subac!=n.subac) return m.subac>n.subac;
    if(m.subac==n.subac) return m.tsum<n.tsum;
}
student p[100001];
int main()
{
    int n,i,j;
    while(scanf("%d",&n)!=-1)
    {
        for(i=1;i<=n;i++)
        scanf("%s%d%d%d",p[i].name,&p[i].t[1],&p[i].t[2],&p[i].t[3]);
        for(i=1;i<=n;i++)
        scanf("%d%d%d",&p[i].sub[1],&p[i].sub[2],&p[i].sub[3]);
        for(i=1;i<=n;i++)
        {
            p[i].tsum=p[i].subac=0;
            for(j=1;j<=3;j++)
            {
                if(p[i].t[j]!=-1)
                {
                   p[i].subac++;
                   p[i].tsum=p[i].tsum+p[i].t[j]+20*(p[i].sub[j]-1);
                }
            }
        }
        sort(p+1,p+n+1,cmp);
        for(i=1;i<=n;i++)
        printf("%s %d %d\n",p[i].name,p[i].subac,p[i].tsum);
    }
    return 0;
}
全部评论

相关推荐

投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务