[DP/單調隊列]BZOJ 2059 [Usaco2010 Nov]Buying Feed 購買飼料

首先我想吐槽的是題目并沒有表明數據范圍。。。

?

這個題目 DP方程并不難表示。

dp[i][j]表示前i個地點攜帶了j個貨物的最小花費

dp[i][j] = dp[i-1][k] + (j-k) * cost + j*j*(leng[i]-leng[i-1])

如果你這樣直接提交上去,恭喜你超時!!! 因為這個時間復雜度是 O(n*k^2)

所以我們需要優化一下,可以發現式子可以化簡為:

dp[i][j] = dp[i-1][k] - k * cost? + j*j*(leng[i]-leng[i-1]) +??j*cost?

dp[i][j] = dp[i-1][k] - k * cost 這一部分可以只是與k有關,這里我們可以用單調隊列進行優化,使其保持 最小值。

?

坑點1:注意數據范圍

坑點2:注意初始化

?

/**************************************************************Problem: 2059User: LYFerLanguage: C++Result: AcceptedTime:480 msMemory:61600 kb
****************************************************************/#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>#define mp(a,b) make_pair(a,b)
#define fr(a,b,c) for(int c=a;c<=b;++c)using namespace std;
typedef long long ll;const ll INF = 1e16;
ll dp[777][10005];
int n,e,k;inline int Read(){int ans = 0, flag = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch=='-') flag=-1;ch = getchar();}while(ch >= '0' && ch <= '9'){ans = ans * 10 + ch - '0';ch = getchar();}return ans * flag;
}struct task{ll now,num,cost;bool operator <(const task &x) const{return now < x.now;}
}feed[505];struct DanDiao{deque< pair<ll,int> >Q;void insert(ll x,int y){while( !Q.empty() && Q.back().first >= x) Q.pop_back();Q.push_back( mp(x,y) );}void erase(int y){while( !Q.empty() && Q.front().second <= y) Q.pop_front();}
}DD;int main(){k = Read();e = Read();n = Read();fr(1,n,i){feed[i].now = Read();feed[i].num = Read();feed[i].cost = Read();}sort(feed+1,feed+1+n);feed[++n] = (task){e,0,0};for(int i=0;i<=n;i++){for(int j=0;j<=k;j++){dp[i][j] = INF;}}dp[1][0] = 0;fr(2,n,i){DD.Q.clear();int r = 0;fr(0,k,j){while(r <= j) DD.insert(dp[i-1][r] - r*feed[i-1].cost , r) , r++;DD.erase(j - feed[i-1].num - 1);if( DD.Q.empty()) dp[i][j] = INF;else dp[i][j] = DD.Q.front().first+j*feed[i-1].cost+j*j*(feed[i].now-feed[i-1].now);}}/*for(int i=1;i<=n;i++){for(int j=0;j<=k;j++){printf("dp[%d][%d]:%d\n",i,j,dp[i][j]);}}*/printf("%lld\n",dp[n][k]);return 0;
}
AC代碼

?

轉載于:https://www.cnblogs.com/OIerLYF/p/7601218.html

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

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

相關文章

十天沖刺09

今天&#xff0c;和小伙伴在做密保功能的開發&#xff0c;而且通過密保可以找回用戶密碼。轉載于:https://www.cnblogs.com/Excusezuo/p/10923690.html

hdu 6168 Numbers

zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new number (aiaj). These new numbers could make up a new sequence b1&#xff0c;b2,...,bn(n?1)/2 . LsF wants to make some trouble. While zk is sleeping, Lsf mixed up seq…

039_MySQL_多表查詢

#創建部門 CREATE TABLE IF NOT EXISTS dept (did int not null auto_increment PRIMARY KEY,dname VARCHAR(50) not null COMMENT 部門名稱 )ENGINEINNODB DEFAULT charset utf8;#添加部門數據 INSERT INTO dept VALUES (1, 教學部); INSERT INTO dept VALUES (2, 銷售部); IN…

sqlserver 創建對某個存儲過程執行情況的跟蹤

有時候需要抓取執行存儲過程時某個參數的值&#xff0c;有時候程序調用存儲過程執行后結果不太對&#xff0c;不確定是程序的問題還是存儲過程的問題&#xff0c;需要單獨執行存儲過程看結果 即可用下面的方法 -- --創建對某個存儲過程的執行情況的跟蹤 --注意修改路徑 和 obje…

5.7 彈性盒子

彈性盒子定義彈性盒子 display&#xff1a;flex定義子元素排列方式 flex-diection定義子元素換行方式 flxe-wrap定義子元素對齊方式橫向對齊 justify-content縱向對齊 align-items 媒體查詢 media screen and (max-width:最大寬度)and &#xff08;min-width&#xff1a;最小…

4.navicat11激活教程,親測可用哦!

原文地址&#xff1a;http://blog.csdn.net/sanbingyutuoniao123/article/details/52589678Navicat是一款數據庫管理工具, 用于簡化, 開發和管理MySQL, SQL Server, SQLite, Oracle 和 PostgreSQL 的數據庫&#xff1b;Navicat數據模型工具以圖形化方式創建關聯式數據庫&#x…

