T24743 [愚人节题目5]永世隔绝的理想乡

题目地址:https://www.luogu.org/problemnew/show/T24743

这道题巨坑不像以前的题一样要求时间尽可能短,而这题的时间要求是符合题意---萌新zcy是个海豹,他为了展现自己抽到的梅林,使用了自信的一倍速。So,你也需要用合适的速度来配合他回答询问(题目中这段话变斜是有原因滴)。(逃...

题意翻译

我们来说说王的故事吧。 星之内海,瞭望之台。从乐园的角落告知汝等。汝等的故事充满了祝福。只有无罪之人可以进入——『永世隔绝的理想乡(Garden of Avalon)』!

题目背景

zcy入坑了一个叫做FGO的毒瘤游戏,他不知道自己适合什么英灵。

在众多大佬的帮助下,他发现了一个非常强大的,叫做梅林的英灵……

乐园的放浪者。登场于亚瑟王传说中的
兼备导师及预言家身份的宫廷魔术师。
对击败了无数敌人克服了无数苦难的亚瑟王
时而进行引导、时而令其困扰,时而伸出援手。
虽身为贤人,但基本上是非人类。
毕竟他是梦魔与人类的混血儿。

「我是很喜欢人类的世界啦,
不过如果具体到个人的话——
那就比较,嗯,就是——嗯!
好!这种时候沉默才是金啊!」

正如所见到的那样,他其实算不上是人类的伙伴。
虽是最高等级的『Caster』之一,但他却并不擅长使用魔术。
至于原因嘛,据说是因为念咒语的时候会咬到舌头。

梅林

题目描述

zcy开始用梅林打一个非常难的副本,由于这个副本非常难,而且zcy傻乎乎的只带了一个梅林,因此他要打好长时间。

打的时间长了,HP回复就成为了一个重要的问题。幸运的是梅林的宝具——“永世隔绝的理想乡(Garden of Avalon)”带有很强的HP回复功能。由于zcy运气比较差,只能抽到一个梅林,因此他的梅林的宝具的回复效果是每使用一次,会在包括本回合在内的五回合每回合回复1000HP

注意,宝具的回复效果可以叠加,但是回合数要单独计算

在FGO中,每回合可以采取三张指令卡,指令卡共有四种,分别是Buster,Arts,Quick以及宝具卡(例如梅林的GardenOfAvalon)。我们这里认为宝具卡是独立于三张指令卡之外的。

现在zcy记录下了他每回合选择的指令卡,他向你提出了 mm 个问题,分别表示在某一回合结束时,他能够恢复多少HP。

为了简化题意,我们假设一回合可以使用多次宝具,并且多次使用时不考虑宝具连携效果。同时由于zcy只有一个梅林,所以一回合使用多次宝具只能被当做使用一次

萌新zcy是个海豹,他为了展现自己抽到的梅林,使用了自信的一倍速。因此你也需要用合适的速度来配合他回答询问

输入输出格式

输入格式:

第一回合包括两个整数 n,mn,m ,分别表示回合数和询问数 接下来 nn 行,每行三个用空格隔开的字符串,分别表示该回合使用三张的指令卡,包括"Buster","Arts","Quick","GardenOfAvalon"四种。 接下来 mm 行,每行一个整数,表示一次询问。

输出格式:

共 mm 行,每行一个整数,表示答案。保证答案不会超过C++的long long范围。

输入输出样例

输入样例#1:  复制
3 2
GardenOfAvalon Buster Arts
Arts Arts Quick
GardenOfAvalon Quick Arts
2
3
输出样例#1:  复制
1000
2000








说明

对于100%的数据,满足 1 \leq n,m\leq 1001n,m100

代码:
#include<stdio.h>
#include<string.h>
#include<time.h>


int ans[110];
long long sum;
int main()
{
int n,m,i,j;
// clock_t strat,finishi;
// double total_time=0;
//
// strat=clock();
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;i++)
{
char a[20],b[20],c[20];
scanf("%s%s%s",a,b,c);
// printf("s:%s\n",s);
if(strlen(a)==14||strlen(b)==14||strlen(c)==14)
{
ans[i]++;
ans[i+1]++;
ans[i+2]++;
ans[i+3]++;
ans[i+4]++;
}
}

for(i=0;i<10000;i++)//这一段很重要!这一段很重要!!这一段很重要!!!
{
for(j=0;j<50000;j++)
{
sum++;
}
}

for(i=0;i<m;i++)
{
int zz;
scanf("%d",&zz);
printf("%d\n",ans[zz-1]*1000);
}
// finishi=clock();
//
// total_time=(double)(finishi-strat)/CLOCKS_PER_SEC;
// printf("time:%f\n",total_time);
return 0;
 } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值