1. 程式人生 > >組隊賽(12周)

組隊賽(12周)

比賽地址  http://acm.sdibt.edu.cn/vjudge/contest/view.action?cid=2117#overview

H

Sample Input
4
3 2
123456 6
999999 8
765432 7
Sample Output
2 5
6 5
8 5
7 5


題意:不懂。
思路:輸出第二個數,和5
 

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstring>
#define MAX 1000000
using namespace std;
typedef long long ll;
int main()
{
    ll n;
    scanf("%lld",&n);
    while(n--)
    {
        ll a,b;
        scanf("%lld%lld",&a,&b);
        printf("%lld 5\n",b);
    }
    return 0;
}


E

Sample Input
1 2 -1 4
2 4 8 -1
7 8 -1 21
5 -1 11 14
-1 2 4 6
-1 -1 -1 -1
Sample Output
3
16
-1
8
-1


題意:abcd4個數,可能是等差或等比序列,必須滿足都大於等於一,小於等於1,000,000才可以,輸出-1的位置的數,如果沒有輸出-1.
思路:一個個判斷-1位置位置是哪,只可能是等差或等比序列。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cmath>
const int maxn = 26;
using namespace std;
typedef long long ll;
int main()
{
    ll a,b,c,d,m,n,flag=0;
    while(cin>>a>>b>>c>>d)
    {
        if(a==-1&&b==-1&&c==-1&&d==-1)
            break;
        if(a==-1)
        {
            if(d-c==c-b)
            {
                m=d-c;
                if(b-m<=0)
                    cout<<"-1"<<endl;
                else
                    cout<<b-m<<endl;
            }
            else
            if(d/c==c/b&&d%c==0&&c%b==0)
            {
                m=d/c;
                if(b/m>0&&b%m==0)
                    cout<<b/m<<endl;
                else
                    cout<<"-1"<<endl;
            }
            else
                cout<<"-1"<<endl;
        }
        if(b==-1)
        {
            m=d-c;
            n=d/c;
            if(2*m==c-a)
            {
                cout<<c-m<<endl;
            }
            else
            if(n*n==c/a&&c%a==0&&d%c==0)
            {
                m=c/n;
                if(c%n==0)
                    cout<<m<<endl;
                else
                    cout<<"-1"<<endl;
            }
            else
                cout<<"-1"<<endl;
        }
        if(c==-1)
        {
            m=b-a;
            n=b/a;
            if(2*m==d-b)
                cout<<d-m<<endl;
            else
            if(b%a==0&&b*n*n==d)
            {
                m=d/n;
                if(d%n==0)
                    cout<<m<<endl;
                else
                    cout<<"-1"<<endl;
            }
            else
                cout<<"-1"<<endl;
        }
        if(d==-1)
        {
            if(b-a==c-b)
            {
                m=b-a;
                if(m<=1000000)
                  cout<<m+c<<endl;
                else
                    cout<<"-1"<<endl;
            }
            else
            {
                if(b%a==0&&c%b==0&&b/a==c/b)
                {
                    n=b/a;
                    m=c*n;
                    if(m<=1000000)
                        cout<<m<<endl;
                    else
                        cout<<"-1"<<endl;
                }
                else
                    cout<<"-1"<<endl;
            }
        }
    }
    return 0;
}


F

INPUT
A .-
B -...
C -.-.
D -..
E .
F ..-.
G --.
H ....
I ..
J .---
K -.-
L .-..
M --
N -.
O ---
P .--.
Q --.-
R .-.
S ...
T -
U ..-
V ...-
W .--
X -..-
Y -.--
Z --..
7
PROGRAMMING
REGIONAL
PARIS
CONTEST
CENTRAL
SOUTH
ACM
6
.--.-.--
...---..--....
-.-..-.-.-..-.-..
.-..--...----..-.-..
.--..-.-----..-..-----..-.--.
-.-.----.-....-
4
.--.-.--
.-...---..-
.-...---..-.
.--.-.--
1
.--..-.-......
0
Sample Output
ACM SOUTH CENTRAL REGIONAL PROGRAMMING CONTEST
.-...---..- not in dictionary.
PARIS


題意:比對輸出相對應的字串,如果都存在輸出,只要有一個不存在就輸出第一個不存在的。
思路:兩個map對應輸出。
 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include <map>
#define eps 1e-8
#define memset(a,v) memset(a,v,sizeof(a))
using namespace std;
typedef long long ll;
map<ll,string> p;
map<string,string> q;
int main()
{
    ll i,n,j;
    char c;
    string s,ss,y,bb,cc;
    for(i=0; i<26; i++)
    {
        cin>>c>>s;
        p[c-'A']=s;
    }
    cin>>n;
    for(i=0; i<n; i++)
    {
        cin>>ss;
        ll len=ss.size();
        map<ll,string>::iterator it;
        y.clear();
        for(j=0; j<len; j++)
        {
            for(it=p.begin(); it!=p.end(); it++)
            {
                if(it->first==ss[j]-'A')
                    y+=it->second;
            }
        }
        q[ss]=y;
    }
//    map<string,string>::iterator iter;
//    for(iter=q.begin(); iter!=q.end(); iter++)
//    {
//        cout<<iter->first<<" "<<iter->second<<endl;
//
//    }
    while(cin>>n)
     {
         if(n==0)
             break;
         bb.clear();
         cc.clear();
         map<string,string>::iterator iter;
         ll flag=0;
         ll flag1=0;
         for(i=0;i<n;i++)
         {
             s.clear();
             cin>>s;
             flag=0;

             for(iter=q.begin();iter!=q.end();iter++)
             {
                 //cout<<iter->first<<" "<<iter->second<<endl;
                 if(iter->second==s)
                 {
                     //cout<<iter->first<<endl;
                     bb+=iter->first;
                     if(i!=n-1)
                       bb+=' ';
                    flag=2;
                    break;
                 }
                /* else
                 {
                     cout<<s<<endl;
                     cout<<iter->first<<" "<<iter->second<<endl;
//                     flag=1;
//                     cc+=iter->second;
                     break;
                 }*/

             }
             //cout<<flag<<endl;
             if(flag!=2&&flag1==0)
             {
                 //cout<<s<<endl;
                 cc=s;
                 flag1=1;
             }
         }
            if(cc.size()!=0)
               cout<<cc<<" not in dictionary."<<endl;
           else
                cout<<bb<<endl;
     }
}