【动态规划】魔法石矿

【动态规划】魔法石矿
时间限制: 1 Sec 内存限制: 64 MB
提交: 116 解决: 27
[提交] [状态] [命题人:admin]
题目描述
为了找到回家的路,张琪曼施展魔法,从高维空间召唤出了一种叫作“读者”的生物,据说“读者”这种生物无所不能,他们可以穿越时空的限制,聆听到历史的声音、巨人的呐喊。但这次“读者”却很严肃地警告她们,从远古起就阴魂不散的天顶星人已冲破封印再次降临到了这个空间,她们若不早做准备,不仅她们所在的这个世界将变成修罗场,连“读者”所在的时空也会受到牵连。最后“读者”交给她们一张藏宝图希望她们能收集足够多的魔法石能量以对抗天顶星人的进攻。已知藏宝图上标有若干个排成一条直线的魔法石矿,每个矿里有一定数量的魔法石,如表所示。
在这里插入图片描述
同时每个矿中都有一张说明书,说明在挖完此矿的魔法石后还可继续挖哪些矿,如图所示。
在这里插入图片描述
挖矿规则为可以从任何一个矿开始,到任何一个矿结束,同时挖完这个矿中的魔法石之后,可以选择它可继续挖的矿之一继续挖,但只能选择一条。如挖完1矿后,可挖2矿,再挖5矿,6矿,……但只可以向右挖,不能回头向左挖。请问如何挖才能挖出最多的魔法石?

输入
第一行为一个整数n,表示有n(n≤1000)个矿。第二行为n个整数,表示这n个矿的魔法石数。随后n行表示每个矿挖完后还能再挖哪些矿。

输出
最多挖出的魔法石数。

样例输入
复制样例数据
3
1 1 1
1 2 3
2 3
3
样例输出
3

解题思路:
我们可以用dp[i]dp[i]dp[i]来表示到达iii号矿坑所能获得的最大矿石数,则:
dp[i]=max(dp[i],dp[j]+num[i])dp[i]=max(dp[i],dp[j]+num[i])dp[i]=max(dp[i],dp[j]+num[i]) jjj代表jjj号矿坑能从iii号矿坑的左部到达iii号矿坑

代码:

