前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >西南民族大学程序竞赛

西南民族大学程序竞赛

作者头像
AngelNH
发布2020-04-16 11:53:52
4910
发布2020-04-16 11:53:52
举报
文章被收录于专栏:AngelNI

No matter what activities you join,whether you want or not, you could gain unexpected something .

A

链接:https://ac.nowcoder.com/acm/contest/3570/A

在SMU算法竞赛团队中,谁的地位最高呢?答案是毋庸置疑的——大家发自内心爱戴的川川教练。川川教练对队内事务都非常上心,队员们的需求都尽量满足,队员们的问题也都尽快解决。但是最近川川总感觉力不从心,什么都要自己做实在是太累了!所以他需要你的帮助,这样他就可以有更多的时间和精力去和领导斗智斗勇,去为团队争取更多经费。最近,川川教练需要在新加入的集训队员中,挑选出一支最强的队伍去参加大学生程序设计竞赛。

​ 川川之前太忙了,并不了解新的集训队员,只能根据HJ提供的队员能力值来筛选队员了。我们的大原则就是强强联手。具体的,新的集训队员一共n个人,HJ会为你提供每个人的编程能力值w。你需要找到编程能力值之和最大的三个人,输出他们的编程能力值之和。特别的,如果找不到一个队伍的编程能力值之和大于m,则输出”Waiver!”。

输入描述:

代码语言:javascript
复制
第一行输入一个整数n,一个整数m,中间用空格隔开。第二行输入n个整数wiw_iwi代表编程能力值。保证所有数据:3≤n≤1003 \leq n \leq 1003≤n≤1000≤m≤3000 \leq m \leq 3000≤m≤300−100≤wi≤100-100 \leq w_i \leq 100−100≤wi≤100

输出描述:

代码语言:javascript
复制
如果任意组合,都无法使得队伍的编程能力值之和大于m,输出一行字符串:"Waiver!"(不含引号)否则输出一个整数,表示在满足队伍编程能力值之和大于m的情况下能组成的最大编程能力值。

输入

代码语言:javascript
复制
4 100
50 50 55 -5

输出

代码语言:javascript
复制
155

说明

代码语言:javascript
复制
我们选择前三个人,编程能力为155满足要求,同时也能获得最大的编程能力和。

输入

代码语言:javascript
复制
4 300
50 50 55 -5

输出

代码语言:javascript
复制
Waiver!

说明

代码语言:javascript
复制
怎么选也满足不了要求,Waiver!

备注:

代码语言:javascript
复制
编程能力可能为负数哦,这也是可以理解的。
代码语言:javascript
复制
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a[1000];
int Max;
int main()
{
    while (cin>>n>>Max)
    {
        for(int i=0;i<n;++i)
        {
            cin>>a[i];
        }
        sort(a,a+n,greater<int>());
        int mm = a[0]+a[1]+a[2];
        if(mm>Max)
            cout<<mm<<endl;
        else
        {
            cout<<"Waiver!"<<endl;
        }
        
    }
    
    return 0;
}

D

链接:https://ac.nowcoder.com/acm/contest/3570/D 来源:牛客网

题目描述

kth特别喜欢自拍,但是她的手机被zyj摔在地上后,前置摄像头坏了,不管拍什么照片都是逆时针旋转了90°,而且照片都还是黑白的.这样的照片怎么能让kth找到对象呢?

现在kth向聪明的你求助,写一个程序帮助kth把图像旋转回来.(她手机太垃圾了,不带图片旋转功能).

因为照片是黑白的.所以对于手机屏幕来说,只有白色和黑色2种情况.

现在给你图片(通过01矩阵表示),对该图片进行旋转.使得图片显示正常.

输入描述:

代码语言:javascript
复制
给你n*n的矩阵且矩阵元素只有0和1,对矩阵实现旋转操作,使得图片恢复正常.2≤n≤10002 \le n  \le 10002≤n≤1000

输出描述:

代码语言:javascript
复制
输出旋转之后的矩阵.矩阵每个元素间隔一个空格.

输入

代码语言:javascript
复制
2
0 1
1 0

输出

代码语言:javascript
复制
1 0
0 1

备注:

代码语言:javascript
复制
考虑一下旋转的方向.
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int n;
int a[1009][1009];
int main()
{
    while(cin>>n)
    {
        for(int i =1;i<=n;++i)
        {
            for(int j =1;j<=n;++j)
            {
                cin>>a[i][j];
            }
        }
        for(int j =1;j<=n;++j)
        {
            for(int i=n;i>=1;--i)
            {
                if(i==n)
                    cout<<a[i][j];
                else
                {
                    cout<<" "<<a[i][j];
                }
            }
            cout<<endl;
        }
    }
    return 0;
}

E

链接:https://ac.nowcoder.com/acm/contest/3570/E 来源:牛客网

题目描述

HJGG现在有一个大小为 n(米)*m(米)的矩形花园。

由于HJGG有强迫症,所以这片花园被划分nm个为11(平方米)的方格。

img
img

