国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

POJ 3661 Running 動(dòng)態(tài)規(guī)劃 刷表法

2019-11-14 09:46:15
字體:
供稿:網(wǎng)友

        是在區(qū)間DP里面看到這道題目的,于是想用區(qū)間DP弄一弄,但是考慮到10000×10000的數(shù)組而且我還不會(huì)平行四邊形優(yōu)化,只能拿到n3的復(fù)雜度,于是就放棄了區(qū)間DP的做法

        思考了大約10分鐘,發(fā)現(xiàn)根本不用區(qū)間DP嘛,定義狀態(tài)dp[i][j]表示第i分鐘疲勞度為j時(shí)走的最遠(yuǎn)距離,狀態(tài)轉(zhuǎn)移方程一下就出來了,可以選擇走或者休息

        采用了刷表法1A,但是看見網(wǎng)上的很多都沒用刷表法寫嘛

        judge[i][j]表示狀態(tài)[i][j]是否有效

        每一個(gè)狀態(tài)[i][j]可以更新到3個(gè)位置,一個(gè)是[i+1][j+1](j<m),一個(gè)是[i+j][0](i+j<=n),一個(gè)是[i+1][0](j==0)

        不是很難,就不放到100道里面去了

#include <iostream>#include <cstring>#include <algorithm>using namespace std;int dp[10005][505],n,m,d[10005];bool judge[10005][505],t=true;int main(){    ios_base::sync_with_stdio(false);    while(cin>>n>>m){        for(int i=1;i<=n;++i)            cin>>d[i];        dp[0][0]=0;        judge[0][0]=t;        for(int i=0,limi=min(i,m);i<n;limi=min(++i,m))        for(int j=0;j<=limi;++j)        if(judge[i][j]==t){            if(j<m&&(judge[i+1][j+1]!=t||dp[i+1][j+1]<dp[i][j]+d[i+1]))                judge[i+1][j+1]=t,dp[i+1][j+1]=dp[i][j]+d[i+1];            if(i+j<=n&&(judge[i+j][0]!=t||dp[i+j][0]<dp[i][j]))                judge[i+j][0]=t,dp[i+j][0]=dp[i][j];            if(j==0&&(judge[i+1][0]!=t||dp[i+1][0]<dp[i][j]))                judge[i+1][0]=t,dp[i+1][0]=dp[i][j];        }        cout<<dp[n][0]<<endl;        t^=1;    }}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄄城县| 吴江市| 宝丰县| 泰兴市| 呼伦贝尔市| 孟连| 贺州市| 太白县| 兴宁市| 内黄县| 酉阳| 柳州市| 沾益县| 讷河市| 原阳县| 射洪县| 开封市| 凤台县| 长阳| 鄂州市| 铜梁县| 始兴县| 大丰市| 东丰县| 凤台县| 台南县| 慈溪市| 兴安盟| 宣威市| 敦煌市| 苏尼特右旗| 巴彦县| 邵阳县| 南溪县| 云安县| 枝江市| 八宿县| 柘荣县| 噶尔县| 库尔勒市| 鄢陵县|