1169: Krito的讨伐

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 628  Solved: 105

Description

Krito终于干掉了99层的boss,来到了第100层。第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点可能有很多只怪物。 Krito现在在0号节点,现在它想要区清除这一层所有的怪物。他现在有atk大小的攻击力。只有当你的攻击力大于这只怪物的防御力时,你才可以打败他,同时每打败只怪物,你会获得一定的攻击力加成。一个节点可能存在着不止一只怪兽,你要打败这个节点的所有怪物才能可以从这个节点通过,请问他能不能完成这个任务?注意:不要求一次性杀光一个节点里面的所有怪物。

相关知识: 摘自维基百科

在计算机科学中,树(英语:tree)是一种抽象资料型别(ADT)或是实作这种抽象资料型别的数据结构,用来模拟具树状结构性质的资料集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

1.每个节点有零个或多个子节点;

2.没有父节点的节点称为根节点;

3.每一个非根节点有且只有一个父节点;

4.除了根节点外,每个子节点可以分为多个不相交的子树;

Input

第1行:一个数T,表示有T个测试样例(0<=T<=50) ,接下来有T个测试样例

对于每一个测试样例:

第1行:两个整数n,m表示这棵树有n个节点,m只怪兽(0<=n<=1000 ,0<=m <=100)

第2至n-1行: 两个整数u,v表示编号为u,v之间的节点有一条无向边,题目保证不会成环。(0<=u,v<n , u!=v)

第3行: 一个整数atk,表示Krito的初始化攻击力(0<=atk<=100)

第4至3+m行:两个整数id,def,add_atk,表示在编号为id的点上,有一只防御力为def的怪物,打败后可以增加add_atk点的攻击力。(0<=add_atk,def<=100)

Output

对于每一个测试样例,如果Krito能够清除所有的怪物,则输出“Oh yes.” 否则,输出“Good Good Study,Day Day Up.”

Sample Input

15 20 10 22 32 4113 10 21 11 0

Sample Output

Oh yes.

HINT

Source

思路:不断将就近的怪物扔进优先队列即可。
# include <iostream>
# include <cstdio>
# include <cstring>
# include <vector>
# include <queue>
# define LL long longusing namespace std;
int vis[1001];
struct Node
{int id, def, add;Node(int x=0, int y=0, int z=0){id = x;def = y;add = z;}
};struct node
{int num;vector<Node>all;
};bool operator<(Node a, Node b)
{return a.def > b.def;
}priority_queue<Node>Q;
vector<int>v[1001];
node a[1001];void dfs(int now)
{vis[now] = 1;if(a[now].num == 0){for(int i=0; i<v[now].size(); ++i)if(!vis[v[now][i]])dfs(v[now][i]);}else{for(int j=0; j<a[now].num; ++j)Q.push(a[now].all[j]);}
}int main()
{int n, m, t, x, y, z, atk;scanf("%d",&t);while(t--){bool flag = true;memset(vis, 0, sizeof(vis));memset(a, 0, sizeof(a));while(!Q.empty()) Q.pop();for(int i=0; i<=1000; ++i)v[i].clear();scanf("%d%d",&n,&m);for(int i=0; i<n-1; ++i){scanf("%d%d",&x,&y);v[x].push_back(y);v[y].push_back(x);}scanf("%d",&atk);for(int i=0; i<m; ++i){scanf("%d%d%d",&x,&y,&z);a[x].num++;a[x].all.push_back(Node(x, y, z));}dfs(0);while(!Q.empty()){Node tmp = Q.top();Q.pop();if(tmp.def > atk)break;atk += tmp.add;if(--a[tmp.id].num == 0){int id = tmp.id;for(int i=0; i<v[id].size(); ++i)if(!vis[v[id][i]])dfs(v[id][i]);}}for(int i=0; i<n; ++i)if(a[i].num){flag = false;break;}if(flag)puts("Oh yes.");elseputs("Good Good Study,Day Day Up.");}return 0;
}

