Codeforces Beta Round补题

A - Chord
题解:
三个琴键同时按下组成和弦
如果三个键从左到右分别相差4、3个音阶的话算作major
相差4、3个则为minor
剩下的就是strange
给三个琴键问是哪种和弦
用枚举就可以解题了

#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;

int main()
{
     int x[3];
     string num[3];
     for(int i=0;i<3;i++)
     {
         cin>>num[i];
     }
     for(int i=0;i<3;i++)
     {
         if(num[i]=="C")
         {
             x[i]=1;
         }
         if(num[i]=="C#")
         {
             x[i]=2;
         }
         if(num[i]=="D")
         {
             x[i]=3;
         }
         if(num[i]=="D#")
         {
             x[i]=4;
         }
         if(num[i]=="E")
         {
             x[i]=5;
         }
         if(num[i]=="F")
         {
             x[i]=6;
         }
         if(num[i]=="F#")
         {
             x[i]=7;
         }
         if(num[i]=="G")
         {
             x[i]=8;
         }
         if(num[i]=="G#")
         {
             x[i]=9;
         }
         if(num[i]=="A")
         {
             x[i]=10;
         }
         if(num[i]=="B")
         {
             x[i]=11;
         }
         if(num[i]=="H")
         {
             x[i]=12;
         }
     }
         sort(x,x+3);
         if((x[2]-x[1]==4&&x[0]+12-x[2]==3)||(x[0]+12-x[2]==4&&x[1]-x[0]==3)||(x[1]-x[0]==4&&x[2]-x[1]==3))
         {
             cout<<"major"<<endl;
         }
         else if((x[2]-x[1]==3&&x[0]+12-x[2]==4)||(x[0]+12-x[2]==3&&x[1]-x[0]==4)||(x[1]-x[0]==3&&x[2]-x[1]==4))
         {
             cout<<"minor"<<endl;
         }
         else cout<<"strange"<<endl;
}

C - Trains
(这个题从网上借鉴的大佬的代码)
题解:
当t%a=0时,Vasya去见Dasha
当t%b=0时,Vasya去见Masha
当t%a=0&&t%b=0时,Vasya去见见面次数比较少的女朋友
输出见面次数较多的女朋友的名字
通过求最大公约数后加个1是来判断频率低的方向,注意用long long

#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;
//求最大公约数的函数
int gcd(int a,int b)
{
    return b==0?a:gcd(b,a%b);
}
int main()
{
     int a,b;
     while(cin>>a>>b)
     {
        long long c=1ll*a/gcd(a,b)*b;
        int c1=c/a-1;
        int c2=c/b-1;
        if(c1<c2) c1++;
        else if(c1>c2) c2++;
        if(c1>c2)
        {
            cout<<"Dasha";
        }
        else if(c1<c2)
        {
            cout<<"Masha";
        }
        else
        {
            cout<<"Equal";
        }
     }
}

B - Keyboard
(之前自己的方法一直不太对,后来看的网上大佬的思路,又自己打了一遍)
题解:
注意判断字符是否在键盘按键上出现过
找到特殊键后以特殊键为中心
向外扫一圈,判断在不在按键范围内

#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const long long MAXN = 1e5 + 7;
map<int,int> m1,m2;
char ma[50][50];
char mb[500002];
int main()
{
     int n,m,x,y;
     cin>>n>>m>>x;
     for(int i=0; i<n; i++)
     {
        cin>>ma[i];
     }
    bool flag=false,flag2=false;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            if(ma[i][j]=='S')
            {
                flag=true;
                for(int k=0; k<n; k++)
                {
                    for(int l=0; l<m; l++)
                    {
                        if((k-i)*(k-i)+(l-j)*(l-j)<=x*x&&ma[k][l]!='S')
                        {
                            m1[ma[k][l]-'a']=1;
                        }
                    }
                }
            }
            else m2[ma[i][j]-'a']=1;
        }
    }
    int cou=0;
    cin>>y>>mb;
    for(int i=0; i<y; i++)
    {
        if(mb[i]>='A'&&mb[i]<='Z')
        {
            if(!flag)
            {
                flag2=true;
                break;
            }
            if(m1[mb[i]-'A']){}
            else if(m2[mb[i]-'A']) cou++;
            else
            {
                flag2=true;
                break;
            }
        }
        else if(m2[mb[i]-'a']){}
        else
        {
            flag2=true;
            break;
        }
    }
    if(flag2)
    {
        cout<<"-1";
    }
    else
    {
        cout<<cou<<endl;
    }
    return 0;
}

上一篇:云服务器的选型


下一篇:C++ 枚举资源