斜率优化 & 凸包
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 300010; int n, s; typedef long long LL; LL t[N], c[N], f[N], q[N]; int main() { cin >> n >> s; for(int i = 1; i <= n; i ++) { cin >> t[i] >> c[i]; t[i] += t[i - 1]; c[i] += c[i - 1]; } int hh = 0, tt = 0; for(int i = 1;i <= n;i ++) { int l = hh, r = tt; while(l < r) { int mid = l + r >> 1; if((f[q[mid + 1]] - f[q[mid]]) > (t[i] + s) * (c[q[mid + 1]] - c[q[mid]])) r = mid; else l = mid + 1; } int j = q[r] ; f[i] = f[j] - (t[i] + s) * c[j] + t[i] * c[i] + s * c[n]; while(hh < tt && (double)(f[q[tt]] - f[q[tt - 1]]) * (c[i] - c[q[tt]]) >= (double)(f[i] - f[q[tt]]) * (c[q[tt]] - c[q[tt - 1]])) tt --; q[++tt] = i; } cout<<f[n]<<endl; }
运输小猫:
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 100010, M = 100010, P = 110; typedef long long LL; int n, m, p; LL d[N], t[N], a[N], s[N]; LL f[P][M]; int q[M]; LL get_y(int k, int j) { return f[j - 1][k] + s[k]; } int main() { ios :: sync_with_stdio(false); cin>>n>>m>>p; for(int i = 2; i <= n; i ++) { cin>>d[i]; d[i] += d[i - 1]; } for(int i = 1;i <= m; i ++) { int h; cin >> h >> t[i]; a[i] = t[i] - d[h]; } sort(a + 1, a + m + 1); for(int i = 1;i <= m; i ++) s[i] = s[i - 1] + a[i]; memset(f, 0x3f, sizeof f); for(int i = 0; i <= p; i ++) f[i][0] = 0; for(int j = 1; j <= p; j++) { int hh = 0, tt = 0; q[0] = 0; for(int i = 1; i <= m; i++) { while(hh < tt && (get_y(q[hh + 1], j) - get_y(q[hh], j)) <= a[i] * (q[hh + 1] - q[hh])) hh++; int k = q[hh]; f[j][i] = f[j-1][k] - a[i] * k + s[k] + a[i] * i - s[i]; while(hh < tt && (get_y(q[tt], j) - get_y(q[tt - 1], j)) * (i - q[tt]) >= (get_y(i, j) - get_y(q[tt], j)) * (q[tt] - q[tt - 1])) tt--; q[++tt] = i; } } cout<<f[p][m]<<endl; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?