hdu 6408 From ICPC to ACM贪心模拟

ACM-ICPC WorldFinal Problems(2000~2010) ACM-ICPC WorldFinal Problems,2000~2010间的所有WF问题集 立即下载

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6408

刚刚到学校火车坐的想死。。

拜读了大佬的代码,有两个思路上的新理解吧。。

1、还是降维吧,给了一个材料费用一个组装费用。将第i天最小的材料费用计算出来。本来想的是要n^2去计算,后来发现只要和前一天进行比对即可,因为两天如果材料来源相同,差别只在于i-1到i天的存储费用

2、计算某天某材料花费时,用ss表示类似存储费用前缀和一样的东西,在存储的时候减去到当前为止的存储费用,取的时候再加上卖电脑那一天的存储费用,结果就是中间的费用和了

 

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define mod 1000000007
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,m,n) for(int i=m;i>=n;i--)
#define LL long long
#define lan(a,b) memset(a,b,sizeof(a))
using namespace std;

const int N=50005;
int c[N],d[N],m[N],p[N],e[N],R[N],E[N];

        int n;
LL pin()
{
    multiset<pair<LL,int>> w;
    LL s=0,ss=0;
    LL ans=0;

    For(i,0,n-1)
    {
        w.insert(make_pair(m[i]-ss,p[i]));
        s+=p[i]-d[i];
        while(!w.empty()&&d[i]>0)
        {
            auto c=*w.begin();
            w.erase(w.begin());
            if(c.second<=d[i])
            {
                ans+=(LL)(c.first+ss)*c.second;
                d[i]-=c.second;
            }
            else
            {
                ans+=(LL)(c.first+ss)*d[i];
                c.second-=d[i];
                d[i]=0;
                w.insert(c);
            }
        }
        if(d[i])return -1;
        ss+=E[i+1];
        LL req=s-e[i+1];
        s=min(s,(LL)e[i+1]);
        while(req>0)
        {
            auto c=*(--w.end());
            w.erase(--w.end());
            if(c.second<=req)
                req-=c.second;
            else
            {
                c.second-=req;
                req=0;
                w.insert(c);
            }
        }

    }
    return ans;
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        For(i,0,n-1)scanf("%d%d%d%d",&c[i],&d[i],&m[i],&p[i]);
        For(i,1,n-1)scanf("%d%d%d",&e[i],&R[i],&E[i]);

        For(i,1,n-1)
        {
            c[i]=min(c[i],c[i-1]+R[i]);
            m[i]+=c[i];
        }
        m[0]+=c[0];
        printf("%lld\n",pin());

    }
    return 0;
}

 

腾讯云运维工程师认证TCA--真题(最新2022.11) 解析:云原生应用的12要素,1.基准代码:一份基准代码,多份部署;解析:腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。解析:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。解答:云原生五大关键技术:微服务、容器化、DevOps、持续交付。 阅读详情

相关推荐

DrMOS电路仿真

将驱动电路与功率MOS集成化后既是DrMOS。把驱动芯片以及上下桥MOSFET封装在一起,这样每一相供电就有了单独的驱动芯片,并且这种高度整合的MOSFET可以通过更高的电流、发热比传统的MOSFET也小很多且更节能 自举升压同步BUCK高低侧栅驱动电路原理及仿真 ...

Srambler的博客 5039

2018 Multi-University Training Contest 8-1012:From ICPC to ACM(模拟+贪心)

  题目大意: 这道题目题意比较复杂,但是仔细分析以后模型还是比较简单的。。。 题意就是接下来有n个月, ci di mi pi 分别表示第 i 个月的原材料价格,客户要求的计算机数量,mi表示生产一台计算机的人工成本,pi表示这个月能生产的计算机数量。 同时我们可以预先储存一些原材料和计算机,对于储存的原材料的数量没有限制,计算机数量有限制,并且储存需要一定的成本。 ei Ri Ei...

污miao汪的博客 388

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

【数据结构】【平衡树】【贪心】HDU6408 From ICPC to ACM

题意: 题意非常的鬼畜。。。 你经营着一家电脑公司,需要满足一些客户的需♂求。 每个月,你可以购买电脑配件(误),每单位价格为cicic_i 每个月需要制造didid_i台电脑,每制造一台电脑,需要一单位的电脑配件,然后外加mimim_i的人工费。而且每个月最多制造pipip_i台电脑。 然后电脑和配件都可以储存。 从第i个月存到第i+1i+1i+1个月,最多储存eieie_i台电脑,...

氧化钠的博客 475

Unity 热更 之 【HybirdCLR】+【YooAsset】 [安卓 Android端] [代码 + 资源热更] 功能的 简单实现演示