漢諾塔問題深度剖析(python實現)

當我們學習一門編程語言的時候&#xff0c;都會遇到遞歸函數這個問題。而學習遞歸的一個經典案例就是漢諾塔問題。通過這篇文章&#xff0c;觀察移動三個盤子和四個盤子的詳細過程&#xff0c;您不僅可以深刻的了解遞歸&#xff0c;也更加熟悉了漢諾塔的游戲的玩法。 更好的閱讀…

iOS-QQ臨時對話、QQ群申請跳轉

QQ 臨時對話 NSString *qq [NSString stringWithFormat:"mqq://im/chat?chat_typewpa&uin%&&version1&src_typeweb","這是是QQ號碼"];NSURL *urlQQ [NSURL URLWithString:qq];[[UIApplication sharedApplication] openURL:urlQQ]; QQ 申…

[luoguP2331] [SCOI2005]最大子矩陣(DP)

傳送門 orz不會做。。。 一個好理解的做法&#xff08;n^3*k&#xff09;&#xff1a; 分n1和n2兩種情況考慮。 n1時&#xff0c;預處理出前綴和sum[]。 設f[i][j]為到達第i格&#xff0c;已經放了j個子矩陣的最大和&#xff0c; 那么每次先把f[i][j]的值設為f[i-1][j]&#xf…

想要去阿里面試?你必須得跨過 JVM 這道坎!

概述 很多人想要到阿里巴巴、美團、京東等互聯網大公司去面試&#xff0c;但是現在互聯網大廠面試一般都必定會考核JVM相關的知識積累和實踐經驗&#xff0c;畢竟線上系統寫好代碼部署之后&#xff0c;每個工程師都必須關注JVM相關的東西&#xff0c;比如OOM、GC等問題. 所以一…

醫學知識圖譜一

大綱 知識自動提取技術 醫學知識融合 醫學知識推理 轉載于:https://www.cnblogs.com/quietwalk/p/9000950.html

在一個div里,列表樣式圖片進行float,實現水平排序

<div class"xiangce"><ul> <li><a href"#"><img src"images/pic4.gif" alt"">產品名稱</a></li><li><a href"#"><img src"images/pic4.gif" alt"…

團隊開發git使用各種問題

參考:https://www.cnblogs.com/schaepher/p/4933873.html 問題-3:保持github上項目干凈&#xff0c;對于在不同機器上運行會不同的文件不予維護(如.idea/workspace.xml) 建議:對于項目輸出在項目目錄中的文件不予維護 對于IDE自動生成且與項目所在目錄有關的文件不予維護 將這些…

filebeat 亂碼

查看 文件的類型 [rootelk-node-1 rsyslog] # file 192.168.1.16.log 192.168.1.16.log: Non-ISO extended-ASCII text, with very long lines, with LF, NEL line terminators 如果命令返回結果說明改日志為utf-8&#xff0c;則logstash配置文件中charset設置為UTF-8 如果命令…

團隊編程項目代碼設計規范(爬取豆瓣電影top250)

基本格式 縮進 使用4個空格進行縮進 行寬 每行代碼盡量不超過80個字符 理由&#xff1a; 這在查看side-by-side的diff時很有幫助方便在控制臺下查看代碼太長可能是設計有缺陷換行 Python支持括號內的換行。這時有兩種情況。 第二行縮進到括號的起始處foo long_function_name(v…

程序員的浪漫

程序員的浪漫 馬上就到520了&#xff0c;各位小伙伴想好了準備什么禮物送個自己的另一半呢&#xff1f;還沒想好的注意啦&#xff01;&#xff01;現在還有機會&#xff0c;今天給大家分享一些程序員的浪漫創意禮物&#xff0c;希望你可以從中找到一些靈感。 One Link&#xff…

14-1 部署項目

1313轉載于:https://www.cnblogs.com/ZHONGZHENHUA/p/9011671.html

The listener supports no services

$ lsnrctl start 報錯提示: The listener supports no services The command completed successfully 如圖所示&#xff1a; 這樣啟動后遠程連接會報錯&#xff1a; oracle ORA-12514:TNS:listener does not currently know of service requested in connect descriptor 問題原…

Luogu P2577 [ZJOI2005]午餐

一道貪心類背包DP的好題 首先發現一個十分顯然的性質&#xff0c;沒有這個性質整道題目都難以下手&#xff1a; 無論兩隊的順序如何&#xff0c;總是讓吃飯慢的人先排隊 這是一個很顯然的貪心&#xff0c;因為如果讓吃飯慢的排在后面要更多的時間至少沒有這樣優 因此我們先按吃…

SEO【總結】by 2019年5月

2019獨角獸企業重金招聘Python工程師標準>>> 關鍵點&#xff1a; 1、代碼 1.1、seo前端代碼&#xff1a;基于Html代碼的SEOherf&#xff1a;https://my.oschina.net/u/2862573/blog/3030664 注意的要點&#xff1a; h1&#xff0c;h2的內容很關鍵 網頁的壓縮、靜態化…