现在,HJ想在这片花园上种好多种花,并且他想要相邻的格子上种不同的花~(解释:相邻指的是上下左右四个方向相邻) 添加解释。相邻的格子上种不同的花指的是:一个位置和他上下左右四个方向位置的颜色不同,对于上下左右这四个位置,是可以相同的。

由于HJ被集训队小可爱蕾酱缠着不能脱身,所以想要你来帮帮他~

如果可以满足HJ哥哥的要求,就告诉他“Beautiful flowers!”,如果不可以就告诉他“Oh! My poor HJ!”(输出均不含双引号)

谁让大家都不能拒绝蕾蕾呢!

输入描述:

代码语言:javascript
复制
输入仅一行三个整数n,m,k(1≤n,m,k≤105)n, m, k(1 \leq n, m, k \leq 10^5)n,m,k(1≤n,m,k≤105),分别表示HJGG花园的长和宽,HJGG拥有的花的种类数

输出描述:

代码语言:javascript
复制
输出一行你要告诉HJGG的话~

输入

代码语言:javascript
复制
1 3 5

输出

代码语言:javascript
复制
Beautiful flowers!

输入

代码语言:javascript
复制
3 4 1

输出

代码语言:javascript
复制
Oh! My poor HJ!
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int m,n,k;
int main()
{
    while(cin>>n>>m>>k)
    {
        int flag = 0;
        if(n==1&&m>1)
        {
            if(k>=2)
                flag = 1;
        }
        else if(m==1&&n>1)
        {
            if(k>=2)
                flag = 1;
        }
        else if(m==1&&n==1)
        {
            if(k>=1)
                flag = 1;
        }
        else
        {
            if(k>=3)
                flag = 1;
        }
        if(flag)
            cout<<"Beautiful flowers!"<<endl;
        else
        {
            cout<<"Oh! My poor HJ!"<<endl;
        }
    }

    return 0;
}

F

链接:https://ac.nowcoder.com/acm/contest/3570/F 来源:牛客网

题目描述

​ SMU的英文全称是Southwest Minzu University,中文名叫做西南民族大学。这所大学因为男女比例约为2比8,因此又被大家戏称为稀男民族大学,又因为民族同学们,通常能歌善舞,且校内的舞蹈、唱歌活动非常之多,所以被戏称为稀男歌舞大学。

​ 在计算机学院中,男同学的比例远高于其余学院,所以计算机学院的脱单率遥遥领先。但在计算机学院的算法竞赛团队中,却出现了诡异的一个现象:某一届的集训队员,竟然全都是SingleDog。他们非常讨厌被人私下嘲笑为SingleDog。最初,如果听到或者看到SingleDog这个字眼,他们就会失去理智,慢慢的,他们只要看到情侣出现,就抑制不住心中的愤怒。现在情况更加严重了!他们只要看到成双成对的东西,都会开始无能狂怒。现在有一份集训队的通知文件,必须要发到群里,为了让他们心平气和的看完这份文件,只能精简一些文字了。具体的精简策略:集训队的通知文件是一堆小写字母,为了使这些字母不要成双成对的出现,我们只保留每种字母出现的第一个就好。

输入描述:

代码语言:javascript
复制
第一行输入一个n,代表集训队的通知文件的长度。第二行输入一个字符串s,代表集训队的通知文件。保证对于所有数据:1 <= n <= 1000字符串s中,只包含a ~ z 的小写字母。

输出描述:

代码语言:javascript
复制
第一行输出处理后的通知文件长度。第二行输出处理后的集训队通知文件。

输入

代码语言:javascript
复制
18 
woyexiangtanlianai

输出

代码语言:javascript
复制
11
woyexiangtl
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int aa[27];
int n;
string a;
string b;
int main()
{
    while(cin>>n)
    {
        memset(aa,0,sizeof(aa));
        cin>>a;
        int mm = 0;
        for(int i =0;i<a.length();++i)
        {
            aa[a[i]-96]++;
           
            if(aa[a[i]-96]==1)
            {
                mm++;
                b+=a[i];
            }
        }
        cout<<mm<<endl;
        for(int i =0;i<b.length();++i)
        {
            cout<<b[i];
        }
        cout<<endl;
       a.clear();
       b.clear();
    }
    return 0;
}

G

链接:https://ac.nowcoder.com/acm/contest/3570/G 来源:牛客网

题目描述

在简谱中,音符是记录音的高低和长短的符号。而用来表示这些音的高低的符号,是用七个阿拉伯数字作为标记,它们的写法是:1、2、3、4、5、6、7,读法为:do、re、mi、fa、sol、la、si。现在给你一段由N个音符构成的简谱,以及唱出来的读音(长度小于10的字符串)的记录,请你判断总共唱错了几个读音。

输入描述:

代码语言:javascript
复制
第一行输入一个整数N(0<N≤1040< N\leq10^{4}0<N≤104);第二行包含N个数字构成的简谱,数字间用空格隔开;第三行包含N个读音,读音间用空格隔开.

输出描述:

代码语言:javascript
复制
总共唱错的读音个数.

输入

代码语言:javascript
复制
8
1 2 3 4 5 6 7 1
do re mi fa sol la si der

