LeetCode-1219 黄金矿工】的更多相关文章

题目: 5215. 黄金矿工 你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为 m * n 的网格 grid 进行了标注.每个单元格中的整数就表示这一单元格中的黄金数量:如果该单元格是空的,那么就是 0. 为了使收益最大化,矿工需要按以下规则来开采黄金: 每当矿工进入一个单元,就会收集该单元格中的所有黄金. 矿工每次可以从当前位置向上下左右四个方向走. 每个单元格只能被开采(进入)一次. 不得开采(进入)黄金数目为 0 的单元格. 矿工可以从网格中 任意一个 有黄金的单元…
传送门 Description 黄金矿工是一个经典的小游戏,它可以锻炼人的反应能力.该游戏中,可以通过“挖矿”获得积分并不断升级.玩家可以在线玩flash版黄金矿工,也可以下载后玩单机版黄金矿工.目前,黄金矿工小游戏有多个版本,例如黄金矿工双人版,黄金矿工单人版等. Jimmy是一位黄金矿工,他所在的金矿是一个n*n的矩形区域(俯视),区域内有黄金.石头和TNT,由一个 n*n的矩阵描述.黄金的价值对应矩阵中的正值,石头的价值对应矩阵中的负值,TNT由0表示.换句话说,挖到黄金赚钱,石头亏损,如…
题目描述 小A最近迷上了在上课时玩<黄金矿工>这款游戏.为了避免被老师发现,他必须小心翼翼,因此他总是输.在输掉自己所有的金币后,他向你求助.每个黄金可以看做一个点(没有体积).现在给出你N个黄金的坐标,挖到它们所需要的时间以及它们的价值.有些黄金在同一条直线上,这时候你必须按顺序挖.你可以瞬间把钩子转到任意角度.请你帮助小A算出在时间T内他最多可以得到多少价值的金子. 输入输出格式 输入格式: 第一行,两个整数N和T,表示黄金的个数和总时间.接下来N行,每行四个整数x,y,t,v分别表示黄金…
题目描述: 给定一个二维网络,给定任意起点与终点.每一步可以往4个方向走.要找出黄金最多的一条线路. 很明显的是要“一条路走到黑,一直下去直到某个条件停止”. 运用dfs(深度优先搜索)求解. 因为起点任意,所以从每个点开始搜,接着每个点又搜相邻点.反复如此. 递归的终止条件: 1:越界. 2:搜到已经走过的点也终止. 3:遇到黄金数量为0的点. 用一个形参变量sum存储每条线路的当前黄金数量. 每一次更新返回值res的值. 搜一个点先将其标记,再搜其4个方向相邻点,搜完相邻点后取消原标记. 解…
记$dep_{x}$为1到$x$的边权和,当$x$上的矿工挖了$y$上的黄金时($y$在$x$子树内),显然$\sum_{e}c_{e}=dep_{y}-dep_{x}$ 由此,对于$u$上权值为$v$的矿工(或黄金),不妨修改其权值为$v-dep_{x}$(或$v+dep_{x}$) 此时,矿工挖黄金的收益即两者的权值和(同时黄金要在矿工子树内),因此我们仅关心于挖了黄金的矿工和被挖的黄金,而不关心具体谁挖了谁 根据Hall定理,当选择了若干个黄金和矿工后,判断是否合法仅需要保证: 1.选择的…
原题链接在这里:https://leetcode.com/problems/path-with-maximum-gold/ 题目: In a gold mine grid of size m * n, each cell in this mine has an integer representing the amount of gold in that cell, 0 if it is empty. Return the maximum amount of gold you can colle…
甚至都不是树形背包= = 把每条线抠出来,这一条线就是个链的依赖关系,随便背包一下 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define il inline #define vd void typedef long long ll; il int gi(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; ch=getchar(); } wh…
题目描述: 方法一:dfs class Solution: def getMaximumGold(self, grid: List[List[int]]) -> int: maxx = 0 R, C = len(grid), len(grid[0]) def dfs(r, c, visited, count): nonlocal maxx count += grid[r][c] maxx = max(maxx, count) visited.add((r, c)) for nr, nc in […
DFS 深度优先搜索 主要有两种实现方法:栈和递归 什么是DFS?说白了就是一直遍历元素的方式而已,我们可以把它看成是一条小蛇,在每个分叉路口随意选择一条路线走,直到撞到南墙,才会调头返回到上一个分叉路口,走另外一条路,有时候运气很好,撞到了目标点,那么这个算法就结束了. 模板: 参数1 DFS(参数2) {     if(返回条件成立) return 参数 :     DFS(进行下一步的搜索遍历) : 回朔: } 1)if 语句: 作用就是告诉小蛇:是否撞到南墙啦?撞到就返回啦,或者,是否到…
本人收藏了几个有意思的Flash,在此与大家分享下 1.黄金矿工中文版.swf 2.中国象棋.swf 3.运动的老鼠.swf 4.时钟.swf 5. 2048.swf 6.小猫逃跑.swf…