zoukankan      html  css  js  c++  java
  • 2020 12 03 个人赛

    A chord

    先用一个字符串数组存储音符表,注意   每次输入都需要排序,在通过枚举得到音符的数字编号和后续处理。

    代码如下:

    #include <cstdio>

    #include <iostream>

    #include <cmath>

    using namespace std;

    int main()

    {

        string y[13] = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "B", "H"};

        string c1, c2, c3;

        int place[4];

        int flag;

        cin >> c1 >> c2 >> c3;

        for (int i = 0; i < 12; i++)

        {

            if (c1 == y[i])

                place[1] = i;

            if (c2 == y[i])

                place[2] = i;

            if (c3 == y[i])

                place[3] = i;

        }

        for (int k = 1; k <= 3; k++)

        {

            for (int i = 1; i <= 3; i++)

            {

                for (int j = 1; j < i; j++)

                {

                    if (place[j] > place[i])

                        swap(place[i], place[j]);

                }

            }

            if ((abs(place[1] - place[2]) == 4 && abs(place[2] - place[3]) == 3))

                flag = 1;

            else if ((abs(place[1] - place[2]) == 3 && abs(place[2] - place[3]) == 4))

                flag = 2;

            place[1] += 12;

        }

        if (flag == 1)

            cout << "major";

        else if (flag == 2)

            cout << "minor";

        else

            cout << "strange";

    }

    B:keybrd

    对于输入的小写字母现在键盘内找到,每找到一次再寻找一次键盘寻找shift,计算距离,从而找出最优方案。

    代码如下:

    #include<iostream>

    #include<cstdio>

    #include<algorithm>

    #include<cmath>

    #include<cstring>

    using namespace std;

    int n,m,len,vis[27],ans;

    double dis[27],x;

    char map[35][35];

    double diss(int x,int y,int xx,int yy){return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));}

    string a;

    int main()

    {

        ios::sync_with_stdio(false);

        cin>>n>>m>>x;

        for(int i=1;i<=n;i++)

        {

            for(int j=1;j<=m;j++)

            {

                cin>>map[i][j];

                if(map[i][j]>='a')vis[map[i][j]-'a'+1]=1;

            }

        }

        for(char g='a';g<='z';g++)

        {

            dis[g-'a'+1]=55;

            for(int i=1;i<=n;i++)

                for(int j=1;j<=m;j++)

                    if(map[i][j]==g)

                        for(int k=1;k<=n;k++)

                            for(int h=1;h<=m;h++)

                                if(map[k][h]=='S')dis[g-'a'+1]=min(dis[g-'a'+1],diss(i,j,k,h));

        }

        cin>>len>>a;

        for(int i=0;i<len;i++)

        {

            if((a[i]<='Z'&&dis[a[i]-'A'+1]==55)||(a[i]>='a'&&!vis[a[i]-'a'+1]))

            {

                cout<<-1;

                return 0;

            }

            if(a[i]<='Z'&&dis[a[i]-'A'+1]>x)ans++;

        }

        cout<<ans;

        return 0;

    }

    C trains

    直接模拟,注意数据要开long long

    代码如下:

    #include <bits/stdc++.h>

    using namespace std;

    #define ll long long

    int main()

    {

        ll a,b,c,n,m;

        scanf("%lld%lld",&a,&b);

        c=__gcd(a,b);

        ll res=a*b/c;

        res--;

        n=res/a;

        m=res/b;

        if(n>m)m++;

        else if(n<m)n++;

        else

        {

            printf("Equal ");

            return 0;

        }

        if(n>m)puts("Dasha");

        else if(n==m)printf("Equal ");

        else printf("Masha ");

        return 0;

    }

  • 相关阅读:
    override与new的区别
    预处理指令关键字
    索引器
    可选参数与命名参数
    sealed关键字
    获取变量默认值
    is和as
    throw和throw ex的区别
    位操作
    unsafe关键字
  • 原文地址:https://www.cnblogs.com/chengxvzhishen/p/14092919.html
Copyright © 2011-2022 走看看