垃圾裝袋(標記法) 標記思想

2022-03-11 05:11:35 字數 1411 閱讀 2844

時間限制: 1 sec  記憶體限制: 128 mb

提交: 360  解決: 84

[提交] [狀態] [討論版] [命題人:admin]

題目描述

某城市環衛部門需要對分布在城市中不同地點的 n 堆(編號為 1 到 n)垃圾進行裝袋處 理。現在有 m 個(編號為 1 到 m)垃圾袋可以使用。 

乙個容量為 v 的垃圾袋能裝入不超過容量為 v 的垃圾,一堆垃圾要求只能用乙個垃圾 袋來裝,乙個垃圾袋也只能用來裝一堆垃圾(即乙個垃圾袋不能在兩個地方裝垃圾)。乙個 垃圾袋的**是由垃圾袋的容量來決定,容量為 v 的垃圾袋**為 v。 

請程式設計幫環衛部門計算要將 n 堆垃圾全部裝袋,用掉的垃圾袋最少值多少錢? 

輸入輸入共 3 行。 

第 1 行兩個正整數 n 和 m,表示需要處理 n 堆垃圾,現在有 m 個垃圾袋。 第 2 行 n 個整數,依次表示每堆垃圾的容量。 

第 3 行 m 個整數,依次表示每個垃圾袋的容量。 

輸出輸出共 1 行。 輸出乙個整數,如果能將所有的垃圾裝入已有的袋子,則輸出用掉的垃圾袋最少值多少 

錢?如果無法將所有的垃圾裝入 m 個袋子,則輸出「-1」。 

複製樣例資料

3 4

3 6 4

4 5 7 3

樣例輸出

14
提示

有3堆垃圾,4個袋子,第1堆容量為3的垃圾用第4個容量為3的袋子裝,第2堆容 

量為6的垃圾用第3個容量為7的袋子裝,第3堆容量為4的垃圾用第1個容量為4的袋子 裝,所以用掉的垃圾袋最少值3+7+4=14。

30%的測試點輸入資料保證1≤n,m≤1000 

70%的測試點輸入資料保證1≤n,m≤10000 

100%的測試點輸入資料保證1≤n,m≤50000,每個垃圾袋的容量和每處垃圾的容量 不超過10000。 

#include#includeusing namespace std;

bool cmp(long long int a,long long int b)

int main()

,n,m,i,j,count,sum;

scanf("%lld%lld",&n,&m); //輸入資料

for(i=0;ifor(i=0;isort(a,a+n,cmp); //sort對兩組資料從小到大排序

sort(b,b+m,cmp);

j=0,sum=0,count=0;

for(i=0;i}

}for(i=0;i}

if(count==n)

printf("%lld\n",sum);

else

printf("-1\n");

return 0;

}

匈牙利標記法

字首 資料型別 by byte 無符號字元 b 或 f bool int f表示 flag cchar 或 wchar 或 tchar clrcolorref cx,cy int,表示x或y的長度,c表示 count 計數 dwdword 無符號長整型 fn函式h控制代碼 iint 整型 llong...

匈牙利標記法

許多windows程式設計師都使用 匈牙利標記法 作為變數命名約定.這是為了紀念具有傳奇色彩的微軟程式設計師 charles simonyi.這種標記法非常簡單,即變數名以表明該變數資料型別的小寫字母開始.例如,szcmdline的字首sz表示 以零結束的字串 string zero 常用的變數名字...

sublime text 高亮標記法

我就不寫多的設定了。直接說方法 1 先裝package control ctrl 開啟命令列,copy進去如下 import urllib.request,os pf package control.sublime package ipp sublime.installed packages pat...