ICPC Asia Taipei-Hsinchu Regional 2019

签到题
C
题意:任意选互不相同的i,j,k,问是否总是存在(a[i]-a[j])/a[k]为整数。
思路:相同if语句判断下即可。

#include
using namespace std;
int a[60];
int main()
{
    int n,i,j,k,t=1;cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    {
        if(i==j)continue;
        for(k=1;k<=n;k++)
        {
            if(k==i||k==j)continue;
            if((a[i]-a[j])%a[k]!=0)t=0;
        }
    }
    if(t)cout<<"yes"<<endl;
    else cout<<"no"<<endl;
}

D

#include
using namespace std;
//char a[5][40];
string a[5];
int vis[5];
int main()
{
    int i,cnt=0,p=0;
    cin>>a[0]>>a[1]>>a[2];
    if(a[0]=="tapioka"||a[0]=="bubble")cnt++,vis[0]=1;
    if(a[1]=="tapioka"||a[1]=="bubble")cnt++,vis[1]=1;
    if(a[2]=="tapioka"||a[2]=="bubble")cnt++,vis[2]=1;
    //if(!strcmp(a[0],"tapioka")||!strcmp(a[0],"bubble"))cnt++,vis[0]=1;
    //if(!strcmp(a[1],"tapioka")||!strcmp(a[1],"bubble"))cnt++,vis[1]=1;
    //if(!strcmp(a[2],"tapioka")||!strcmp(a[2],"bubble"))cnt++,vis[2]=1;
    if(cnt==3)cout<<"nothing"<<endl;
    else
    {
        for(i=0;i<3;i++)
            if(!vis[i])
        {
            if(!p)cout<<a[i];
            else cout<<" "<<a[i];
            p++;
        }
        cout<<endl;
    }
}

H
思路:每次将最小的两个相加,整体往前移一位,sort一下即可。

#include
#include
using namespace std;
typedef long long ll;
ll a[1010];
int main()
{
    ll t,n,i;cin>>t;
    while(t--)
    {
        ll sum=0;
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+1+n);
        while(n>1)
        {
            sum+=a[1]+a[2],a[2]+=a[1];
            for(i=1;i<=n-1;i++)
                a[i]=a[i+1];
            n--;
            sort(a+1,a+1+n);
        }
        cout<<sum<<endl;

    }
}

你可能感兴趣的:(ICPC Asia Taipei-Hsinchu Regional 2019)