1 条题解

  • 1
    @ 2025-3-8 16:23:14

    乍一看这是斜率优化模板题,然而……

    注意到总大小大于 M2\dfrac{M}{2} 时再合并一定不优,因此直接 O(NM)O(NM) 也能 AC。

    #include <bits/stdc++.h>
    using namespace std;
    long long dp[100012], w[100012];
    int main()
    {
    	int n, m;
    	while (cin >> n >> m)
    	{
    		for (int i = 0; i <= n; i++)
    			dp[i] = 1e18;
    		dp[0] = 0;
    		for (int i = 1; i <= n; i++)
    		{
    			cin >> w[i];
    			w[i] += w[i - 1];
    		}
    		for (int i = 1; i <= n; i++)
    			for (int j = i - 1; j >= 0 && w[i] - w[j] <= 1000; j--)
    				dp[i] = min(dp[i], dp[j] + m + (w[i] - w[j]) * (w[i] - w[j]));
    		cout << dp[n] << endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    133
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    8
    已通过
    2
    上传者