国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

HDOJ(HDU).1864 最大報銷額 (貪心)

2019-11-08 01:52:20
字體:
來源:轉載
供稿:網友

HDOJ(HDU).1864 最大報銷額

題意分析

題目有點問題,原題中說的


單項物品的價值不得超過600元

應該是單類物品的價值不能超過600元。

一開始以為是01背包,后來按貪心寫過了。

一張一張發票處理,讀入一整張發票的數據。然后檢查一下里面是否有不能報銷的類別(即除ABC)以外的其他類。然后看一下單類的價錢是否超過600。如都滿足題目所說能夠報銷的要求,則把它存到b數組里面,接著對b數組按照金額降序排序,結合給的經費,先報銷大的,再報銷小的,遍歷一遍即可。

代碼總覽

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 35using namespace std;double b[nmax];double a[26];void check(int pos){ double sum = 0; bool can = true; for(int i = 0 ;i<=25;++i){ sum+=a[i]; if(i<3){ if(a[i]>600) can = false; }else if(i >=3){ if(a[i]!=0) can = false; } } if(can) b[pos] = sum;}bool cmp(double a ,double b){ return a>b;}int main(){ //freopen("in.txt","r",stdin); int n; double m; while(scanf("%lf %d",&m,&n) && n){ memset(b,0,sizeof(b)); for(int i = 1; i<=n; ++i){ int ca; scanf("%d",&ca); char c; double t; memset(a,0,sizeof(a)); for(int j = 1; j<=ca;++j){ scanf(" %c:%lf",&c,&t); a[c-'A']+=t; } check(i); } double t; sort(b+1,b+1+n,cmp); t = m; double cnt = 0; for(int i =1;i<=n;++i ){ if(b[i]<=t) {t-=b[i];cnt+=b[i];} }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富平县| 个旧市| 江华| 漠河县| 青铜峡市| 长寿区| 双牌县| 鄯善县| 宝清县| 陕西省| 宾川县| 交口县| 宁陵县| 沅陵县| 彭山县| 广平县| 竹山县| 明水县| 山西省| 景宁| 克东县| 施秉县| 姜堰市| 怀柔区| 新化县| 浪卡子县| 遂川县| 渭源县| 和田县| 亚东县| 尼勒克县| 新建县| 扎兰屯市| 台中市| 广宁县| 登封市| 彩票| 浦东新区| 长沙县| 宣恩县| 汶川县|