Unity热更有很多方案,各种lua热更,ILRuntime等,这里介绍的是YooAsset+HybridCLR的热更方案,HybridCLR负责更新c#代码,YooAsset负责更新资源。HybridCLR是一种创新的解决方案,专为 Unity 游戏开发中的热更新需求设计。它通过结合解释执行和 Ahead-of-Time (AOT) 编译技术,为跨平台的游戏开发提供了一种高效的热更新机制。原生C#热更新体验,开发工作流与传统Unity C#开发几乎相同,零学习和使用成本。

仙魁XAN 3866

HDU6408 From ICPC to ACM

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6408 一上场读完这题,大概是个费用流防AK题吧,果然晚上dls讲题也说他第一眼费用流线段树加速找增广路(这什么东西哇,然后就跳过了,比完赛看了题解后,感觉以前noip最后3套模拟,cy的题有一道勇者斗恶龙也是这样,先不管用没用,先放进一个堆了,要用的时候再取最优的出来,算一蛤代价。这题有几个需要想到的...

binarycopycode 418

LPDDR6 Efficiency Mode 技术探讨

LPDDR6 Efficiency Mode 技术探讨

zilan23的博客 1159

HDU 6408 From ICPC to ACM(贪心+map)

Description 一个工厂要供应顾客kkk个月的需求,第iii个月工厂买入原料的代价为cicic_i,一份材料可以生产一台电脑,工本费为mimim_i,产量至多为pipip_i,而顾客需求量为didid_i,第iii个月生产出的电脑和买的原料可以存储起来,存储一台电脑一个月的租金为EiEiE_i,储存一份原料一个月的租金为RiRiR_i,仓库可以储存无限的材料,但是至多只能储存eieie_...

ZSQ 554

机器学习实战1-四种算法对比对客户信用卡还款情况进行预测与模型评估

大家好,我是微学AI,今天给大家带来一个机器学习实战案例:利用机器学习的四种算法对比对客户信用卡还款情况进行分类。信用卡又叫贷记卡,是由商业银行或信用卡公司对信用合格的消费者发行的信用证明。现在的年轻人,特别是80后,90后甚至00后到喜欢超前消费,每个人名下多多少少都有至少一张信用卡,有些人由于过度超前消费,导致下个月无法还款导致的逾期,这样会对个人征信产生影响,今天我们就来分析分析具有哪些特性的人会有信用卡逾期的可能。

微学AI的博客 4710

基于opencv的鱼群检测和数量统计识别鱼群密度带界面

摘要:本项目利用OpenCV图像处理技术实现了视频鱼类自动检测计数系统。通过背景减除、形态学处理和轮廓检测等方法,在视频帧中标记鱼类并统计数量。系统包含视频读取、前景提取、轮廓分析、中心点跟踪等核心功能,可实时显示计数结果。适用于水产养殖、生态监测等领域,具有实用价值。未来可通过参数优化、引入深度学习和多目标跟踪技术进一步提升准确性。(147字)

1720

HDU - 6408 - From ICPC to ACM(贪心)

HDU - 6408 - From ICPC to ACM 题意: 已知 k 个月每个月的具体信息,求满足客人需求的最小花费。 每个月的信息如下: ci 表示第 i 个月的原材料价格 di 表示第 i 个月需要卖出的电脑数量(顾客在第 i 个月的需求) mi 表示第 i 个月生产一台电脑的花费 pi 表示第 i 个月能生产的电脑数量   ei 表示第 i 个月可以存到下个月的电...

vloai 526

专转本-信息通信技术-笔记

专转本-信息通信技术-笔记

大今野 1365

补题:2018HUD暑期多校训练第八场-From ICPC to ACM(hdu-6408)(贪心+数据结构)

题目链接: hdu-6408 题目大意: 给你k个月,告诉你每个月原材料的价格,用户需求量,组装电脑价格,公司最大产量 以及从本月到下一个月,电脑可存放量,原材料存放价格,电脑存放价格 求k个月下来,公司是否可以满足用户需求,如果可以输出最小成本,否则输出-1 解题思路: 由题目可知,原材料的存储量是无限的,那么我们是否可以贪心的使用原材料价格最小的去组装电脑(当然这里需要考虑上存放...

永不止步的博客 452

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HDU 6408

题意: 一个公司生产电脑,生产n个月。每个月生产时,原材料的价格、加工费的价格、生产能力、客户需求量是不同的。每个月可以多生产一些电脑,也可以多购买一些原材料储存起来,但每个月储存原材料、电脑的花费也是不一样,而且每个月储存电脑的仓库容量还不一样。问在满足客服要求的前提下,最经济的花费。 题解: 首先是要满足需求,所以我们每个月都按照最大生产力生产,可以理解为假生产,当要卖出去是才是真生产。...

Spy97的博客 460

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU6406 Taotao Picks Apples(2018HDU多校联赛第八场,线段树)

Problem Description There is an apple tree in front of Taotao’s house. When autumn comes, n apples on the tree ripen, and Taotao will go to pick these apples. When Taotao picks apples, Taotao s...

riba2534的博客 752

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 6407 Pop the Balloons

题意:Ex打气球,气球爆了会吹飞同行同列的气球,求引爆K次气球使所有气球消失的方案数。 行列:N&lt;=12 , M&lt;=20 。K &lt;=20 各种分析,然后发现你只能打K行,每行每列只能打一个,那么就二进制枚举呗(N&lt;=12) 然后一个状压DP就行了, 从左到右枚举列 , 如果这列除了这K行外还有气球存在,那么这列一定要引爆一个,否则可以不引爆,但是最多只能引爆一个。...

Freopen的博客 538

【状压DP】HDU6407 Pop the Balloons

分析: 实质上很水的状压DP题。。。。。 因为m≤12m≤12m\leq12,可以枚举哪些行被消除了,在状压转移删除的列 首先枚举一个maskmaskmask表示要删除哪些行 设dp[i][j]dp[i][j]dp[i][j]表示前i列已经被消除的行的状态为j,其中jjj为maskmaskmask的子集 对于当前这一列,如果每一个有位置的行都被j覆盖了,那么就只能直接转移 如果存在一个...

氧化钠的博客 356

hdu 6301 Distinct Values(贪心)题解

题意:长为n的串,给你m个区间,这些区间内元素不重复,问这样的串字典序最小为? 思路:用set保存当前能插入的元素,这样就能直接插入最小元素了。对操作按l排序,因为排过的不用排,所以两个指针L,R是一直右移的。L右移肯定是增加set中元素,R右移有两种可能:一是L在R右边,R只是负责赶路赶到操作区间;二是L在R左边,那么R右移是在扩大区间,并且对数组中元素进行插入。 代码: #include...

weixin_33842304的博客 156

【2018杭电多校Round8 L】From ICPC to ACM

题意 一共有k个月 第i个月原材料价格为c_i ,制造一台电脑要花费一个原材料和m_i元,最多能生产p_i台电脑,客户需求d_i台, 当月卖出的原材料和电脑不收取存储费用,没用完的原材料和电脑可以留到下个月 第i个月能存放e_i台电脑价格为E_i,存放原材料容量无限价格为R_i 求满足每个月客户需求的最小成本 分析 因为原材料存储容量无限,如果这个月的c_i加上R_i+1小于c_i+1...

weixin_30621711的博客 189

2018 Multi-University Training Contest 8 - From ICPC to ACM

贪心 + 模拟 预处理出最便宜的原材料价格,然后用map储存每种价格的电脑数量。 这里因为每个月价格都在变化,所以可以用相对价格,也就是减去一个sigema(e[i])。 每次选择最小的卖,统计贡献,最后如果超出库存,反着删除即可(相当于没有生产这些电脑) #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define full...

weixin_30739595的博客 170

HDU-1237 纯模拟

Problem Description: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 Input 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 Output 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 Sample Input...

刷题记录 361

ACM 竞赛 中 时间复杂度分析 及 每种复杂度的最大循环次数

      在竞赛中,一般算机一秒能运行5 x 10^8次汁算,如果题目給出的时间限制カ1s,那么你选择的算法执行的汁算次数最多应该在10^8量级オ有可能解决这个题目。一般 O(n)的算法能解决的数据范围在n &lt; 10^8。       O(n *logn)的算法能解决的数据范围在n &lt;= 10^6。       O(n*sqrt(n) )的算法能解决的数据范围在n &lt;...

Romantic Chopin in C Sharp Minor 8002

2018-12-08 acm日常 HDU - 2005(简单模拟)

J - Problem J HDU - 2005 第几天? 给定一个日期,输出这个日期是该年的第几天。 Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。 Output 对于每组输入数据,输出一行,表示该日期是该年的第几天。 Sample Input 1985/1/20 2006/3/12 Sa...

Gidear 209

ACM:平衡树(1)——Treap

题目来源:          HihoCoder1325   题目描述:     定义一个包含数字的集合,集合的初始情况为空。给定下面两种操作:         插入:向集合中添加一个数字k。         询问:询问集合中不超过k的最大数字。 题目要求对于每次询问,输出对应的答案。  解答:     本题可以用一个线性表来存储集合中的数字,对于每次询问,遍历一

<code> I am a coder </code> 1692

冰水挑战 HDU - 6495(贪心 + DP)

https://vjudge.net/problem/HDU-6495 思路: 用d[i][j]表示前i个挑战做j个体力值的最大值,类似于一种贪心策略,就是让体力值尽可能的大,这样就保证了会有更多的可能去完成更多的挑战。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ma...

sunmaoxiang的博客 266
上一篇: hdu 6406
下一篇: codeforces 1023D Array Restoration 线段树
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值