勇者斗恶龙

你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(砍掉所有的头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个致敬不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。

输入格式:输入包含多组数据。每组数据的第一行为正整数n和m(1<=n,m<=20000);以下n行每行为一个整数,即恶龙每个头的直径;以下m行每行为一个整数,即每个骑士的能力。输入结束标志为n=m=0.

输出格式:对于每组数据,输出最少花费。如果无解,输出“Loowater is doomed!”。

样例输入

2 3

5

4

7

8

4

2 1

5

5

10

0 0

样例输出

11

Loowater is doomed!

 

c++

//勇者斗恶龙 UVa 11292

#include<iostream>
#include<algorithm>
using namespace std;

int dragon[200001] = {0};    //恶龙头的直径
int knight[200001] = {0};    //骑士的势力值

int main() {
   int n = 0;   //恶龙头的个数
   int m = 0;   //骑士的人数

   while (cin >> n >> m && n != 0 && m != 0) {
	  for (int i = 0; i < n; i++) {
		 cin >> dragon[i];
	  }
	  for (int j = 0; j < m; j++) {
		 cin >> knight[j];
	  }

	  //进行排序,方便后续比较并求最小值
	  sort(dragon, dragon + n);
	  sort(knight, knight + m);

	  int minCost = 0;
	  int i = 0;
	  int j = 0;

	  while (1) {
		 if (knight[j] >= dragon[i]) {   //骑士可以砍掉恶龙的头
			minCost += knight[j];
			i++;
			j++;
		 }
		 else {
			j++;
		 }
		 if (i == n || j == m) {  
			break;
		 }
	  }

	  if (i == n) {   //恶龙的头已被砍完
		 cout << minCost << endl;
	  }
	  else {
		 cout << "Loowater is doomed!" << endl;
	  }

   }
   return 0;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的勇者恶龙游戏的JAVA代码,但需要说明的是,这只是一个简单的示例,如果您想要开发一个完整的游戏,需要更多的时间和精力。 以下是一个简单的勇者恶龙游戏的JAVA代码: ```java import java.util.Random; import java.util.Scanner; public class DragonSlayerGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); //初始化勇者恶龙的属性 int heroHP = 100; int dragonHP = 200; System.out.println("勇者恶龙游戏开始!"); while (true) { //勇者攻击 int heroAttack = random.nextInt(20) + 1; System.out.println("勇者发起了攻击,造成了 " + heroAttack + " 点伤害!"); dragonHP -= heroAttack; //判断恶龙是否死亡 if (dragonHP <= 0) { System.out.println("恭喜你,击败了恶龙!"); break; } //恶龙攻击 int dragonAttack = random.nextInt(30) + 1; System.out.println("恶龙发起了攻击,造成了 " + dragonAttack + " 点伤害!"); heroHP -= dragonAttack; //判断勇者是否死亡 if (heroHP <= 0) { System.out.println("很遗憾,勇者恶龙击败了!"); break; } //打印当前的血量 System.out.println("勇者的血量:" + heroHP); System.out.println("恶龙的血量:" + dragonHP); //等待用户输入 System.out.println("请按回车键继续游戏..."); scanner.nextLine(); } } } ``` 以上代码实现了一个简单的勇者恶龙游戏,每次游戏中,勇者恶龙都会攻击对方,直到其中一方的血量降为0,游戏结束。 请注意,这只是一个简单的示例,您需要更多的时间和精力来完善和优化这个游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值