博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CF833B The Bakery
阅读量:6342 次
发布时间:2019-06-22

本文共 2127 字,大约阅读时间需要 7 分钟。

题意

将一个长度为\(n\)的序列分为\(k\)

使得总价值最大
一段区间的价值表示为区间内不同数字的个数
\(n<=35000,k<=50\)

Sol

首先可以设状态\(f[i][j]\)

表示前\(i\)个数字分成\(j\)段的最大价值
\(f[i][j] = max\){
\(f[l][j - 1] + Query(l + 1, i)\)}\((0 <= l <= i - 1)\)
\(Query(l + 1, i)\)表示\(l+1\)\(i\)的不同数的个数

然后

你会发现
\(i\)这个位置上的数上次的位置为\(lst\)
则枚举到这个数字后,\(lst\)\(i-1\)这些\(f\)都要加\(1\)
那么就可以枚举\(k\)
然后每次重构线段树,把上一次分的\(f\)放进去
查询+区间加法

# include 
# define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(4e4 + 5);IL int Input(){ RG int x = 0, z = 1; RG char c = getchar(); for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1; for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48); return x * z;}int n, k, a[_], mx[_ << 2], tag[_ << 2], f[_], lst[_], id[_];IL void Build(RG int x, RG int l, RG int r){ tag[x] = 0; if(l == r){ mx[x] = f[l]; return; } RG int mid = (l + r) >> 1; Build(x << 1, l, mid), Build(x << 1 | 1, mid + 1, r); mx[x] = max(mx[x << 1], mx[x << 1 | 1]);}IL void Modify(RG int x, RG int l, RG int r, RG int L, RG int R){ if(L <= l && R >= r){ ++mx[x], ++tag[x]; return; } RG int mid = (l + r) >> 1; if(L <= mid) Modify(x << 1, l, mid, L, R); if(R > mid) Modify(x << 1 | 1, mid + 1, r, L, R); mx[x] = max(mx[x << 1], mx[x << 1 | 1]) + tag[x];}IL int Query(RG int x, RG int l, RG int r, RG int L, RG int R){ if(L <= l && R >= r) return mx[x]; RG int mid = (l + r) >> 1, ans = 0; if(L <= mid) ans = Query(x << 1, l, mid, L, R); if(R > mid) ans = max(ans, Query(x << 1 | 1, mid + 1, r, L, R)); return ans + tag[x];}int main(RG int argc, RG char *argv[]){ n = Input(), k = Input(); for(RG int i = 1; i <= n; ++i) a[i] = Input(), lst[i] = id[a[i]], id[a[i]] = i; for(RG int i = 1; i <= k; ++i){ Build(1, 0, n), Fill(f, 0); for(RG int j = i; j <= n; ++j){ Modify(1, 0, n, lst[j], j - 1); f[j] = Query(1, 0, n, 0, j - 1); } } printf("%d\n", f[n]); return 0;}

转载于:https://www.cnblogs.com/cjoieryl/p/8589720.html

你可能感兴趣的文章
全智慧的网络:思科十年来最具颠覆性的创新
查看>>
怎样将现有应用迁移到 VMware NSX
查看>>
赛门铁克收购以色列移动安全初创公司Skycure 旨在构建网络安全防御平台
查看>>
《Photoshop蒙版与合成(第2版)》目录—导读
查看>>
“最佳人气奖”出炉!4月27号,谁能拿到阿里聚安全算法挑战赛的桂冠?
查看>>
《网页美工设计Photoshop+Flash+Dreamweaver从入门到精通》——2.6 图层与图层样式...
查看>>
今天的学习
查看>>
面试必问之JVM原理
查看>>
mysql主主同步+Keepalived
查看>>
研究音频编解码要看什么书
查看>>
tomcat远程调试配置
查看>>
QuartZ Cron表达式
查看>>
性能测试工具VTune的功能和用法介绍
查看>>
音频视频组件Audio DJ Studio for .NET更新至v10.0.0.0丨附下载
查看>>
RMAN Complete Recovery
查看>>
[ CodeForces 1064 B ] Equations of Mathematical Magic
查看>>
NYOJ-15:括号匹配(二)
查看>>
首次记录在案的
查看>>
C#进阶系列——WebApi 跨域问题解决方案:CORS
查看>>
错误:“产品订单的调度参数没有被定义”
查看>>