Advertisement

【22蓝桥杯训练1】

阅读量:

题目一:QWQ和QAQ

Description:

QWQ的朋友QAQ开了一个A工厂,但QAQ不是一个很精明的老板,A工厂只生产三种产品,需要三种原材料,第一种产品分别消耗第一种原材料a1、第二种原材料b1、第三种原材料c1,第二种产品分别是a2、b2、c2,第三种产品分别是a3、b3、c3,但原材料总量是有限制的,分别是a、b、c,第一种产品可以盈利d1元,第二种产品可以盈利d2元,第三种原材料可以盈利d3元,由于每个产品都不可以分解,所以所有产品的生产量一定是整数。QAQ不知道怎么合理安排生产让他的盈利最大,于是他求助QWQ,QWQ更不知道了,但你一定知道

Input:

先输入一个数字t(t<20),代表数组的组数 每组数据包括五行

第一行三个数字a1、b1、c1

第二行三个数字a2、b2、c2

第三行三个数字a3、b3、c3

第四行三个数字a、b、c

第五行三个数字d1、d2、d3

保证所有输入都是非负整数,并且不大于200

Output:

输出最大的总盈利

Sample input:

1

1 1 1

1 1 1

1 1 1

3 3 3

1 2 3

Sample output:

9

复制代码
 #include <iostream>

    
  
    
 using namespace std;
    
  
    
 int main()
    
 {
    
     int t,a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3,a,b,c,maxn,sum;
    
     while(cin>>t)
    
     {
    
     while(t--)
    
     {
    
         cin>>a1>>b1>>c1>>a2>>b2>>c2>>a3>>b3>>c3>>a>>b>>c>>d1>>d2>>d3;
    
         maxn=0;
    
         for(int i=0;i<=200;i++)
    
             {for(int j=0;j<=200;j++)
    
                 {for(int k=0;k<=200;k++)
    
             {
    
                 if(a1*i+a2*j+a3*k<=a&&b1*i+b2*j+b3*k<=b&&c1*i+c2*j+c3*k<=c)
    
                 {
    
                     sum=i*d1+j*d2+k*d3;
    
                     maxn=max(maxn,sum);
    
                 }
    
             }
    
             }
    
             }
    
         cout<<maxn<<endl;
    
     }
    
     }
    
     return 0;
    
 }
    
    
    
    

题目二:QWQ和神奇的传送器

Description:

《无敌破坏王2》上映啦!QWQ作为Disney的忠实粉丝当然去贡献票房了。电影里的无敌破坏王和云妮洛普来到了互联网的世界,在这里,每个上网的人都是一个个虚拟的相同的小人物,当他们点击到某个网站时,虚拟的人物会乘坐一个神奇的传送器前往目的网站。 QWQ看到这个细节认为一个神奇的传送器只搭载一个人传输效率太低了,所以他觉得如果每个传送器能够搭载无数个人就好了,那么如果此时只有m个神奇的传送器,但有n个人等着被传送,不允许传送器有空载并且每个人看作是相同的,有多少种安排方式呢?

Input:

先输入一个t,代表数据的组数 每组数据只有一行有两个数字,之间用一个空格作为间隔,分表代表m、n 保证1<=m<=n<=12

Output:

对于每组数据,输出一个数字,代表安排方式的种数

Sample input:

1

1 2

Sample output:

1

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
  
    
 int main()
    
 {
    
 	int t,m,n;
    
 	long long res;
    
 	cin>>t;
    
 	for(int i=0;i<t;i++)
    
 	{
    
 		res=1;
    
 		cin>>m>>n;
    
 		for(int j=n-1,k=0;k<m-1;k++,j--)
    
 		{
    
 			res*=j;
    
 		}
    
 		for(int j=m-1;j>1;j--)
    
 		{
    
 			res/=j;
    
 		}
    
 		cout<<res<<endl;
    
 	}
    
 	return 0;
    
 }
    
    
    
    

题目三:QWQ和神秘商人

Description:

