A题(水题)判断三个数有多少大于10的;

B题是给你一个字符串判断是否是回文字符串,有一个限定条件是会给你几对字母,这几对字母看做相同的字母,这题用并查集的思想,定义一个数组a如果两个字母的a[i]相等那么他们就相同;

代码:

#include<bits/stdc++.h>
using namespace std;
int a[1000];
int find(int x)
{
    if(x==a[x])return x;
    else return find(a[x]);
}
void uni(int x,int y)
{
    x=find(x);
    y=find(y);
    if(x!=y)a[x]=a[y];
}
int main()
{
    int t;
    cin>>t;
    for(int k=1;k<=t;k++)
    {
        printf("Test case #%d:\n",k);
        int n,m;
        for(int i='a';i<='z';i++)a[i]=i;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            char b,c;
            cin>>b>>c;
            uni(b,c);
        }
        cin>>m;
        while(m--)
        {
            string s;
            cin>>s;
            cout<<s<<" ";
            int l=s.length();
            int flag=0;
            for(int i=0;i<l;i++)
            {
                if(a[s[i]]!=a[s[l-i-1]])flag=1;
            }
            if(flag==0)cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
        cout<<endl;
    }
}

C题就是某一格子必须那一行和那一列都有格子被经过就会掉下来,所以定义一个二维数组,然后走过一格的时候记录那一行被走过那一列被走过,如果同时被走过,那这个格子就是无效的,记录有多少个无效的格子就可以。

D题就是遍历这个数组,如果是奇数,就加起来,在记录这首歌放到哪里,如果是偶数就和前面的记录相比,如果小就直接加,如果大那就加上那一段在看看她喜欢的那首歌在后面占多长时间,加起来就可以,代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    for(int k=1;k<=t;k++)
    {
        printf("CD #%d:\n",k);
        int n,m;
        cin>>n>>m;
        int a[25],sum=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            sum+=a[i];
        }
        int u;
        cin>>u;
        while(u--)
        {
            int v,num,b[100],ans=0;
            cin>>v;
            for(int i=1;i<=v;i++)
            {
                scanf("%d",&b[i]);
                if(i%2==1){
                    ans+=b[i];
                    if(b[i]%a[m]==0)num=0;
                    else num=(b[i]/a[m]+1)*a[m]-b[i];
                }
                else {
                    if(b[i]<num){
                        ans+=b[i];
                    }
                    else{
                        ans+=num;
                        b[i]-=num;
                        ans+=(b[i]/sum)*a[m];
                        b[i]=b[i]%sum;
                        if(b[i]>sum-a[m])ans+=b[i]-sum+a[m];
                    }
                }
            }
            cout<<ans<<endl;
        }
        cout<<endl;
    }
}

E题好久没用搜索了,有点生疏,然后看这个还挺简单就直接写了,没想到...直接写简直难如上青天,改了好久的bug后终于写完了,我就是直接判断,代码太长没啥价值就不放了;

 

posted on 2020-03-30 21:12  小灰灰的父亲  阅读(136)  评论(0编辑  收藏  举报