转载于:https://www.cnblogs.com/junior19/p/6729927.html

GDUT1169:Krito的讨伐(树 + 优先队列)相关推荐

  1. GDUT——1169: Krito的讨伐(优先队列BFS)

    1169: Krito的讨伐 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 619  Solved: 102 Description Krito终于干 ...

  2. Vijos P1097 合并果子【哈夫曼树+优先队列】

    描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看 ...

  3. 暑期集训4:栈,树,优先队列 例 :  UVA - 514 ​​​​​​​​​​​​​​

    2018学校暑期集训第四天--栈,树,优先队列 例题  --   UVA - 514 Rails There is a famous railway station in PopPush City. ...

  4. SDUT 2127 树-堆结构练习——合并果子之哈夫曼树(优先队列)

    树-堆结构练习--合并果子之哈夫曼树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description ...

  5. hdu 4006 The kth great number 线段树/优先队列/set

    题目意思: 有n种操作,I代表插入数据,q代表输出第k大的数. 区间的大数据的操作,基本是用树操作. 这到题目可以用三种方法来做. (1) 线段树 考虑到题目可能有负数,给每个值加500000直接贴代 ...

  6. POJ3253 Fence Repair【哈夫曼树+优先队列】

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 48026   Accepted: 15784 De ...

  7. 二叉树--Huffman编码树--优先队列解法

    超链接:Huffman编码树 总时间限制:  1000ms  内存限制:  65535kB 描述 构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权.使得这个扩充 ...

  8. sdut 2127 树-堆结构练习——合并果子之哈夫曼树 优先队列

    Problem Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的 ...

  9. BZOJ4504. K个串(主席树+优先队列)

    4504. K个串 description solution code description 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一 个连续子串,然后统计其子串 ...

最新文章

  1. 比特币现金受到美国和欧洲市场的欢迎
  2. mysql sort aborted_mysql排序中断(Sort aborted)-mysql临时文件无法写入
  3. springboot 默认异常处理
  4. 全场灭灯_海天黄豆酱《新相亲大会2》首遇滑铁卢,男嘉宾险遭全场灭灯
  5. 小程序 长按api_高质量的微信小程序样式模板应该长什么样?
  6. 看看吉祥三宝程序员版本你就明白了
  7. pip 20.3 发布:更改默认依赖解析器、即将停止支持 Python 2.7
  8. pclint如何不检查头文件_如何不拆轮胎,就能检查刹车片是否要换了
  9. 中医预约挂号系统,代煎取药功能原来这样用?
  10. 超级马里奥【附源码】
  11. Python学习笔记——python基础之Python实现名片管理系统
  12. 电脑如何压缩图片大小kb?如何在线压缩图片?
  13. css3 文字高光划过,CSS3实现一束光划过图片、和文字特效
  14. ubuntu桌面进不去的解决办法
  15. 2022年R2移动式压力容器充装考试模拟100题及在线模拟考试
  16. C语言求整数的绝对值
  17. 微信公众号开发之(21)视频
  18. jQuery中index的用法
  19. 打破双亲委派的几种方式
  20. 基于微信小程序的大学生科技竞赛管理系统小程序

热门文章

  1. 胡小明:城市大脑与人脑不同的数据意识
  2. 大自然创作的分形艺术
  3. 学界 | UC伯克利发布一个低成本家居机器人,会叠衣服、会泡咖啡
  4. 关于未来的10点核心思考
  5. 【干货51页PPT】深度学习理论理解探索
  6. 一场科技盛宴,一次“盈”满天下 安创成长营五期Demo Day完美收官
  7. 思略特报告解读:智能制造企业如何实现数字化?
  8. AI芯片之争白热化的当下,如何设计一款真正适用于终端的AI芯片?
  9. 「自然语言处理」如何快速理解?有这篇文章就够了!
  10. 走近“颠覆性技术”:量子通信能否取代传统通信?