UVa11292

来源:互联网 发布:photoshop mac中文 编辑:程序博客网 时间:2024/05/24 07:29

题意:有一个恶龙有n个头,n个头在不同的高度,m个武士,武士只能砍到比它矮的头,而雇佣武士的费用就是武士的高度值,要求以最少的费用来杀到这条恶龙。

思路:在砍一个头时,总是选取比这个头高度大但是在武士身高中最小的。

代码 如下:

#include <iostream>#include <fstream>#include <vector>#include <algorithm>using namespace std;class Solution{public:void tragonOfLoowater(vector<int> dragons, vector<int> knights){sort(dragons.begin(), dragons.end());sort(knights.begin(), knights.end());int n = dragons.size(), m = knights.size();int cur = 0;int cost = 0;for (int i = 0; i < m; i++){if (knights[i] >= dragons[cur]){cur++;cost += knights[i];if (cur >= n) break;}}if (cur < n){cout << "Loowater is doomed!" << endl;}else{cout << cost << endl;}}};Solution solver;int main(){#ifndef ONLINE_JUDGEifstream fin("f:\\OJ\\uva_in.txt");streambuf *old = cin.rdbuf(fin.rdbuf());#endifint n, m;while (cin >> n >> m){if (n == 0 && m == 0) break;vector<int> dragons, knights;for (int i = 0; i < n; i++){int v;cin >> v;dragons.push_back(v);}for (int i = 0; i < m; i++){int v;cin >> v;knights.push_back(v);}solver.tragonOfLoowater(dragons, knights);}#ifndef ONLINE_JUDGEcin.rdbuf(old);#endifreturn 0;}


原创粉丝点击