zoukankan      html  css  js  c++  java
  • Codeforces Beta Round #73(Div2)

    A - Chord

     题意:给定3个音符判断是大三重奏还是小三重奏。

    题解:因为给定的数很少,所以其实只要把他们都枚举出来排列下就好。

    代码:

    #include <cstdio>
    #include <algorithm>
    #include <iostream>
    #include <cstring>
    #include <string>
    #include <map>
    using namespace std;
    const int maxn=1000+5;
    map<string,int>m;
    int judge(string a,string b,string c)
    {
        int x=(m[b]-m[a]+12)%12;
        int y=(m[c]-m[b]+12)%12;
        int z=(m[c]-m[a]+12)%12;
        if(x==4&&y==3&&z==7) return 1;
        if(x==3&&y==4) return 0;
        return -1;
    }
    int main()
    {
        m["C"]=1;
        m["C#"]=2;
        m["D"]=3;
        m["D#"]=4;
        m["E"]=5;
        m["F"]=6;
        m["F#"]=7;
        m["G"]=8;
        m["G#"]=9;
        m["A"]=10;
        m["B"]=11;
        m["H"]=12;
        string a,b,c;
        cin>>a>>b>>c;
        if(judge(a,b,c)==1||judge(a,c,b)==1||judge(b,a,c)==1||judge(b,c,a)==1||judge(c,a,b)==1||judge(c,b,a)==1)
             cout<<"major";
        else if(judge(a,b,c)==0||judge(a,c,b)==0||judge(b,a,c)==0||judge(b,c,a)==0||judge(c,a,b)==0||judge(c,b,a)==0)
             cout<<"minor";
        else cout<<"strange";
        return 0;
    }

    B - Keyboard

     题意:就是给出的键盘中都是小写字母,然后给出一串字符串计算用到另一只手的最少次大写的字母,如果在shift键以x为边长的正方形周围就可以用一只手搞定,然后如果是键盘中没有的字母或者打不出大写的字母就输出-1。

    代码:

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <cstdlib>
    #include <map>
    #include <list>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    map<int,int> m1,m2;
    char a[35][35];
    char b[500010];
    int main()
    {
        int n,m,x;
        scanf("%d%d%d",&n,&m,&x);
        for(int i=0;i<n;i++)
        {
           scanf("%s",a[i]);
        }
        bool flag1=false;
        bool flag2=false;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(a[i][j]=='S')
                {
                    flag1=true;
                    for(int c=0;c<n;c++)
                    {
                        for(int d=0;d<m;d++)
                        {
                            if((c-i)*(c-i)+(d-j)*(d-j)<=x*x&&a[c][d]!='S')
                                m1[a[c][d]-'a']=1;
                        }
                    }
     
                }
                else
                    m2[a[i][j]-'a']=1;
            }
        }
        int cnt=0;
        int y;
        scanf("%d%s",&y,b);
        for(int i=0;i<y;i++)
        {
            if(b[i]>='A'&&b[i]<='Z')
            {
                if(!flag1)
                {
                    flag2=true;
                    break;
                }
               if(m1[b[i]-'A']!=0){}
                else  if(m2[b[i]-'A']!=0)
                    cnt++;
                else
                {
                    flag2=true;
                    break;
                }
            }
            else if(m2[b[i]-'a'])
            {}
            else
            {
                flag2=true;
                break;
            }
        }
        if(flag2)
            puts("-1");
        else
            printf("%d
    ",cnt);
        return 0;
    }
     
  • 相关阅读:
    Android(java)学习笔记62:android.intent.action.MAIN 与 android.intent.category.LAUNCHER 理解
    Android(java)学习笔记61:Android中的 Application类用法
    Android(java)学习笔记60:继承中父类 没有无参构造
    Android(java)学习笔记59:类继承的 注意事项
    POJ 3740 Easy Finding
    POJ 2676 Sudoku
    FZU 2184 逆序数还原
    ZOJ 1926 Guessing Game
    POJ 2656 Unhappy Jinjin
    HDU 2604 Queuing
  • 原文地址:https://www.cnblogs.com/liyongqi/p/14094560.html
Copyright © 2011-2022 走看看