题目背景
你说的对,但是《原神》是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」的幻想世界,在这里,被神选中的人将被授予「神之眼」,导引元素之力。你将扮演一位名为「旅行者」的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴们,和他们一起击败强敌,找回失散的亲人——同时,逐步发掘「原神」的真相。
因为你的素养很差,我现在每天玩原神都能赚 150 原石,每个月差不多 5000 原石的收入, 也就是现实生活中每个月 5000 美元的收入水平,换算过来最少也 30000 人民币,虽然我 只有 14 岁,但是已经超越了中国绝大多数人(包括你)的水平,这便是原神给我的骄傲的资本。
毫不夸张地说,《原神》是 miHoYo 迄今为止规模最为宏大,也是最具野心的一部作品。即便在经历了 8700 个小时的艰苦战斗后,游戏还有许多尚未发现的秘密,错过的武器与装备,以及从未使用过的法术和技能。
尽管游戏中的战斗体验和我们之前在烧机系列游戏所见到的没有多大差别,但游戏中各类精心设计的敌人以及 Boss 战已然将战斗抬高到了一个全新的水平。就和几年前的《塞尔达传说》一样,《原神》也是一款能够推动同类游戏向前发展的优秀作品。
题目描述
原神中有一个魔法师,她可以打出 n 次火元素攻击魔法和 m 次冰元素攻击魔法,每次攻击的伤害分别为 1,2,⋯ ,a1,a2,⋯,an 和 1,2,⋯ ,b1,b2,⋯,bm。
元素攻击之间存在如下反应规则:
-
每次元素攻击可以给没有元素附着的怪物附着相应的元素,初始时怪物没有元素附着;
-
如果用火元素攻击打到冰元素附着的怪物身上,那么本次伤害将 ×2×2,并清空元素附着;
-
如果用冰元素攻击打到火元素附着的怪物身上,那么本次伤害将 ++k,并清空元素附着。
现在魔法师可以任意安排攻击顺序,也就是说,每次攻击过后,魔法师可以从自己没有使用过的魔法中任意挑选一种使用。她希望最大化总伤害,请问最大总伤害是多少。
输入格式
第一行三个整数 ,,n,m,k。
第二行 n 个整数 1,2,⋯ ,a1,a2,⋯,an。
第三行 m 个整数 1,2,⋯ ,b1,b2,⋯,bm。
输出格式
一行一个整数,表示答案。
输入输出样例
输入 #16 7 3 1 1 4 5 1 4 1 9 1 9 8 1 0输出 #1
67输入 #2
5 3 5 1 4 2 8 5 7 1 4输出 #2
50输入 #3
1 1 0 2 3输出 #3
7
OK,那么接下来就是咱们的贪心过程,为啥是贪心?不要问了因为我一开始想的是搜索看了眼n的范围
就直接换思路了,然后呢过了一个月?当时没做出来,思路都没有,时至今日,思路有了,也是正确的,虽然代码实现不是很理想,但是起码算对70?
从题来看,元素反应的次数很明显是n,m中最小的那一个,这一点很关键.
接下来就是怎么进行,如果咱们的火元素比较厉害,乘个2大于K的话,就用它,不大于就用+k,是不是很简单?毕竟贪心嘛,难在思考(呜呜)
接下来是代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=10000010; 4 long long n,m,k,a[N],b[N],res,num; 5 bool cmp(long a,long b) 6 { 7 return a>b; 8 } 9 int main() 10 { 11 cin>>n>>m>>k; 12 // int x=(n+m)/2; 13 for(int i=0;i<n;i++) cin>>a[i],res+=a[i]; 14 for(int i=0;i<m;i++) cin>>b[i],res+=b[i]; 15 sort(a,a+n,cmp); 16 for(int i=0;i<min(n,m);i++) if(a[i]>k) res+=a[i],num++;//使用火进行反应的次数 17 res+=k*(min(n,m)-num); 18 cout<<res; 19 return 0; 20 }
标签:原神,个题,int,res,元素,附着,攻击,我焯 From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17435680.html