燃料分配问题C++贪心算法

news/2024/11/7 14:30:50/

考虑贪心,我们应该让尽可能多地机器进行工作,如果把燃料全部投入到少数几个机器上,那么很容易到达上限。而燃料越分散,则越不容易达到上限。

#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
ll n, m, k, q, t, f1, n1, f2, n2, ans;
int main() {
scanf("%lld%lld%lld%lld%lld", &n, &m, &k, &q, &t);
if (m < k) {
printf("0");
return 0;
}
if (n * k > m) n = m / k;//如果有不能启动的,那么只启动可以启动的
m -= n * k;//减去启动消耗
if (m % n) {//如果不能平分剩下的
f2 = k + m / n + 1;//f2分多1个
n2 = m % n;//人数
}
f1 = k + m / n;
n1 = n - n2;
ans += min(f1 * t, q) * n1;
ans += min(f2 * t, q) * n2;
printf("%lld", ans);
return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 5e5 + 10;
const int inf = 0x3f3f3f3f;
ll n, ans, num[maxn];
int nxt[maxn][5];
int startpos, endpos;
// -2 --> 0 // -1 --> 1
// 1 --> 3  // 2 --> 4
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> n;
    memset(nxt, 0x3f, sizeof nxt);
    for(int i = 1;i <= n; ++i) {
        cin >> num[i];
    }
    ll ret = 1, lst = num[1];
    for(int i = 2;i <= n; ++i) {
        if(num[i] == lst) ++ret;
        else {
            ans += ret * (ret + 1) / 2;
            ret = 1; lst = num[i];
        }
    }
    ans += ret * (ret + 1) / 2;
    for(int i = n;i >= 1; --i) {
        for(int j = 0;j <= 4; ++j) nxt[i][j] = nxt[i + 1][j];
        nxt[i][num[i] + 2] = i;
        int maxpos1 = nxt[i][1 + 2], maxpos2 = nxt[i][2 + 2];
        int minpos1 = nxt[i][-1 + 2], minpos2 = nxt[i][-2 + 2];
        startpos = max(maxpos2, minpos2); endpos = n + 1;
        if(startpos != inf && startpos < endpos) ans += endpos - startpos;
        startpos = max(maxpos1, minpos1); endpos = min(min(maxpos2, minpos2), (int)n + 1);
        if(startpos != inf && startpos < endpos) ans += endpos - startpos;
    }
    cout << ans << '\n';
    return 0;
}


http://www.ppmy.cn/news/824000.html

相关文章

[人工智能][转]机器学习之迭代法

浅说机器学习中“迭代法” 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(…

电影《摔跤吧!爸爸》四个触动我的瞬间

昨天晚上和女儿一起看了《摔跤吧!爸爸》&#xff0c;最开始我提议要和她一起看这个电影的时候&#xff0c;她还是有些排斥的&#xff0c;可能是因为她觉得这是大人们喜欢的印度电影&#xff0c;她一个9岁的小女孩不感兴趣&#xff0c;后来在我的“强迫”下&#xff0c;才安静坐…

产品读书《B端产品经理必修课:从业务逻辑到产品构建全攻略》

很幸运的是2019年3月份读完了这本B端产品经理必修课&#xff0c;今天也就是2019年11月25日整理书籍再次拿出来看的时候&#xff0c;自己已经身在小米&#xff0c;主要是我当时忘记这本书的作者就是现在的同事宽同学了&#xff0c;了解其人&#xff0c;更要从书中再去品味。 产品…

为什么会做的越多,错的越多

每次写文章前&#xff0c;我都会翻翻旧文&#xff0c;今天讲的观点&#xff0c;旧文其实也提过 caoz谈能力成长 - 取舍之道 那些用力过猛的员工 再谈职场中的用力过猛 但我觉得&#xff0c;还是有必要老调重弹。 产品设计&#xff0c;运营中&#xff0c;为什么做减法难&#xf…

一个技术总监的忠告:精通那么多技术为何还是做不好一个项目?

一位技术大牛根据经历过的项目&#xff0c;发自内心的经验总结和项目复盘&#xff0c;对程序员的成长帮助非常大。很诚恳和专业的一篇文章&#xff0c;很少有程序员这么关心细节质量&#xff0c;同时又有宏观视角&#xff0c;确实承载了作者十几年的修行。文章很硬核&#xff0…

【Java从入门到天黑|01】SE入门之Java的前生今世

大家好,我是孙叫兽,微信公众号【孙叫兽杂谈】,本期给大家分享一下JavaSE的入门部分之Java的前生今世。 Java : 一个帝国的诞生 C语言帝国的统治 现在是公元1995年, C语言帝国已经统治了我们20多年, 实在是太久了。 1972年, 随着C语言的诞生和Unix的问世, 帝国

充电器兼容qi是什么意思_什么是“经Qi认证”的无线充电器?

充电器兼容qi是什么意思 Andrey Suslov/Shutterstock, WPA/Qi Andrey Suslov / Shutterstock,WPA /齐 If you’ve taken the time to shop for a wireles

云中,雁门关外

大同&#xff0c;塞外&#xff0c;黄土高坡&#xff0c;云中。 晋剧、北路梆子、耍孩、数来宝&#xff0c;汇聚一堂。 这里是贾樟柯的英雄地&#xff1a;《任逍遥》《江湖儿女》皆出于此地。这里的男人说话爱拍肩膀拍胸脯拍大腿。 大同的天气四季分明&#xff0c;常年少雨&…