【動態規劃】【線段樹】 Codeforces Round #426 (Div. 1) B. The Bakery

給你一個序列,讓你劃分成K段,每段的價值是其內部權值的種類數,讓你最大化所有段的價值之和。

裸dp

f(i,j)=max{f(k,j-1)+w(k+1,i)}(0<=k<i)

先枚舉j,然后枚舉i的時候,用線段樹進行優化,對a(i)上一次出現的位置到i之間的f(k,j-1)的答案進行+1,然后求個i的前綴max。

要注意線段樹區間加的時候其實要包含上0。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define lson rt<<1,l,m
#define rson rt<<1|1,m+1,r
int n,m,a[35010],f[35010][60];
int maxv[35010<<2];
int delta[35010<<2];
void pushdown(int rt)//將rt結點的懶惰標記下傳 
{if(delta[rt]){delta[rt<<1]+=delta[rt];//標記下傳到左結點 delta[rt<<1|1]+=delta[rt];//標記下傳到右結點 maxv[rt<<1]+=delta[rt];maxv[rt<<1|1]+=delta[rt];delta[rt]=0;}
}
void update(int ql,int qr,int v,int rt,int l,int r)
{if(ql<=l&&r<=qr){delta[rt]+=v;//更新當前結點的標記值 maxv[rt]+=v;return ;}pushdown(rt);//將該節點的標記下傳到孩子們 int m=(l+r)>>1;if(ql<=m)update(ql,qr,v,lson);if(m<qr)update(ql,qr,v,rson);maxv[rt]=max(maxv[rt<<1],maxv[rt<<1|1]);
}
int query(int ql,int qr,int rt,int l,int r)
{if(ql<=l&&r<=qr)return maxv[rt];pushdown(rt);//將該節點的標記下傳到孩子們 int m=(l+r)>>1;int res=-2147483647;if(ql<=m)res=max(res,query(ql,qr,lson));if(m<qr)res=max(res,query(ql,qr,rson));return res;
}
int now[35010],last[35010];
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){scanf("%d",&a[i]);}for(int i=1;i<=n;++i){last[i]=now[a[i]];now[a[i]]=i;}for(int j=1;j<=m;++j){if(j!=1){memset(maxv,0,sizeof(maxv));memset(delta,0,sizeof(delta));for(int i=j-1;i<=n;++i){update(i,i,f[i][j-1],1,0,n);}}update(max(last[j],j-1),j-1,1,1,0,n);f[j][j]=j;for(int i=j+1;i<=n;++i){update(max(last[i],j-1),i-1,1,1,0,n);f[i][j]=query(j-1,i-1,1,0,n);}}printf("%d\n",f[n][m]);return 0;
}

轉載于:https://www.cnblogs.com/autsky-jadek/p/7261165.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257870.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

幾種服務器端IO模型的簡單介紹及實現(轉載)

作者&#xff1a;阿凡盧 出處&#xff1a;http://www.cnblogs.com/luxiaoxun/服務器端幾種模型&#xff1a; 1、阻塞式模型&#xff08;blocking IO&#xff09; 我們第一次接觸到的網絡編程都是從 listen()、accpet()、send()、recv() 等接口開始的。使用這些接口可以很方便的…

html細邊框表格代碼,html中表格細邊框的四種實現及其比較.doc

html中表格細邊框的四種實現及其比較?html中表格細邊框的四種實現及其比較第一種使用css!--- 華麗的分隔線。。 -- .box ?border-top-width: 1px;?border-right-width: 0px;?border-bottom-width: 0px;?border-left-width: 1px;?border-top-style: solid;?border-right-…

margin 等高布局

<div id"main"><div id"left">我是左邊的內容的啦啦啦啦。。。。<br> 我是左邊的內容的啦啦啦啦。。。。<br> 我是左邊的內容的啦啦啦啦。。。。<br> 我是左邊的內容的啦啦啦啦。。。。<br> 我是左邊的內容的啦啦啦啦…

c、c++---linux上的GetTickCount函數

http://blog.csdn.net/guang11cheng/article/details/6865992 http://wenda.so.com/q/1378766306062794

C#判斷一個類中有無指定名稱的方法

C#中可以通過反射分析元數據來解決這個問題&#xff0c;示例代碼如下&#xff1a;12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849using System;using System.Reflection;namespace Hello{class Program{static void Main(string[…

2021年高考成績查詢襄陽狀元,大膽猜測一下,2021年高考,湖北省文理狀元會花落誰家?...

隨著2021年高考的逼近&#xff0c;考生進入緊張有序的復習中&#xff0c;家長也在為孩子籌謀著哪所學校更適合&#xff0c;作為吃瓜群眾的我們&#xff0c;可能更關注今年湖北省的文理科狀元會花落誰家&#xff0c;要知道&#xff0c;一所學校如果可以出現一名高考狀元&#xf…

為什么寫Java程序需要接口

為什么寫Java程序需要接口 我之所以以這個作為標題&#xff0c;并不是為了玩噱頭&#xff0c;講一些似是而非的空話&#xff0c;還是以探索加發現&#xff0c; 追本溯源的講解一下為什么Java需要接口&#xff0c;怎么理解&#xff0c;怎么用它。 首先接口并不是Java才有的&…

