首页 > 其他分享 >AT_abc374_f Shipping

AT_abc374_f Shipping

时间:2024-10-07 18:48:52浏览次数:8  
标签:int 发出 Shipping 包裹 long abc374 MAXN include

原题链接

不难发现一次发出一定是 \(a_i+kx,k\in \mathbb{Z}\) 的时刻,因为你一次发出不然就是可以发出抓紧发出,否则肯定是要等到下一次有新包裹要发出再发出,不然你中间等待没意义。也就是说相当于从一个时刻开始连续发送若干次。

设 \(f_{i,j}\) 为在第 \(i\) 个包裹到达时,总共有 \(j\) 个包裹还没发出时,已发出包裹的发出时间和的最小值。

转移时枚举 \(i,j\),再不断发出包裹,直至没有包裹要发出。每次发出一些包裹,然后时间 \(+x\),再将这 \(x\) 时间内的新到达的包裹数加上,转移到下一个包裹到达时。总时间复杂度 \(O(n^3)\)。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string.h>
#define int long long
#define ll long long
using namespace std;
const int MAXN=110,INF=1e15;
int n,k,x,t[MAXN],f[MAXN][MAXN],ans;
signed main()
{
#ifndef ONLINE_JUDGE
    freopen("in.in","r",stdin);
    freopen("out.out","w",stdout);
#endif
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(0);
    memset(f,0x3f3f3f,sizeof(f));
    cin>>n>>k>>x;f[0][0]=0;
    for(int i=1;i<=n;++i) cin>>t[i],ans-=t[i];
    for(int i=1;i<=n;++i)
    {
        for(int j=0;j<i;++j) f[i][j]=min(f[i][j],f[i-1][j]);
        for(int j=i;j;--j) f[i][j]=f[i][j-1];f[i][0]=INF;
        for(int j=1;j<=i;++j)
        {
            int now=j,tim=t[i],sum=0,k=i+1;
            while(now)
            {
                int cur=min(now,::k);
                sum+=cur*tim,now-=cur,tim+=::x;
                for(;k<=n&&t[k]<tim;++k) ++now;
                f[k][now]=min(f[k][now],f[i][j]+sum);
            }
        }
    }
    cout<<(ans+f[n+1][0])<<'\n';
}

标签:int,发出,Shipping,包裹,long,abc374,MAXN,include
From: https://www.cnblogs.com/int-R/p/18450405/AT_abc374_f

相关文章

  • 题解:AT_abc374_c [ABC374C] Separated Lunch
    无耻的广告更好的阅读体验~最近在搞个人博客博客园的差点忘了更了。已经沦落到在写这种水题题解了。题目翻译有\(n\)队人,每个队人数不同,把他们分成2组(同一队的不能拆开),使两组人数差距尽量小。形式化题意:有\(n\)个数,把它们分成两组,使两组和的差尽量小。说句闲话:感觉这......
  • ABC374 E 题解
    ABC374E题解E-SensorOptimizationDilemma2题目链接:AT|洛谷容易发现答案可以二分。于是我们把问题转化为了判定性问题:给定目标\(x\),能否在花费不超过预算的情况下,使得每个过程的产量都不低于\(x\)?进一步,由于各个过程的生产互不相关,所以我们要尽可能让每个过程的费......
  • [题解]ABC374 A~E
    A-Takahashisan2直接判断字符串是否以san结尾即可。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){ strings; cin>>s; intn=s.size(); if(s[n-1]=='n'&&s[n-2]=='a'&&s[n-3]=='s')cout<<&......
  • ABC374E 题解
    好题。爱做。标签:二分。求最大的最小值,考虑二分答案。然后问题就转化成了(求\(n\)次):有两种物品,每种物品有一个代价和价值,求获得不少于给定价值所需的最小代价。下文记物品的代价为\(w\),价值为\(v\),所拿的数量为\(cnt\)。假设有两种物品\(S\)与\(T\),\(S\)物品的性价比......
  • 题解:AT_abc374_d [ABC374D] Laser Marking
    看到\(n\le6\),就知道这道题又是一道搜索了。题面有点长,信息也给的有点多,但稍微分析就可以得到只需要搜索印刷线段的顺序即可。具体的,我们在深搜函数里面传\(4\)个参数,分别代表已选线段的数量,当前位置的横纵坐标,以及当前时间。为了方便,我们表示的是已经印刷完当前线段后的时间......
  • [题解]AT_abc195_d [ABC195D] Shipping Center
    思路一个简单的贪心,对于每一次操作,我们假设我们能用盒子的大小的数组处理成\(a\)。那么,我们可以对\(a\)进行从小到大排序。然后,对于我们所有的箱子,我们可以以\(w\)为关键字,从小到大排序。接着,我们可以进行暴力枚举,对于\(a_i\),我们要取的必定为\(\max_{w_j\leqa_i}(v_j......
  • Oracle EBS - How Are Shipping Dates Calculated? (Doc ID 1076040.1)
    OracleShippingExecution-Version11.5.10.2to12.2.10[Release11.5.10to12.2]Informationinthisdocumentappliestoanyplatform.<br* ***GOALHowdoesE-BusinessSuite(EBS)derivetheMaterialTransactionDate?WhatisthepurposeoftheIniti......
  • SAP MM SPED输出报错-No authorization for delivery from shipping point US##-之对
    SAPMMSPED输出报错-NoauthorizationfordeliveryfromshippingpointUS##-之对策   前日收到某客户业务人员上报的一个问题,说是发现某个公司间STO单据的外向......