2019.12.31 大一练习赛(一)

A题    QWQ和QAQ(NEFU  OJ 1609)

using namespace std;
struct cp                //定义结构体(三种产品)
{
    int a,b,c;           //需要原料的量
    int d;
} data[5];

int main()
{
    int t;
    while(cin >> t)
    {
        while(t--)
        {
            memset(data,0,sizeof(data));
            int sum,maxx=-1,x,y,z;;
            for(int i=1; i<=3; i++)
                cin >> data[i].a >> data[i].b >> data[i].c;
            cin >> x >> y >> z;
            for(int i=1; i<=3; i++)
                cin >> data[i].d;
            int tmp[5]= {0},ttmp[5];
            for(int i=1; i<=3; i++)     //求三种产品的最大能生产量
            {
                if(data[i].a!=0)        //注意原料是否为0,否则会WA了
                    ttmp[1]=x/data[i].a;
                else
                {
                    ttmp[1]=2005;        //不需要原料
                }
                if(data[i].b!=0)
                    ttmp[2]=y/data[i].b;
                else
                {
                    ttmp[2]=2005;
                }
                if(data[i].c!=0)
                    ttmp[3]=z/data[i].c;
                else
                {
                    ttmp[3]=2005;
                }
                sort(ttmp+1,ttmp+4);    //寻找每种原料能生产的最小值
                tmp[i]=ttmp[1];
            }
            int i,j,k;
            for(i=0; i<=tmp[1]; i++)//产品1
            {
                for(j=0; j<=tmp[2]; j++)//产品2
                {
                    for(k=0; k<=tmp[3]; k++)//产品3
                    {
                        sum=i*data[1].d+j*data[2].d+k*data[3].d;//价值
                        int sum1[5];
                        sum1[1]=i*data[1].a+j*data[2].a+k*data[3].a;//判断是否会超过原料
                        sum1[2]=i*data[1].b+j*data[2].b+k*data[3].b;
                        sum1[3]=i*data[1].c+j*data[2].c+k*data[3].c;
                        if(sum1[1]<=x&&sum1[2]<=y&&sum1[3]<=z)
                            if(maxx<sum)
                                 maxx=sum;
                    }
                }
            }
            cout << maxx <<endl;
        }
    }
    return 0;
}

B题    QWQ和神奇的传送器(NEFU OJ )

#include <bits/stdc++.h>

using namespace std;
int a[15][15],i,j;
void excel()                    //打表(与排列组合有关)杨辉三角
{
    a[1][1]=1;
    for(i=2;i<=13;i++)
    {
        for(j=1;j<=13;j++)
        a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
}
int main()
{
    int t;
    while(cin >> t)
    {
        excel();//打标,别忘了;
        int m,n;
        while(cin >> m >> n)
        {
            cout << a[n][m] <<endl;//数学中的隔板法
        }

    }

    return 0;
}

C题    QWQ和神秘商人(NEFU OJ 1607)

#include <bits/stdc++.h>

using namespace std;

struct ada{
    int x,y;
}a[100005];

bool cmp(ada a,ada b)        //结构体排序
{
    if(a.x!=b.x)
        return a.x>b.x;
    else
        return a.y>b.y;
}
int main()
{
    int n,k;
    while(cin >> n>> k)
    {
        memset(a,0,sizeof(a));
        int ans=0;
        for(int i=1;i<=n;i++)
            cin >> a[i].x;
        for(int i=1;i<=n;i++)
            cin >> a[i].y;
        sort(a+1,a+1+n,cmp);
        for(int i=1;i<=n;i++)
        {
            if(k>=a[i].x)
            {
                ans+=a[i].y;
                k=a[i].x;
            }
        }
        cout << ans << endl;
    }
    return 0;
}

D题    QWQ和棋局挑战(NEFU 1606)

#include <bits/stdc++.h>

using namespace std;
int a[15][15];
void excel()                    //打表(与排列组合有关)杨辉三角
{
    int i,j;
    a[1][1]=1;
    for(i=2;i<=13;i++)
    {
        for(j=1;j<=13;j++)
        a[i][j]=a[i-1][j-1]+a[i-1][j];
    }
}
int main()
{
    excel();
    int n,k;
    while(cin >> n >> k)
    {
        int sum;
        sum=a[n+1][k+1];
        long long ans=1;
        int tmp=n+1-k,i;
        for(i=n;i>=tmp;i--)    //排列组合
            ans=ans*i;
        cout << sum*ans << endl;
    }
    return 0;
}

E题    QWQ和彩色石(NEFU  OJ 1604)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;                                //桶排序
    while(cin >> n)
    {
        int x,a[105]={0},maxx=0;
        for(int i=1;i<=n;i++)
        {
            cin >> x;
            a[x]++;
            if(a[x]>maxx)
                maxx=a[x];
        }
        cout << maxx << endl;

    }

   return 0;
}

F题    QWQ和翻译机(NEFU  OJ 1605)

#include<bits/stdc++.h>
using namespace std;
char a[105], b[105];
bool flag = 1;
int main()
{
	while(scanf("%s %s", a, b) != EOF)
	{
		int n = strlen(a);
		for(int i=0; i<n; i++)
			if(a[i] != b[n-i-1])
			{
				flag = 0;
				break;
			}
		if(!flag) cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
	}
	return 0;
}

G题    海贼的奖品赞助(NEFU  OJ 1610)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {

        double x,ans=0,sum=0;
        for(int i=1;i<=n;i++)
        {
            cin >> x;
            if(x>=20.0)
            {
                sum++;
            }
        }
        printf("%.2lf\n",sum/n);

    }

   return 0;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值