Problem A: 英雄无敌3(1)【dp/待补】

Problem A: 英雄无敌3(1)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 86  Solved: 16
[Submit][Status][Web Board]

Description

大家知道在英雄无敌3中,每个城堡都需要钱来维持建设,现在有一座很奇怪的金矿,它在第i天只产生si 元的钱,而且如果你在第i天拿到si 元的钱,那么你将在 xi 内(包括第i天)拿不到钱,而在yi天内(包括第i天)一定要再次拿钱。现在有一个着急的玩家,他现在已经拿了第一天的钱,他想知道他最多能拿到多少钱(包含第一天的钱)。

Input

第一行输入一个数t,代表测试案例数

每个案例先输入一个数n(n < =50000),代表总共有几天,接下来有n行,输入3个整数整数分别为si,xi,yi (0<=si<10000,0<=xi < yi)

Output

对于每组案例,输出一个正整数,代表他能拿到的最多钱数

Sample Input

4
3
1 1 2
2 2 3
3 3 4
3
1 1 3
2 2 4
3 3 5
4
10 3 10
7 1 7
5 2 5
1 1 2
5
1 1 9
10 3 10
7 1 7
5 2 5
1 1 2

Sample Output

3
4
11
13

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct day {
    int s;
    int x;
    int y;
}a[50005];
int dp[50005], n;
int make_dp(int l,int r) {
    int Max = 0;
    for (int k = l; k <= n && k <= r; ++k) {
        if (dp[k] == 0) {
            if (a[k].x + k <= n)
                dp[k] = max(dp[k], a[k].s + make_dp(a[k].x + k, a[k].y + k - 1));
            else
                dp[k] = a[k].s;
        }
        Max = max(dp[k], Max);
    }
    return Max;
}
int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        for (int i = 1; i <= n; ++i) {
            scanf("%d%d%d", &a[i].s, &a[i].x, &a[i].y);
            if (a[i].x == 0)
                a[i].x++;
            dp[i] = 0;
        }
        printf("%d\n", make_dp(1,1));
    }
    return 0;
}

  

时间: 2025-01-02 17:39:18

Problem A: 英雄无敌3(1)【dp/待补】的相关文章

BZOJ 3407: [Usaco2009 Oct]Bessie&#39;s Weight Problem 贝茜的体重问题( dp )

01背包... ----------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; i++ ) #define clr( x , c ) m

Problem D: 勤奋的涟漪2 dp + 求导

http://www.gdutcode.sinaapp.com/problem.php?cid=1049&pid=3 dp[i][state]表示处理了前i个,然后当前状态是state的时候的最小休息天数. 比如用1代表休息,2是训练,3是运动. 如果当前这天允许的状态只是训练. 那么dp[i][3] = inf(表示不可能) 休息是无论何时都可能的了.从dp[i - 1][1--3]个状态转过来, + 1即可 那个求导是-24 #include <cstdio> #include &

英雄无敌3地图的中英文对照

一直都很喜欢英雄无敌3,而且我觉得这个翻译真的很有水平,留一份存档在这里欣赏(红字表示翻译的特别好): A Viking We Shall Go 维京风暴! A Warm and Familiar Place 竞争上岗 Adventures of Jared Haret 胜利逃亡 All for One 臣服 And One for All 一统江山 Arrogance 傲气冲天 Ascension 即位 Back For Revenge 卷土重来 Barbarian Breakout 野蛮人的

让vcmi支持英雄无敌3中文版

Table of Contents 1 Hack 日志 2 Changes 3 Install by compiling 4 reply of Ivan 1 Hack 日志 8月22日开始动手修改改vcmi(英雄无敌3的开源游戏引擎)的源码, 让它支持简体中文版的游戏数据. 8月25日,已经有一个可工作的修改版,但自己不满意.这个版本的原理是每次要显 示文本的时候,都用自己写的编码转换函数将字符串从GBK编码转为UTF8编码,从而 能正常地显示中文.但每次显式都转换,每秒游戏要10帧以上,每帧要

英雄无敌3开源引擎vcmi的编译安装

vcmi是什么? vcmi 是经典的 SLG 英雄无敌3 的开源游戏引擎.原来的英雄无敌3只能在Windows上玩, 现在通过 vcmi,我们也可以在 Unix/Linux, 苹果等其它系统上玩了.目前手机和平 板上的英雄无敌3就是用的这个项目的成果. 而手机和平板上的英雄无敌2的出现,是因为另一个开源项目 fheroes2 . vcmi 和 fheroes2 的另一个好处就是降低了CPU的消耗,以前的Windows游戏估计 是为了获得及时的响应,都是100%地利用CPU,即使没什么需要计算的,

英雄无敌HoMM3-死亡阴影SOD-神之苏醒WOG-封神NABI-MOD等相关文件

英雄无敌HoMM3:死亡阴影SOD 英雄无敌3之死亡阴影(Heroes of Might and Magic III: Shadow of Death,简记为HoMM III: SOD)发行于1999年,网上随处可见资源和资料,"游戏之家"的帮助是最直观和详尽的.值得一提的是,贴吧"总上所述"将的"游戏之家"的内容整理成文件提供下载:http://pan.baidu.com/s/1i5Ne48P 英雄无敌HoMM3:神之苏醒WOG 神之苏醒(Wa

hdu 5293 Tree chain problem(树链剖分+树形dp)

题目链接:hdu 5293 Tree chain problem 维护dp[u], sum[u],dp[u]表示以u为根节点的子树的最优值.sum[u]表示以u节点的所有子节点的dp[v]之和.对于边a,b,w,在LCA(a,b)节点的时候进行考虑.dp[u] = min{dp[u], Sum(a,b) - Dp(a,b) + sum[u] | (ab链上的点,不包括u } #pragma comment(linker, "/STACK:1024000000,1024000000")

Codeforces 713C Sonya and Problem Wihtout a Legend(单调DP)

[题目链接] http://codeforces.com/problemset/problem/713/C [题目大意] 给出一个数列,请你经过调整使得其成为严格单调递增的数列,调整就是给某些位置加上或者减去某个数,调整的代价是加上或者减去的数的绝对值之和,请你输出最小代价. [题解] 先考虑这样一个问题,如果是非严格单调递增该如何做,我们会发现每次调整,都是调整某个数字为原先数列中存在的数字,最后才是最优的,所以,我们设DP[i][j]表示前i个数字,最后一个数为原先数列排序后第j大的数字的最

Problem D. What a Beautiful Lake dp

Problem D. What a Beautiful Lake Description Weiming Lake, also named "Un-named Lake", is the most famous scenic spot in Peking University. It is located in the north of the campus and is surrounded by walking paths, small gardens, and old red b