众所周知,QWQ热衷于星际探险和旅行,一天他来到了K星,在这里他遇到了一位神秘的商人,这位商人手中有n个宝物,每个宝物都有一定的价格和珍藏值。如果QWQ想从商人手中购买宝物,就只能花费宇宙中唯一的通货——永恒宝石,但是在K星上关于购买宝物有奇怪的规定: 购买者手中永恒宝石的数量必须大于或者等于想要购买宝物的价格; 每当完成一个交易,购买者手中永恒宝石的数量就会变成所购买的宝物的价格,不论购买者原来有多少个永恒宝石; 现在,QWQ手中有k个永恒宝石,如果他想换取最大的珍藏值,这个值是多少呢?

Input:

每组输入有三行 第一行 宝物数量n,初始宝石数量k

第二行 每一个宝物的价格

第三行 每个宝物的珍藏值

1 <= n <= 100000 其余输入均不大于100

Output:

输出最大的珍藏值

Sample input:

5 6

2 4 6 8 10

1 50 10 2 50

Sample output:

61

复制代码
 #include <iostream>

    
 using namespace std;
    
  
    
 int main()
    
 {
    
     int n,k,sum;
    
     while(cin>>n>>k)
    
     {
    
     int a[2][100000]={0};
    
     sum=0;
    
     for(int i=0;i<2;i++)
    
     {
    
         for(int j=0;j<n;j++)
    
            {
    
                cin>>a[i][j];
    
            }
    
     }
    
     for(int j=0;j<n;j++)
    
     {
    
         if(a[0][j]<=k)
    
             sum+=a[1][j];
    
     }
    
     cout<<sum<<endl;
    
     }
    
     return 0;
    
 }
    
    
    
    

题目四:QWQ和棋局挑战

Description:

众所周知QWQ的棋艺已经到了独孤求败的地步,某日一位来自泰坦星的勇士前来向QWQ发起挑战,不过挑战的项目却非常奇怪:这位勇士要求QWQ在一个n x n大小的棋盘上放置k个棋子,并要求放置后的棋盘上每一行和每一列最多有一个棋子,显然这个问题是如此的简单,所以这位勇士要求QWQ告诉他这样的棋局共有多少种? 你能帮助QWQ解决这个问题么?

Input:

每组输入占据一行

一行有两个数字 分别表示棋盘的大小n和要求放置的棋子k

0<n<9 , 0<k<=n

Output:

每组输入占据一行

输出这样的棋局的种类数目

Sample input:

样例一:

2 1

样例二:

2 2

Sample output:

样例一:

4

样例二:

2

复制代码
 #include <iostream>

    
 #include <cmath>
    
 using namespace std;
    
  
    
 int main()
    
 {
    
     int n,k;
    
     while(cin>>n>>k)
    
     {
    
     int z=1;
    
     for(int i=n-k+1;i<=n;i++)
    
         z*=i;
    
     z=pow(z,2);
    
     for(int i=1;i<=k;i++)
    
         z/=i;
    
     cout<<z<<endl;
    
     }
    
     return 0;
    
 }
    
    
    
    

题目五:QWQ和翻译机

Description:

QWQ拥有一台破烂的翻译机,作为他在星际旅行时候的必备物品,某日,他来的一颗名为倒置星的星球,这个星球上的所有东西都是倒置的,就连说话也要倒过来说,比如,translate在这颗星球上就是etalsnart,QWQ想依靠这台破烂的翻译机完成语言交流,然而,这台翻译机每次翻译的结果并不一定是正确的,你能告诉QWQ每次翻译的结果是否正确么?如果争取就输出’YES‘,否则输出’NO‘。

Input:

每组输入占2行

第一行位QWQ想说的话

第二行位翻译机翻译的结果

每句话的长度不超过100个字符

Output:

每组输出占一行 YES或者NO

Sample input:

样例一:

code

edoc

样例二:

abb

aba

Sample output:

样例一:

YES

样例二:

NO

复制代码
 #include <iostream>

    
 #include <string>
    
 #include <algorithm>
    
 using namespace std;
    
  
    
 int main()
    
 {
    
     string s1,s2;
    
     int i,j;
    
     while(cin>>s1>>s2)
    
     {
    
         for(i=0,j=s1.size()-1;i<j;i++,j--)
    
         {
    
             swap(s1[i],s1[j]);
    
         }
    
     if(s2==s1)
    
         cout<<"YES"<<endl;
    
     else cout<<"NO"<<endl;
    
     }
    
     return 0;
    
 }
    
    
    
    

