纪中刷题记录 2018/8/17

你好呀!欢迎查看由QQ为11186192的蒟蒻原创的博客—纪中刷题记录 2018/8/17

洛谷博客 : 快点击这里(https://amorpk.blog.luogu.org/)

以上为博客水印,转载请复制之

T1(【2016-12-17普及组模拟】纪中食堂 )

题目描述

纪中的食堂是十分热闹的,当然那都是拥挤的缘故了(^__^)。但纪中学生是好孩子,都会自觉排队打饭,而每个人打饭都要消耗时间。在K个人的队伍中,第i个人打饭的时间为Ti。由于每个窗口同一时间只能服务一个同学,所以后面的同学都得等着。在示范性高中评估那天,专家们也来到了学生食堂就餐。在专家来到食堂之前,同学们都已经来到了食堂。为了给专家们对纪中人有个好的评价,同学们所排的队伍一定要让专家们尽快吃上午餐(专家们当然不会插队,也不会接受同学们的礼让,他们一定会等排在前面的同学打完饭后再打饭)。人都有主观认识,专家觉得久等了,是因为全部同学等待的长了,所以同学们等待的时间总和越小,专家越快吃上饭。
现在你的任务就是确定能让专家们尽快吃上饭的排队方案。

输入

第一行一个整数K(1<=K<=300),表示排在专家们的学生的人数。
第二行以后为K个正数,每行十个数表示从1号到K号的学生的打饭时间,T1,T2,……Tk.(0

#include<cstdio>
using namespace std;
int K;
long long Fp[35]={0,1,1,2};
long long Get(int k){
    long long ans = 0;
    if(Fp[k] != 0) return Fp[k];
    for(int i=1;i<k;++i){
        if(Fp[i] == 0)Fp[i] = Get(i);
        if(Fp[k-i] == 0)Fp[k-i] = Get(k-i);
        ans += Fp[i]*Fp[k-i];
    }
    return ans;
}
int main(){
    freopen("bracket.in","rb",stdin);
    freopen("bracket.out","wb",stdout);
    scanf("%d",& K);
    printf("%lld", Get(K));
}

T3(2114. 【2016-12-17普及组模拟】纪中一日游)

题目描述

示范性高中评估完之后,专家们觉得纪中太美、太大了,决定游览一下纪中。但纪中校园的太复杂了,什么中山路、庆龄路、幕贞路等等太多了,所以从校门口到新区的路线不止一两条。但是专家的时间是宝贵的,尤其不能浪费。现在,专家车队的队长找到了你,他给了你一张描述了他们待选路线的表(n*n的矩阵A),让你找出行车距离最短的路线。表中表示了任意两个路口的连通情况,以及距离。矩阵元素a(i,j)=0表是路口i,j不连通,a(i,j)!=0表示路口i,j的行车距离。其中校门在路口1,新区在路口n.

输入

第一行为一个自然数n(1

#include<cstdio>
int d[31][31];
int n;
using namespace std;
int main(){
    freopen("tour.in","rb",stdin);
    freopen("tour.out","wb",stdout);
    scanf("%d",& n);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            scanf("%d",& d[i][j]);
    for(int k=1;k<=n;++k)
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                if((d[i][k] != 0) && (d[k][i] != 0) && (d[i][k]+d[k][j]<d[i][j]))
                    d[i][j] = d[i][k] + d[k][j];
    printf("%d",d[1][n]);
}

T4(2115. 【2016-12-17普及组模拟】纪中送宾队 )

题目描述

评估完了,游览也完了,终于到了送别的时候,为了在最后给专家们留下一个很好的印象,信息组的学生组成了送宾队。队长Symbol在经过认真的思考后,决定把队员们排成K列。为了有更好的视觉效果,每列的人数当然不能相差太多,但是美学研究表明,并非人数均等时视觉效果最好(表明任意两列人数不能相等)。队长在深思熟虑后,认为可以用一个公式来描述一种排队方式的美学价值。假设Value表示美学价值的大小,则:

  K

Value=∏Wi =W1*W2*…..*Wk

 I=1

Value值越大,视觉效果越好。
现在专家组马上要来了,可Symbol的笔记本坏了。于是他请学生你编程帮他求出最优的排队方法。

输入

一个整数K与人数M(1<=K<=50,M>=K*(K+1)/2),数据保证有解.

输出

最优的排队方案:K行数字(从小到大)。

样例输入

3 7

样例输出

1
2
4

数据范围限制

对于30%的数据,K<=10,1<=M<=1300;

对于70%的数据,K<=30,1<=M<=1300;

对于100%的数据 ,K<=50,1<=M<=1300。

看代码

#include<cstdio>
using namespace std;
int K,M;
int s[55];
int main(){
    freopen("queue.in","rb",stdin);
    freopen("queue.out","wb",stdout);
    scanf("%d%d",&K,&M);
    for(int i=1;i<=K;++i) s[i] = i,M-=i;
    while(M>0){
        for(int j=K;j >= 1 && M > 0 ;--j,--M) s[j] ++;
    }
    for(int i=1;i<=K;++i) printf("%d\n",s[i]);
}

下午来晚了

猜你喜欢

转载自blog.csdn.net/qq_42000775/article/details/81812351