《領域特定語言》一1.5使用代碼生成

1.5使用代碼生成 在迄今為止的討論中&#xff0c;要處理DSL&#xff0c;組裝“語義模型”&#xff08;第11章&#xff09;&#xff0c;然后執行語義模型&#xff0c;提供我們希望從控制器得到的行為。在語言圈子里&#xff0c;這種方式稱為解釋&#xff08;interpretation&…

SVG 基礎圖形

SVG 基礎圖形 SVG包含了以下的基礎圖形元素&#xff1a; 矩形&#xff08;包括可選的圓角&#xff09;&#xff0c;使用<rect>元素創建圓形&#xff0c;使用<circle>元素創建橢圓形&#xff0c;使用<ellipse>元素創建直線&#xff0c;使用<line>元素創…

棗莊三中高考2021成績查詢,2021棗莊中考成績查詢系統入口

2021棗莊中考成績查詢系統入口2021-05-20 19:11:35文/王佳慧2021年&#xff0c;棗莊的中考時間快到了&#xff0c;本文分享了棗莊中考成績查詢入口&#xff0c;系統開通后考生可登陸查詢成績。棗莊中考成績查詢入口志愿填報須知1.錄取標準&#xff1a;提前批、第一批、第三批學…

移動端”宴席知多少

轉載(http://adt.aicai.com/index.php/archives/179/) 瞎折騰移動端的項目已經很長一段時間了&#xff0c;并不像其它企業一樣&#xff0c;可以有項目組去完成&#xff0c;基本都是一個人瞎嘗試&#xff0c;時而web&#xff0c;時而web app。恍恍惚惚過了這段歲月&#xff0c;也…

快速的取整方法(~~)

為什么80%的碼農都做不了架構師&#xff1f;>>> 最近看一篇js裝逼小技巧————雙波浪號的妙用(將內容轉化為數字,或者小數取整)&#xff0c;但是本身我的JavaScript水平比較低對其底層操作和其使用范圍不甚了解&#xff1b;通過翻閱資料現進行簡單的整理。 ###裝…

git log友好顯示

查看commit 提交日志 $ git log $git log --prettyoneline $git reflog 顯示所有提交記錄&#xff0c;包括已經回退的提交&#xff0c;如圖&#xff1a;提交了abc 和 bb 然后回退到 abc   $git log 只顯示abc提交 可以使用 $git reset --hard commit號 回退到bb git reflog…

jprofiler_windows-x64_9_1注冊碼

L-Larry_Lau163.com#5481-ucjn4a16rvd98#6038 L-Larry_Lau163.com#36573-fdkscp15axjj6#25257 轉載于:https://www.cnblogs.com/sprinng/p/5104507.html

南理工計算機技術專業學位,南京理工大學計算機技術(專業學位)考研難嗎

很多考生在準備南京理工大學計算機技術(專業學位)考研難嗎&#xff1f;是考研報考的時候都會產生這樣的疑問&#xff1a;這個專業的研究生好嗎&#xff1f;適合我嗎&#xff1f;對我以后的人生和職業會有幫助嗎&#xff1f;考生在準備南京理工大學計算機技術(專業學位)專業考研…

《分布式系統:概念與設計》一2.3.2 體系結構模式

2.3.2 體系結構模式 體系結構模式構建在上述討論過的相對原始的體系結構元素之上&#xff0c;提供組合的、重復出現的結構&#xff0c;這些結構在給定的環境中能運行良好。它們未必是完整的解決方案&#xff0c;但當與其他模式組合時&#xff0c;它們會更好地引導設計者給出一…

javascript sort()實現元素json對象的排序

看以下代碼&#xff1a; var s [ { name: "Robin Van PurseStrings", age: 30 } ,{ name: "Theo Walcott", age: 24 } ,{ name: "Bacary Sagna", age: 28 } ].sort(function(obj1, obj2) {// 實現增序排列&#xff1a;前者的 age 小于后者…

html5手機簽名,html5手寫簽名

var canvas, board;canvas document.getElementById(myCanvas);canvas.height 300;canvas.width 400;board canvas.getContext(2d);board.lineWidth 1; //設置畫筆粗細board.strokeStyle "#f00";board.lineJoin "round"; //設置畫筆軌跡基于圓點拼接…

調查:Java程序員最傷心,C++程序員最年老

說起我們對編程世界現有的刻板印象&#xff0c;你一定聽說過類似于沒有人喜歡用Java編碼或者使用C 都是老人家&#xff0c;等等這樣的話。為了分析這些刻板印象背后的真相&#xff0c;Trestle Technology的數據工程師寫了一個工具。 不知道你有沒有聽說過微軟的Project Oxford&…

mysql一些寫常用命令

參見pcttcnc2007博客騰飛 1.mysql的status信息命令: mysql> show global status; 2.可以列出mysql服務器運行各種狀態值&#xff0c;另外&#xff0c;查詢mysql服務器配置信息語句&#xff1a; mysql> show variables; 3.連接數 經 常會遇見”mysql: error 1040: too man…