输出

代码语言:javascript
复制
1

说明

代码语言:javascript
复制
仅最后一个读音唱错.
代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
string a[10006];
int n;
map<int , string> mp;
int aa[10005];
int main()
{
    mp[1] = "do";
    mp[2] = "re";
    mp[3] = "mi";
    mp[4] = "fa";
    mp[5] = "sol";
    mp[6] = "la";
    mp[7] = "si";
    while(cin>>n)
    {
        for(int i =1;i<=n;++i)
            cin>>aa[i];
        for(int i =1;i<=n;++i)
        {
            cin>>a[i];
            //cout<<a[i]<<" ";
        }
        int flag= 0;
        for(int i =1;i<=n;++i)
        {
            if(mp[aa[i]] != a[i])
                flag++;
        }
        cout<<flag<<endl;
        for(int i=1;i<=n;++i)
            a[i].clear();
    }
    return 0;
}

J

链接:https://ac.nowcoder.com/acm/contest/3570/J 来源:牛客网

题目描述

大家都知道斐波那契数列吧!它的定义是这样的:斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13……在数学上,斐波那契数列以如下被以递推的方法定义:F(1) = 1,F(2) = 1, F(n) = F(n-1) + F(n-2) (n≥3,n∈N∗n \geq 3,n \in N^*n≥3,n∈N∗)。

这题的题意也很简单,给你一个正整数n(1≤n≤107)n ( 1 \leq n \leq10^7)n(1≤n≤107),让你输出斐波那契数列的第n项~由于答案较大,所以输出答案对109+710^9+7109+7取模后的数。

输入描述:

代码语言:javascript
复制
多组读入,保证不超过10组,每组一个正整数n(1≤n≤107)n ( 1 \leq n \leq10^7)n(1≤n≤107)。

输出描述:

代码语言:javascript
复制
斐波那契数列的第n项,答案对109+710^9+7109+7取模。

输入

代码语言:javascript
复制
1

输出

代码语言:javascript
复制
1

备注:

代码语言:javascript
复制
请留意本题使用空间限制。
代码语言:javascript
复制
//#include<bits/stdc++.h>
#include <iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll f=2;
struct node
{
	ll materix[5][5];
};

node mul(node a,node b)  //矩阵乘法 
{
	node res;
	memset(res.materix,0,sizeof res.materix);
	for(int i=1;i<=f;i++)
		for(int j=1;j<=f;j++)
			for(int k=1;k<=f;k++)
				res.materix[i][j]=(res.materix[i][j]+a.materix[i][k]*b.materix[k][j])%mod;
	return res;	
}

node ksm(node a,ll b)
{
	node ans;
	memset(ans.materix,0,sizeof ans.materix);
	for(int i=1;i<=f;i++)
		ans.materix[i][i]=1;
	while(b)
	{
		if(b&1)
			ans=mul(ans,a);
		b>>=1;
		a=mul(a,a);
	}
	return ans;
}

int main()
{
	ll N;
	while(cin>>N&&N!=-1)
	{
		if(N==1||N==2)
			printf("1\n");
		else if(N==0)
			printf("0\n");
		else
		{
			node a,b;
			a.materix[1][1]=1; a.materix[1][2]=1;
			a.materix[2][1]=1; a.materix[2][2]=0;   //a是那个幂矩阵,
			b.materix[1][1]=1; b.materix[1][2]=0;
			b.materix[2][1]=1; b.materix[2][2]=0;   //b是最初始的矩阵
	        //假如a*a*a*b就是a^3*b,所以先求用快速幂求a的三次方,再用结果和b相乘
	        //注意乘的顺序,矩阵相乘a*b!=b*a,顺序不能搞错
	        //这里个人有个小诀窍,因为.f(n)=a*f(n-1)+b*f(n-2)+c,所以前边的那个应该是构造矩阵
			node ans = ksm(a ,N-2);  //从3开始,所以-2
			ans = mul(ans ,b) ;
			printf("%d\n",ans.materix[1][1] ) ;
		}
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-30|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • A
    • 输入描述:
      • 输出描述:
        • 输入
          • 输出
            • 说明
              • 输入
                • 输出
                  • 说明
                    • 备注:
                    • D
                      • 题目描述
                        • 输入描述:
                          • 输出描述:
                            • 输入
                              • 输出
                                • 备注:
                                • E
                                  • 题目描述
                                    • 输入描述:
                                      • 输出描述:
                                        • 输入
                                          • 输出
                                            • 输入
                                              • 输出
                                              • F
                                                • 题目描述
                                                  • 输入描述:
                                                    • 输出描述:
                                                      • 输入
                                                        • 输出
                                                        • G
                                                          • 题目描述
                                                            • 输入描述:
                                                              • 输出描述:
                                                                • 输入
                                                                  • 输出
                                                                    • 说明
                                                                    • J
                                                                      • 题目描述
                                                                        • 输入描述:
                                                                          • 输出描述:
                                                                            • 输入
                                                                              • 输出
                                                                                • 备注:
                                                                                领券
                                                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档