题解 | #最大报销额#

最大报销额

https://www.nowcoder.com/practice/8ec050ca75d343cfb45a305f5a7baa73

#include <iostream>
#include <queue>
using namespace std;
priority_queue<double> heap;
double ans;
//深搜回溯求最大和
//直接贪心取值无法ac,浮点数没法dp
//把money都乘以100,小数点后两位映射到整数,就可以背包
void dfs(double sum, double q)
{
    if(sum > q) return;
    else ans = max(ans, sum);
    if(heap.empty()) return;
    double tmp = heap.top();
    heap.pop();
    //当前堆顶是否加入sum中进行深搜
    dfs(sum, q), dfs(sum + tmp, q);
    heap.push(tmp);
}
bool valid(char a, double p)
{
    if(a == 'A' || a == 'B' || a == 'C') return p <= 600.00;
    return false;
}
int main() {
    double q; 
    int n, m;
    bool flag;
    while (cin >> q >> n && n) { // 注意 while 处理多个 case
        heap = priority_queue<double>();
        while(n --)
        { 
            flag = true;
            cin >> m;
            double sum = 0.0;
            while(m --)
            {
                char a, b;
                double p;
                cin >> a >> b >> p;
                flag &= valid(a, p);
                sum += p;
            }
            if(flag && sum <= 1000 && sum <= q) 
            {
                heap.push(sum);
                // cout <<"valid : " <<sum << endl;
            }
        }
        ans = 0;
        dfs(0.0, q);
        printf("%.2lf\n", ans);
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

头像
昨天 20:19
已编辑
门头沟学院 人工智能
本文略长,献给身处双非、学院本科的低年级依旧陷入迷茫的同学,一个参考。夹杂强烈主观因素,若观点不同,仅当笑料。近日,工作之余的午休时间给母校的学弟学妹进行了宣讲,同时也接受了牛客的访谈,不约而同的触发了两个关键词考研,就业。现象今年和去年,认识的学弟学妹,来自知某、抖某、牛客等系列的学弟学妹,这次宣讲,约有20个学弟学妹来加了我的联系方式,向我取经,聊聊未来,聊聊想法。我这里简单概括一下。1.现在很迷茫,大方向摇摆就业还是考研,但是倾向考研。小方向摇摆竞赛和项目,不知道怎么去做,不知道怎么开始。2.考研的直接目的绝大多数都是为了(混)学历,根本目的就是提高就业竞争力。3.我把他们都拉了个群,在...
牛客85294058...:“私聊能够滔滔不绝,而拉了一个小群之后就完全一声不吭”个人观点这跟从小到大“不要浪费大家时间”的社会环境有关:个人化的提问,如果你上学时有留心、或者参加QA环节多,会注意到这种做法经常是被人骂的。要营造让大家开口的氛围和做出欢迎讨论的议题设置还是比较难的,期待方法探索。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
10-03 17:08
已编辑
西安电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务