从零开始的异世界生活(前缀和)

Description

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

现在给你 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 所遭受的心理攻击的总和)。

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

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 会遭受到的总的伤害值)。

Sample Input

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

Sample Output

62题解:一共有n个时间点,每一个时间点都有一个伤害值,一共有m个死亡点,若在该死亡点未达到死亡次数就不到下一个时间并且必须回到上一个时间点,若不是死亡点,则可以继续前进;我们可以用sum[i]记录前i个时间点所受到总伤害值;从1-n时间点总的伤害值+每一个死亡点多受的伤害值就是最终的伤害值。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stack>
 4 #include<string.h>
 5 #include<queue>
 6 #include<algorithm>
 7 #include<math.h>
 8 #include<map>
 9 #include<vector>
10 #define PI acos(-1.0)
11 using namespace std;
12 typedef long long ll;
13 int  m,n;
14 int str[10000];
15 int visit[500][500];
16 int dis[500][500];
17 int di[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
18  int kk[123114],hurt[111234],deth[111234],Return[111234],num[111234];
19 map<ll,ll>::iterator it;
20 int main()
21 {
22     int i,j;
23
24     while(scanf("%d%d",&m,&n)!=-1)
25     {
26          memset(kk,0,sizeof(kk));
27          int ans=0;
28         for(i=1;i<=m;i++)
29         {
30             scanf("%d",&hurt[i]);
31             kk[i]=kk[i-1]+hurt[i];
32         }
33         ans+=kk[m];
34         for(i=1;i<=n;i++)
35         {
36             scanf("%d %d %d",&deth[i],&Return[i],&num[i]);
37             ans+=(kk[deth[i]]-kk[Return[i]-1])*(num[i]);
38         }
39        printf("%d\n",ans);
40     }
41     return 0;
42 }



原文地址:https://www.cnblogs.com/moomcake/p/9351216.html

时间: 2024-10-08 11:12:27

从零开始的异世界生活(前缀和)的相关文章

从零开始的异世界生活

#include<bits/stdc++.h> using namespace std; const int N=100000; const int inf=2147483647; int cnt=0; int top=0; struct treap{ int ch[2],size,rd,val; }t[N+10]; int gi(){ int ans=0,f=1;char i=getchar(); while(i<'0'||i>'9'){if(i=='-')f=-1;i=getc

#从零开始的maven异世界#

从零开始的maven异世界 1:什么是maven,maven可以做什么? 首先,Maven的正确发音是[?mev?n],而不是"马瘟"以及其他什么瘟.Maven在美国是一个口语化的词语,代表专家.内行的意思,约等于北京话中的老炮儿.一个对Maven比较正式的定义是这么说的:Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependenc

NOJ 2015年陕西省程序设计竞赛网络预赛(正式赛)(小女警的异世界之战-前序中序求后序)

A - 小女警的异世界之战 Time Limit: 1000 ms        Memory Limit: 65536 KB Submit Description 这一天,小女警花花,泡泡和毛毛来到终极Boss"Him"所在的异世界并准备与其决一死战,却被困在了他的城堡里.她们发现异世界是一个巨大的城堡.城堡由一个个大小不同的房间组成,房间有着以下的规则: 每个房间有且仅有一扇黄门,此外至多有一扇红门和一扇绿门:黄色代表通向更大的房间,绿色和红色代表通向更小的房间.很显然,如果你打开

Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 【莫队算法 + 异或和前缀和的巧妙】

任意门:http://codeforces.com/problemset/problem/617/E E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Bob has a favorite number k and ai of length n. Now he asks yo

从零开始的网站架设生活[2]

从零开始的网站架设[2] 哇,今天就从一个模板开始说起吧.上次脑抽下了一个模板,模板大概可以总结成几个部分: (模板在这里:需要学习的可以下载哦~下载后24小时删除哦~) https://github.com/RockDeria/300shop.git css文件夹中的都是样式文件,fonts应该是字体资源文件,images是图片资源文件,js是脚本文件夹,index.html是我们的主静态界面.(可以看做网页的入口)外部的style.css 定义了绝大部分的自定义样式. 1.在html静态页面

从零开始在JAVA世界冒险——(零)

主要是这学期有J2EE课,所以就来学JAVA了,顺便开了JAVA的学期帖,之后还有HTML和JS以及CSS(不说了学习去了 首先这里推荐一个我个人觉得比较好的B站从零开始JAVA教程:av48144058(不过他有700多P,可以挑自己不懂的地方学习 之后这里推荐写JAVA的软件使用过程:记事本 → Notepad++/Edit Plus → Eclipse → IDEA (有些人对推荐记事本不是很理解,但是我认为学习一门新的语言的时候从最基层做起是最为重要的,因为不同语言的习惯是不一样的,只有

从零开始的程序员生活

每段时间都要重新清零,将所学的知识从头在学一遍. 摘录: "有实际开发工作经验"是指你目前已经具备下列能力: 1)你已经认为C++和汇编语言都是很简单的语言,并能够自如地运用: 2)你能够在30分钟之内想到正确的五子棋AI算法设计思路和方向: 3)你完全理解STL为什么这么重要: 4)你能够独立地解决所有的编译与链接问题,哪怕你从来没有遇到的问题,你也不需要询问任何人: 5)英文网站是你的首要信息来源: 6)能够读懂英语写成的国际标准,比如NTFS磁盘格式标准. 7)你经常站在集合论的

SD从零开始64-特异的业务交易(Special Business Transactions)

紧迫订单Rush Orders 紧迫订单和现金销售是用在从工厂销售流程可能用于当客户需要求即刻从货场获得他们的货物时的销售凭据种类: 在即刻交货的销售凭据种类中,即刻交货符号和交货种类DF是设置的:当你保留一张紧迫订单,系统积极创立一个交货种类DF的交货: 一旦货物曾经从货场取出,捡配和记账发货就能够开始: 当你创立Billing凭据(例如在凑近处理中)时,系统打印发票并将它们发送给客户: 现金销售Cash Sales 在现金销售的销售凭据种类中,即刻交货符号和交货种类BV是搭配的:当你保留现金

从零开始的&quot;E&quot;世界(J2SE)

汾煞3瘴7i乒9HXN侄http://www.zcool.com.cn/collection/ZMTg2OTM5ODg=.html V3j97BRH39http://www.zcool.com.cn/collection/ZMTg2OTQwMTY=.html 7揪寐斗抡5翘M汤貉40http://www.zcool.com.cn/collection/ZMTg2OTQxMjg=.html I0淖ll导K潜酉赖0http://www.zcool.com.cn/collection/ZMTg2OTQ