Technology Tree

简介: Technology Tree

解题思路:

运用结构体解题,将晶体矿和高能瓦斯的数量分别放在两个数组里。再根据第i个(1≤i<n)正整数fi(1≤fi<i)表示建筑i+1的前置建筑为fi,将数组里的数进行求和即可。

注意题目中说道,在科技树中,只有一个建筑是不需要前置建筑的,我们把这个建筑的编号设为1。其他的建筑,有且仅有一个前置建筑。因此我们应该注意 下标问题……(即注意i,j,f,x的关系)

另外还要注意,这一个测试用例里面有3个循环……

#include<stdio.h>
#include<string.h>
typedef struct
{
    int jing;
    int gao;
}construction;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,q;
        construction con[20000];
        scanf("%d %d",&n,&q);
        for(int i = 1;i <= n;i++)//从1开始!!
        {
            scanf("%d",&con[i].jing);
            scanf("%d",&con[i].gao);
        }
        for(int j = 2;j <= n;j++)//从2开始!!
        {
            int f;
            scanf("%d",&f);
            con[j].jing += con[f].jing;
            con[j].gao += con[f].gao;
        }
        while(q--)
        {
            int x;
            scanf("%d",&x);
            printf("%d %d\n",con[x].jing,con[x].gao);
        }
    }
    return 0;
}
PS:结构体 举个例子……
#include <stdio.h>
#include <string.h>
typedef struct
{
    char name[100];
    int age;
}student;
int main()
{
    student stu[10];
    char name[] = "feifei";
    strcpy(stu[0].name,name);
    printf("%s",stu[0].name);//第一种,字符类型
    stu[0].age = 100;
    stu[1].age = 120;
    printf("%d %d",stu[0].age,stu[1].age);//第二种,整数类型
  student stu[3];
    for(int i = 0;i < 3;i++)
    {
        scanf("%s",stu[i].name);
        scanf("%d",&stu[i].age);
        printf("%s %d\n",stu[i].name,stu[i].age);//第三种,两种类型同时出现
    }
    return 0;
}


相关文章
|
4月前
|
存储 网络协议 Linux
Overview of Concepts
Overview of Concepts
47 1
|
设计模式 缓存 监控
译|Design patterns for container-based distributed systems(下)
译|Design patterns for container-based distributed systems(下)
75 0
|
设计模式 分布式计算 Kubernetes
译|Design patterns for container-based distributed systems(上)
译|Design patterns for container-based distributed systems
93 0
PAT (Advanced Level) Practice - 1127 ZigZagging on a Tree(30 分)
PAT (Advanced Level) Practice - 1127 ZigZagging on a Tree(30 分)
124 0
|
存储 算法
PAT (Advanced Level) Practice - 1151 LCA in a Binary Tree(30 分)
PAT (Advanced Level) Practice - 1151 LCA in a Binary Tree(30 分)
129 0
Beyond Bitcoins - How Blockchain Technology Can Transform Businesses
Blockchain - the technology behind the virtual currency bitcoin - might sound new to you today, but it has all the potential to transform your world o
2472 0
|
算法 数据可视化 数据挖掘
Decision Tree
①Aggregation Model 回顾上一篇文章讲到的聚合模型,三个臭皮匠顶一个诸葛亮。于是出现了blending,bagging,boost,stacking。
841 0
|
存储 数据库 索引
数据分区------《Designing Data-Intensive Applications》读书笔记9
进入到第六章了,我们要开始聊聊分布式系统之中的核心问题:数据分区。分布式系统通常是通过大规模的数据节点来处理单机没有办法处理的海量数据集,因此,可以将一个大型数据集可以分布在多个磁盘上,查询负载可以分布在多个处理器上。
1353 0