题目六:QWQ和彩色石

Description:

QWQ来到了一个神奇的地方,这个地方有很多颜色不同的彩色石,每个颜色都可以用一个数字来代替,QWQ收集了一堆石子,他想知道这堆石子中颜色相同的石子个数的最大值

Input:

第1行输入一个数字n,代表这堆石子的个数 第二行输入n个数,代表n个石子的颜色 保证输入的所有数都不超过100

Output:

输出一个数字,代表颜色相同的石子个数的最大值

Sample input:

10

1 3 5 7 9 1 2 3 5 5

Sample output:

3

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
  
    
 int main()
    
 {
    
 	int n,num[101]={0},t,maxn;
    
 	while(cin>>n)
    
 	{
    
 		memset(num,0,sizeof(num));
    
 		maxn=0;
    
 		for(int i=0;i<n;i++)
    
 		{
    
 			cin>>t;
    
 			num[t]++;
    
 			if(num[t]>maxn)  maxn=num[t];
    
 		}
    
 		cout<<maxn<<endl;
    
 	}
    
 	return 0;
    
 }
    
    
    
    

题目七:海贼的奖品赞助

Description:

本次ACM校赛得到了海贼科技的小部分奖品的赞助(30个水杯),尽管赞助的奖品不多,但也是要感谢赞助商的!由于水杯是加急定制的,所以生产水杯的的过程和以往不同,从而导致了水杯的高度竟然是不一样的;规定水杯高度低于20.00CM 为不合格的产品,你能计算一下这批水杯的合格率吗?

Input:

本题单组数据! 输入数据第一行为n,表示水杯的数量;接下来是这n个水杯的高度(实数);

Output:

输出这批水杯的合格率(保留2位小数);合格率=合格数量/总数

Sample input:

5

19.23 18.00 21.00 22.00 20.00

Sample output:

0.60

复制代码
 #include <bits/stdc++.h>

    
 #include <iomanip>
    
 using namespace std;
    
  
    
 int main()
    
 {
    
 	int n,sum=0;
    
 	double a[30]={0},soul;
    
 	cin>>n;
    
 	for(int i=0;i<n;i++)
    
       {
    
       cin>>a[i];
    
     if(a[i]>=20.00) sum++;
    
       }
    
       soul=sum/double(n);
    
       cout<<fixed<<setprecision(2)<<soul;
    
       return 0;
    
 }
    
    
    
    

题目八:天下无双

Description:

太极生两仪,两仪生四象,四象生八卦,八卦生万物。天地初开,万物皆欲成双成对;芸芸丛生,谁愿孤苦伶仃。知音难觅,阳春白雪绕梁何久,千古一绝,神雕侠女驰骋九洲。 天下岂无双?千古绝唱为知音。情寄雨丝丝,述相思之意;梦随风万里,寻同道之人。共聚一堂,为梦想而努力;携手共进,为程序而疯狂! 夜夜编程不漫长,只因与君共拼搏…… 给定n个数,其数值范围在1到n-1中,已知其中必有两个数是相同的,要求你找出并输出。(2<=n<=1,000,000)

Input:

多组数据输入.

每组输入第一行一个数n。第二行n个数,其数值范围为1..n-1。

Output:

每组输出一行一个数,即出现过两次的数。

Sample input:

5

2 3 1 4 2

8

7 6 1 2 3 5 4 7

Sample output:

2

7

复制代码
 #include <iostream>

    
 #define M 1000000
    
 using namespace std;
    
 int main()
    
 {
    
     int t,num;
    
     while(cin>>t)
    
     {
    
     int a[M]={0};
    
     for(int i=0;i<t;i++)
    
     {
    
         cin>>num;
    
         a[num]++;
    
     }
    
     for(int i=0;i<t;i++)
    
     {
    
         if(a[i]>1)
    
         cout<<i<<endl;
    
     }
    
     }
    
     return 0;
    
 }
    
    
    
    

全部评论 (0)

还没有任何评论哟~