//#pragma GCC optimize(3,"Ofast","inline")
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
ll dp[1200];
vector<int> a[1200];
ll num[1200];
int main() 
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);int n;scanf("%d",&n);rep(i,1,n) {scanf("%lld",&num[i]);dp[i]=num[i];}char c;int nape=0;int x;for(int i=1;i<=n;i++) {scanf("%d",&x);do{nape=0;while(1) {c=getchar();if(c>='0'&&c<='9') {nape=nape*10+(c-'0');}elsebreak;}if(nape>0&&nape!=i) {a[nape].push_back(i);}}while(c!='\n');}rep(i,1,n) {for(int j=0;j<a[i].size();j++) {dp[i]=max(dp[i],dp[a[i][j]]+num[i]);}}ll ans=0;rep(i,1,n) {ans=max(ans,dp[i]);}printf("%lld\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Knapsack Cryptosystem【折半+查找】

链接&#xff1a;https://ac.nowcoder.com/acm/contest/889/D 来源&#xff1a;牛客网 Amy asks Mr. B problem D. Please help Mr. B to solve the following problem. Amy wants to crack Merkle–Hellman knapsack cryptosystem. Please help it. Given an array {ai} wi…

All men are brothers【并查集+数学】

链接&#xff1a;https://ac.nowcoder.com/acm/contest/889/E 来源&#xff1a;牛客网 题目描述 Amy asks Mr. B problem E. Please help Mr. B to solve the following problem. There are n people, who don’t know each other at the beginning. There are m turns. In e…

Light bulbs【差分】

19.98% 1000ms 8192K There are NN light bulbs indexed from 00 to N-1N−1. Initially, all of them are off. A FLIP operation switches the state of a contiguous subset of bulbs. FLIP(L, R)FLIP(L,R)means to flip all bulbs xx such that L \leq x \leq RL≤x≤R. S…

Digit sum【暴力+打表】

Digit sum 33.57% 2000ms 131072K A digit sum S_b(n)S b ​ (n) is a sum of the base-bb digits of nn. Such as S_{10}(233) 2 3 3 8S 10 ​ (233)2338, S_{2}(8)1 0 0 1S 2 ​ (8)1001, S_{2}(7)1 1 1 3S 2 ​ (7)1113. Given NN and bb, you need to calcu…

P1040 加分二叉树【dp+深搜】

题目描述 设一个nn个节点的二叉树tree的中序遍历为&#xff08;1,2,3,…,n1,2,3,…,n&#xff09;&#xff0c;其中数字1,2,3,…,n1,2,3,…,n为节点编号。每个节点都有一个分数&#xff08;均为正整数&#xff09;&#xff0c;记第ii个节点的分数为di,treedi,tree及它的每个子树…

Helloworld【C#】

c#Helloworld 题目描述 请输出样例所示内容 输出 样例输出 ********** Hello,world! ********** using System;namespace ConsoleApp1 {class Program{static void Main(string[] args){Console.WriteLine("**********");Console.WriteLine("Hello,world!&…

判断闰年【C#】

判断闰年 题目描述 使用C#编写一个控制台应用。输入-一个年份&#xff0c;判断是否润年(被4整除&#xff0c;且不被100整除&#xff0c;或者被400整除)。 是闰年输出yes&#xff0c;不是输出no 输入 一个年份 输出 yes或者no 样例输入 1996 样例输出 yes using Syst…

采用递归求第n位数【C#】

题目描述 一数列的规则如下&#xff1a;1、1、2、3、5、8、13、21、34......。求第n位数是多少&#xff1f; 输入 输入一个正整数&#xff0c;代表求第几位数字 输出 输出第n位数字 样例输入 30 样例输出 832040 提示 输入数字必须大于零 using System;namespace C…

歌手的分数【C#】

歌手的分数 题目描述 一青年歌手参加比赛。使用C#编写-一个控制台应用&#xff0c;输入10位评委打分(分值只能为正整数)&#xff0c;计算并输出歌手的平均分(去掉一一个最高分和一一个最低分)。平均分以double数据类型输出。 输入 1 2 3 4 5 6 7 8 9 10 输出 5.5 样例输…

冒泡排序算法(C#)

冒泡排序算法&#xff08;C#&#xff09; 题目描述 使用C#编写一个控制台应用。输入10个整数存入数组中&#xff0c;然后使用冒泡排序算法对一维数组的元素从小到大进行排序&#xff0c;并输出。 输入 在控制台中输入数字&#xff0c;存入一维数组 输出 输出排序后的数…

水仙花数【C#】

题目描述 春天是鲜花的季节&#xff0c;水仙花就是其中最迷人的代表&#xff0c;数学上有个水仙花数&#xff0c;他是这样定义的&#xff1a; “水仙花数”是指一个三位数&#xff0c;它的各位数字的立方和等于其本身&#xff0c;比如&#xff1a;1531^35^33^3。 现在要求输出…

C#异或运算符的使用【C#】

C#异或运算符的使用 题目描述 编写一个控制台应用&#xff0c;采用异或运算符&#xff0c;实现两个整型变量值的交换。并在Program类的Main进行验证。 输入 依次输入2个整数 输出 输出交换前、后两个变量的值 样例输入 12 78样例输出 before exchange first12,second7…

C#类方法【C#】

C#类方法 题目描述 在类Class1中&#xff0c;编写一个类方法IsEven(string number)用于输出参数的奇偶性。并在Program类的Main进行验证性输出。 class Program { static void Main(string[] args) { Console.Write("Input Integer:&quo…

C#中的Switch语句【C#】

C#中的Switch语句 题目描述 编写一个控制台应用&#xff0c;实现以下功能&#xff1a;根据输入的字符&#xff0c;输出通过、不通过和输入成绩无效。 &#xff08;1&#xff09;无论输入A、B、C、D&#xff0c;都输出通过&#xff1b; &#xff08;2&#xff09;输入E&#x…

c#输出最大值、最小值和平均值(A)【C#】

c#输出最大值、最小值和平均值(A) 题目描述 使用C#编写一个控制台应用。输入10个正整数存入数组中&#xff0c;输出最大值、最小值和平均值 输入 输入10个正整数 输出 最大值、最小值和平均值 样例输入 1 2 3 4 5 6 7 8 9 10 样例输出 10 1 5.5 using System;namesp…

c#输出最大值、最小值和平均值(B)【C#】

c#输出最大值、最小值和平均值&#xff08;B&#xff09; 题目描述 使用C#编写一个控制台应用。输入若干个正整数存入数组中&#xff08;输入exit表示输入结束&#xff09;&#xff0c;输出最大值、最小值和平均值输入 输入若干个正整数存入数组中输出 输出最大值、最小值和平…

C#提取文件名【C#】

C#提取文件名 题目描述 假设有一个字符串包含了文件名、扩展名和路径&#xff0c;如strFileName“D:\C#程序设计\实验3\MyFile.TXT”。请使用C#编写一个静态方法&#xff0c;该方法能够取出路径中的文件名“MyFile.TXT”。 输入 一个包含了文件名&#xff0c;扩展名和路径的…

C#解密出生日期【C#】

C#解密出生日期 题目描述 使用C#编写一个静态方法。该方法能够根据出生日期&#xff0c;&#xff08;1&#xff09;计算此人的年龄&#xff1b;&#xff08;2&#xff09;计算从现在到其60周岁期间&#xff0c;总共多少天。 输入 一个人的出生日期&#xff1b; 输出 第一…

C#判断回文字符串【C#】

C#判断回文字符串 题目描述 使用C#编写一个静态方法。该方法能够判断字符串是否是“回文”&#xff08;即顺读和逆读相同的字符串&#xff09;。 输入 一个字符串&#xff1b; 输出 如果是回文字符串&#xff0c;则输出“yes”&#xff0c;否则输出“no”&#xff1b; 样…

猜数【C#】

猜数 题目描述 编写一个控制台程序。以控制台方式输入整数&#xff0c;且调用Class1类CompareNum方法判断是否猜中&#xff0c;给出大了、小了、猜中三种提示。输入exit表示输入结束。 输入 无 输出 太小了 太大了 猜中了 提示 若输入的既不是数字&#xff0c;又不是ex…