备战天梯赛-计算机唐计队训练赛01 A-F题解

备战天梯赛第一场 题解

by fengyuming233

A HDU5702 结构体排序

一个很基本的简单的知识点,不会请自行百度

#include
#include
#include
#include
#include
#include
#define each(a,b,c) for(int a=b;a<=c;a++)//宏定义 简化for循环
#define de(x) cout<<#x<<" "<<(x)< b.num;
}

int main()
{

    int T;
    scanf("%d", &T);
    
    while (T--)
    {
        int n;
        scanf("%d", &n);
        each(i, 1, n)
        {
            scanf("%s", a[i].color);
            scanf("%d", &a[i].num);
        }
        sort(a + 1, a + 1 + n, cmp);
        each(i, 1, n)
        {
            printf("%s", a[i].color);
            if (i == n)printf("\n");//注意输出格式,最后一个是回车,其他都是空格
            else printf(" ");
        }

    }
   
}

B HDU1034 沙雕模拟题

这种模拟题很受天梯赛的待见啊,毕竟不用看着模板敲,着重练习这类题



#include
#include
#include
#include
#include
#include
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout<<#x<<" "<<(x)<

C HDU1412 set的简单实用

STL是重要的工具,请务必学会set map priority queue stack vector的用法

点我进行学习

int main()
{
    int a,b;int num;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        sets;
        while(a--)
        {
            cin>>num;
            s.insert(num);
        }
        while(b--)
        {
            cin>>num;
            s.insert(num);
        }
        set::iterator it;
        int cnt=s.size();
        for(it=s.begin();it!=s.end();it++){
            printf("%d",*it);
            if(cnt-->1)
                printf(" ");
        }
        puts("");
    }
}

D CF1077B 贪心

此题目标在于消灭101这样的序列,所以你从左到右扫描时,如果发现101的序列,你只能立即破坏它,消去1个1,如果你消去左边的1,那么不会对后面的序列造成任何影响,如果你消去右边的1,就可能破坏了右边的一个新的101序列,所以每次发现101序列时将其转化为100,就可以使利益最大化

贪心也有可能考到

#define _CRT_SBCURE_NO_DEPRECATE
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define ll long long
#define mm0(a) memset(a,0,sizeof(a))
#define mm(a,b) memset(a,b,sizeof(a))
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout << #x << " " << x <'9'; ch=getchar());for(; ch>='0'&&ch<='9'; ch=getchar())s=s*10+ch-'0';return s;}

using namespace std;

const int maxn = 110;
int a[maxn];

const int INF = 0x3f3f3f3f;

int main()
{
    int n;
    fin(n);
    each(i,1,n)
    {
        fin(a[i]);
    }
    int cnt=0;
    each(i,2,n-1)
    {
        if(a[i-1]==1&&a[i+1]==1&&a[i]==0)
        {
            a[i+1]=0;
            cnt++;
        }
    }
    printf("%d\n",cnt);
    return 0;
 } 

E HDU2084 数塔 教科书上的动态规划例题

自底向上选择两个儿子中的较大的即可

#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
int a[101][101],d[101][101];
int main()
{
    int t,l,i,j;
    scanf("%d",&t);
    while(t--){
        memset(d,0,sizeof(d));
        scanf("%d",&l);
        for(i=1;i<=l;i++)
            for(j=1;j<=i;j++)
            scanf("%d",&a[i][j]);
            for(i=1;i<=l;i++)
                d[l][i]=a[l][i];
        for(i=l-1;i>=1;i--)
        for(j=1;j<=i;j++){
            d[i][j]=a[i][j]+max(d[i+1][j],d[i+1][j+1]);
        }
        printf("%d\n",d[1][1]);
    }
    return 0;
}

F 搜索 mdPOJ崩了没法测试不过应该没有写错

注意方向的写法 visit数组的应用 每轮注意清空visit数组并把全局变量cnt置0

如果没有超界 没有撞墙,则可以继续dfs

#include
#include
#include
#include
#include
#include
#include
#define each(a,b,c) for(int a=b;a<=c;a++)
#define de(x) cout<<#x<<" "<<(x)<= 1 && nx <= n && ny >= 1 && ny <= m && !vis[nx][ny])
        {
            dfs(nx, ny);
        }
    }
    return;
}
int main()
{
    
    while (scanf("%d%d", &m, &n) != EOF&&(m||n)) {
        cnt = 0;
        getchar();//吃掉那个回车
        memset(vis, 0, sizeof(vis));
        int sx, sy;

        each(i, 1, n)
        {
            each(j, 1, m)
            {
                scanf("%c", &a[i][j]);
                if (a[i][j] == '@')
                {
                    sx = i;
                    sy = j;
                }
            }
            getchar();//注意去掉空格
        }
        dfs(sx, sy);
        printf("%d\n", cnt);
        /*
        each(i, 1, n)
        {
            each(j, 1, m)
            {
                printf("%c", a[i][j]);
            }
            printf("\n");
        }*/

    }
    return 0;
}

这场比赛十分经典,再刷新题之前,不会的题目一定要弄懂,一定要亲手AC!!!
加油!为我吉争光!

你可能感兴趣的:(备战天梯赛-计算机唐计队训练赛01 A-F题解)