从零开始的异世界生活

简介: 从零开始的异世界生活 Time Limit: 2000MS Memory Limit: 65536KB Problem Description 486 作为有史以来最悲惨的男主,我们知道他需要经历一些无限次的死亡和轮回才能进行下一个关卡。

从零开始的异世界生活

Time Limit: 2000MS  Memory Limit: 65536KB

Problem Description

486 作为有史以来最悲惨的男主,我们知道他需要经历一些无限次的死亡和轮回才能进行下一个关卡。

 

3915-1

 

现在给你 n 个连续的时间点,每个时间点 i 上都会有一个心理伤害值 hurt[i],然后告诉你 m 个死亡时间点 deth[i],以及当前死亡时间点会死亡的次数 num[i],和死亡后 486 会返回的时间点(也就是最近的存档点 return[i])。

 

其整个过程就是 486 从时间点 0 开始 (hurt[0] = 0),不断向下一个时间点 1, 2, 3… 前进,当遇到死亡时间点的时候,486 会死亡一次,然后返回到最近的一个存档点,然后会继续从存档点向下一个时间点前进,当又遇到死亡时间点的时候,如果死亡次数还不够需要死亡的次数,那么当前不能过关,继续回到最近的存档点。达到需要死亡的次数之后,便不需要死亡,继续向下一个时间点前进。486 在每一个时间点 i 上都会遭受心理伤害 hurt[i]。为什么 486 的心理防线不会崩溃呢,当然因为有我们的蕾姆酱了,每次受到心理伤害的时候蕾姆酱都会治愈掉。第一季的目标便是走到时间点 n,现在需要你计算一下蕾姆酱的治愈总和(也就是 486 从时间点 0 到时间点 n 所遭受的心理攻击的总和)。

 

3915-2

 

那么萌萌的蕾姆酱到底治愈了多少呢~她这么萌,你还不快告诉她么~

Input

输入数据有多组(数据组数不超过 30),到 EOF 结束。

对于每组数据:

  • 第一行输入两个以空格分隔的整数 n 和 m
  • n (1 <= n <= 100000) 表示 486 要到达的目标时间点(起始目标点 0,hurt[0] = 0,每次前进一个时间点)
  • 接下来一行输入 n 个以空格分隔的整数,表示 hurt[i]。表示 486 在当前时间点会遭受到的伤害值
  • 接下来输入 m (0 <= m <= n/2) 行,每行 3 个整数,分别是 deth[i],return[i] 和 num[i],表示 deth[i] 时间点需要死亡的次数以及会返回的最近的存档点

保证:0 <= hurt[i] <= 100,1 <= deth[i-1] < return[i] < deth[i] <= n, 0 <= num[i] <= 100。

当前时间点如果不需要死亡,那么486不会返回最近的存档点,会继续前进。

Output

对于每组数据,输出一个整数,表示蕾姆酱总的治愈值(486 会遭受到的总的伤害值)。

Example Input

10 3
1 2 3 4 5 5 4 3 2 1
4 2 1
6 5 2
10 9 1

Example Output

62

Hint

1+2+3+4 死亡 +2+3+4+5+5 死亡 +5+5 死亡 +5+5+4+3+2+1 死亡 +2+1 = 62。

Code
#include <stdio.h>
int main(){
    int n,m;
    while(scanf("%d %d",&n,&m)!=EOF){
        int hurt[100001],deth[50001],re[50001],num[50001];
        for(int i=1;i<=n;i++){
            scanf("%d",&hurt[i]);
        }
        for(int i=1;i<=m;i++){
            scanf("%d %d %d",&deth[i],&re[i],&num[i]);
        }
        long sum = 0;
        for(int i=1,j=1;i<=n;i++){
            if(i<re[j]){
                sum += hurt[i];
            }
            else if(i>=re[j] && i <deth[j]){
                sum += (num[j]+1)*hurt[i];
            }
            else if(i == deth[j]){
                sum += (num[j]+1)*hurt[i];
                j++;
            }
            else
                sum += hurt[i];
        }
        printf("%ld\n",sum);
    }
}

目录
相关文章
|
存储 供应链 算法
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型
168 1
|
3月前
|
机器学习/深度学习
【机器学习】如何判断函数凸或非凸?(面试回答)
文章介绍了如何判断函数是凸函数还是非凸函数,包括凸函数的定义、几何意义、判定方法(一元函数通过二阶导数判断,多元函数通过Hessian矩阵的正定性判断),以及凸优化的概念和一些经典的凸优化问题。
157 1
【机器学习】如何判断函数凸或非凸?(面试回答)
|
6月前
|
资源调度
回归方程优良性评价(原理+实践+代码)
回归方程优良性评价(原理+实践+代码)
回归方程优良性评价(原理+实践+代码)
|
6月前
|
机器学习/深度学习 存储 供应链
【软件设计师备考 专题 】运算基本方法:预测与决策、线性规划、网络图、模拟
【软件设计师备考 专题 】运算基本方法:预测与决策、线性规划、网络图、模拟
101 0
|
机器学习/深度学习 存储 自然语言处理
大模型面经答案—强化学习:理论解释与讲解
微信上偷来的文章(哈哈(ಡωಡ)hiahiahiahiahiahia),我可是选的转载的,收藏起来自己偷偷复习大模型,希望能赶上下一波风口。
|
6月前
|
机器学习/深度学习 算法 vr&ar
【Python强化学习】动态规划法中策略迭代和值迭代求解冰湖问题实战(图文解释 附源码)
【Python强化学习】动态规划法中策略迭代和值迭代求解冰湖问题实战(图文解释 附源码)
129 0
|
Python
线性回归从零开始的实现过程python实现
线性回归从零开始的实现过程python实现
55 1
|
机器学习/深度学习 存储 人工智能
【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补)
DGLGraph图按照边的方向将度分为两种:连接其他顶点的度(out)和被其他顶点连接的度。
393 0
|
机器学习/深度学习
花书《深度学习》代码实现:02 概率部分:概率密度函数+期望+常见概率分布代码实现
随机变量 (Random Variable):⼀个可能随机取不同值的变量。例如:抛掷⼀枚硬币,出现正⾯或者反⾯的结果
121 0
|
机器学习/深度学习 算法 数据挖掘
谱聚类|机器学习推导系列(二十)
谱聚类|机器学习推导系列(二十)
274 0
谱聚类|机器学习推导系列(二十)