1. 程式人生 > >洛谷 P2695 騎士的工作

洛谷 P2695 騎士的工作

個人 print ref 描述 round -o name spa 如果

                      洛谷 P2695 騎士的工作

題目背景

你作為一個村的村長,保衛村莊是理所當然的了.今天,村莊裏來了一只惡龍,他有n個頭,惡龍到處殺人放火。你著急了。不過天無絕人之路,現在來了一個騎士團。裏面有m位成員(往下看)

題目描述

每個人都可以砍掉一個大小不超過(<=)z的頭,要money個金幣,求最小花費。

輸入輸出格式

輸入格式:

第一行兩個整數 n m

下接n行,一個整數 表示n個頭的大小。

下接m行,每個人可以砍的頭大小或金幣(金幣==頭的大小)。

輸出格式:

一個整數,最小花費。如果無解,輸出“you died!”

輸入輸出樣例

輸入樣例#1: 復制
2 3
5 
4
7 
8
4
輸出樣例#1: 復制
11

說明

1<=n,m<=20000

思路:排序+枚舉 難度:普及/提高-

#include<algorithm>
#include<cstdio>
using namespace std;
int n, m, k = 1;
int sum, tot;
int a[20005], b[20005];

int main() {
    scanf("%d%d", &n, &m);
    if(n > m) {
        printf(
"you died!"); return 0; } for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= m; i++) scanf("%d", &b[i]); sort(a+1, a+n+1); sort(b+1, b+m+1); for(int i = 1; i <= n; i++) for(int j = k; j <= m; j++) if(a[i] <= b[j]) { sum
+= b[j]; k = j+1; tot++; break; } if(tot == n) printf("%d", sum); else printf("you died!"); return 0; }

洛谷 P2695 騎士的工作