国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

動態(tài)規(guī)劃。第十三次

這篇具有很好參考價值的文章主要介紹了動態(tài)規(guī)劃。第十三次。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

2024.2.28

**************************************************************************************************************

題目鏈接:P1002 [NOIP2002 普及組] 過河卒 - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

?思路:用dfs其實也可以寫,不過這道題目會超時。由于題目上說只能往右邊還有下面走,所以每一點的條數(shù)是其左邊的條數(shù)加上右邊的條數(shù),關(guān)系式為f(x,y)=f(x-1,y)+f(x,y-1);

具體方法注釋在代碼上了:


#include<bits/stdc++.h>
using namespace std;
int x,y,n,m;//(x,y)為b點坐標(biāo),(n,m)為馬的坐標(biāo)
int p[30][30]={0};
long long f[30][30]={0};

int tx[9]={0,2,2,1,1,-1,-1,-2,-2};//馬的八種走法加上本來處于的那個點
int ty[9]={0,1,-1,2,-2,2,-2,1,-1};

int main()
{
    //輸入
    scanf("%d%d%d%d",&x,&y,&n,&m);
    x+=2;//防止越界,直接從2開始
    y+=2;
    n+=2;
    m+=2;
 
    //馬對應(yīng)的特殊點進(jìn)行賦值,賦為一,表示不可走
    for(int i=0;i<9;i++)
    {
        int mx=n+tx[i];
        int my=m+ty[i];
        p[mx][my]=1;
    }
    //由于每個點是左邊的條數(shù)加右邊的條數(shù),起始點也如此,
    //所以在起始點的左邊或者上方任意一點賦為1即可
    f[2][1]=1;
    //遞推的計算f(x,y)
    for(int i=2;i<=x;i++)
    {
        for(int j=2;j<=y;j++)
        {
            if(p[i][j]==1)
            {
                f[i][j]=0;
                continue;
            }
            f[i][j]=f[i-1][j]+f[i][j-1];
        }
    }
    //輸出
    printf("%lld\n",f[x][y]);
    return 0;
}

**************************************************************************************************************

題目鏈接:P1216 [USACO1.5] [IOI1994]數(shù)字三角形 Number Triangles - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

思路:從上往下太復(fù)雜,直接從下往上看,上面一排的分別加上下面對應(yīng)的兩個數(shù),哪個大哪個就更新哪個值,以此類推

看代碼:


#include<bits/stdc++.h>
using namespace std;
//為了簡單,從下往上看,倒數(shù)第二排的第一位數(shù)分別加倒數(shù)第一排的第一位數(shù)和第二位,
//哪個大就更新哪個值

int arr[1005][1005];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(int i=n-1;i>0;i--)
    {
        for(int j=1;j<=i;j++)
        {
            arr[i][j]=max(arr[i+1][j]+arr[i][j],arr[i+1][j+1]+arr[i][j]);
        }
    }
    printf("%d\n",arr[1][1]);
    return 0;
}

**************************************************************************************************************

2.29?

題目:?P1802 5 倍經(jīng)驗日 - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

思路:如下圖,一個一個填上去會知道一整個流程是什么,分兩種情況,一種是比對手多,則可以選擇贏和不贏,比較贏和不贏那個大取哪個值,若比對手少只能輸,則加上輸?shù)慕?jīng)驗,并且每一個前面的都是算好的其最大的,所以不用去加很多層的了,直接去加一個就好了,就如if? esle里面的語句動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

這里有很好的講解:【五倍經(jīng)驗日【洛谷P1802】-嗶哩嗶哩】 https://b23.tv/wRz7wkX


#include<cstdio>
#include<iostream>
using namespace std;

long long a[1005][2];//代表輸贏,【0】輸,【1】
long long b[1005];  //用來儲存至少使用的藥數(shù)量
long long f[1005];   //獲得的經(jīng)驗

int main()
{
    int n,x;
    scanf("%d%d",&n,&x);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld",&a[i][0],&a[i][1],&b[i]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=x;j>=0;j--)
        {
            if(j>=b[i])
            {
                f[j]=max(f[j]+a[i][0],f[j-b[i]]+a[i][1]);
            }
            else
            {
                f[j]+=a[i][0];
            }
        }
    }
    printf("%lld\n",5*f[x]);
    return 0;
}

**************************************************************************************************************

題目:P1616 瘋狂的采藥 - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

思路:用dp,用兩個一維數(shù)組將數(shù)據(jù)分別存起來,然后dp【】里面的是時間,dp的值是最大價值,比較不采的與采藥的價值取最大值,其中采藥時的時間要花費了所以才會減去tim【i】

#include<bits/stdc++.h>
using namespace std;

long long tim[10005];//用來儲存時間
long long v[10005];//用來儲存價值
long long dp[10000005];//儲存最大價值,注意!要用long long 
int main()
{
    int t,m;
    scanf("%d%d",&t,&m);//時間和草藥數(shù)目
    for(int i=1;i<=m;i++)
    {
        scanf("%lld%lld",&tim[i],&v[i]);
    }
    for(int i=1;i<=m;i++)//草藥數(shù)目
    {
        for(int j=tim[i];j<=t;j++)
        {
            dp[j]=max(dp[j],dp[j-tim[i]]+v[i]);
        }
    }
    printf("%lld",dp[t]);
    return 0;
}

**************************************************************************************************************

題目:P1439 【模板】最長公共子序列 - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

最長公共子序列:不要求元素之間連續(xù)

思路:【樸素法】

定義一個二維數(shù)組dp【i】【j】以【0,i-1】number1的長度,和以【0,j-1】長度的number2兩串最長公共子序列

if(number1[i-1]==number2[j-1])

{d[i][j]=dp[i-1][j-1]+1;}

dp[i][j-1]【意思比如abc與ace少考慮e】? ??dp[i]-1[j]【意思比如abc與ace少考慮c】

把dp[i][0]和dp[0][j]初始化為0其他誰便初始化為啥都行,因為都會被覆蓋

for(int i=1;i<=number1.size;i++)

for(int j=1;j<=number2.size;j++)

最終結(jié)果為:dp[number1.size()][number2.size()]; i

這是代碼:顯然是不適合這題的,需要進(jìn)行優(yōu)化

#include<bits/stdc++.h>
using namespace std;

int n1[100005];
int n2[100005];
int dp[10005][10005];

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&n1[i]);
    }
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&n2[i]);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(n1[i]==n2[j])
            {
                dp[i][j]=dp[i-1][j-1]+1;
            }
            else
            {
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
            }
        }
    }
    printf("%d\n",dp[n][n]);
    return 0;
}

動態(tài)規(guī)劃。第十三次,動態(tài)規(guī)劃,算法

?優(yōu)化后用一維數(shù)組,否則數(shù)據(jù)太多已經(jīng)超出外面所承受的二維數(shù)組范圍了

【暫時還沒有會優(yōu)化后的方法,等會了再補上,先交一下總結(jié)吧】文章來源地址http://www.zghlxwxcb.cn/news/detail-839852.html

到了這里,關(guān)于動態(tài)規(guī)劃。第十三次的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 算法第十五期——動態(tài)規(guī)劃(DP)之各種背包問題

    目錄 0、背包問題分類 1、?0/1背包簡化版 【代碼】 2、0/ 1背包的方案數(shù) 【思路】

    2023年04月09日
    瀏覽(26)
  • 【夜深人靜學(xué)數(shù)據(jù)結(jié)構(gòu)與算法 | 第十篇】動態(tài)規(guī)劃

    【夜深人靜學(xué)數(shù)據(jù)結(jié)構(gòu)與算法 | 第十篇】動態(tài)規(guī)劃

    目錄 前言: 動態(tài)規(guī)劃: 常見應(yīng)用: 解題步驟: ?動態(tài)規(guī)劃的簡化步驟: 案例: 509. 斐波那契數(shù) - 力扣(LeetCode) 70. 爬樓梯 - 力扣(LeetCode) 62. 不同路徑 - 力扣(LeetCode) 總結(jié): ? ? ? ? 本文我們將為大家講解一下動態(tài)規(guī)劃的理論知識,并且會講解幾道力扣的經(jīng)典例題。

    2024年02月11日
    瀏覽(30)
  • 【夜深人靜學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法 | 第十二篇】動態(tài)規(guī)劃——背包問題

    【夜深人靜學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法 | 第十二篇】動態(tài)規(guī)劃——背包問題

    ? 目錄 ?前言: ?01背包問題: 二維數(shù)組思路: 一維數(shù)組思路: 總結(jié): ? ? ? 在前面我們學(xué)習(xí)動態(tài)規(guī)劃理論知識的時候,我就講過要介紹一下背包問題,那么今天我們就來講解一下背包問題。 在這里我們只介紹 01背包 ,至于分組背包和混合背包這種的已經(jīng)屬于競賽級別的

    2024年02月12日
    瀏覽(19)
  • 算法第十三天-解碼方法

    算法第十三天-解碼方法

    來自【宮水三葉】 基本分析 我們稱一個解碼內(nèi)容為一個 item 。 根據(jù)題意,每個 item 可以由一個數(shù)字組成,也可以由兩個數(shù)字組成。 數(shù)據(jù)范圍為100,很具有迷惑性,可能會有不少同學(xué)會想使用DFS進(jìn)行暴力搜索。 我們可以大致分析一下這樣子的做法是否可行:不失為一般性的

    2024年01月22日
    瀏覽(13)
  • 【馬蹄集】第十六周——動態(tài)規(guī)劃專題

    【馬蹄集】第十六周——動態(tài)規(guī)劃專題

    難度:鉆石 ?? 時間限制:1秒 ?? 占用內(nèi)存:128M 題目描述 給出一個長度為 n n n 的序列 A A A ,選出其中連續(xù)且非空的一段使得這段和最大。 格式 輸入格式:第一行是一個整數(shù),表示序列的長度 n n n ; ?????第二行有 n n n 個整數(shù),第 i i i 個整數(shù)表示序列的第 i i

    2024年02月11日
    瀏覽(54)
  • 第十三周代碼(動態(tài)規(guī)劃1)(持續(xù)更新)

    第十三周代碼(動態(tài)規(guī)劃1)(持續(xù)更新)

    動態(tài)規(guī)劃第十二周也寫了一部分,只不過忘記放上去了。 新的一年啦,看到這里砸個祝福:新年快樂,身體健康,考試順利,心想事成! 【解題思路】 其實新出生半分鐘吃一個是干擾項,實際上是一分鐘吃一個 【參考代碼】 【輸出結(jié)果】? 分為線性DP,狀態(tài)壓縮DP,數(shù)位

    2024年02月01日
    瀏覽(48)
  • 考研算法第十三天:二叉排序樹 【二叉排序樹的插入和遍歷】

    考研算法第十三天:二叉排序樹 【二叉排序樹的插入和遍歷】

    這道題很妙。題目給的二叉排序樹好像沒學(xué)過其實就是二叉查找樹。然后這道題主要的就是思路 ? ? 1.先找到那個要刪除節(jié)點所在處 ? ? 2.找到之后處理分三種情況 ? ? 刪除的節(jié)點是葉節(jié)點,直接刪除即可 ? ? 刪除的節(jié)點只有右節(jié)點或者左節(jié)點 將左節(jié)點或者右節(jié)點刪除即可

    2024年02月05日
    瀏覽(21)
  • 秒懂百科,C++如此簡單丨第十九天:動態(tài)規(guī)劃

    秒懂百科,C++如此簡單丨第十九天:動態(tài)規(guī)劃

    目錄 動態(tài)規(guī)劃的初步理解 求最短路徑數(shù) 洛谷 P1002 過河卒? 題目描述 輸入樣例 輸出樣例? 思路 AC Code The greatest glory in living lies not in never falling, but in rising every time we fall. 生命中最大的榮耀不在于從未跌倒,而在于每次跌倒后都能重新站起來。 什么是動態(tài)規(guī)劃?最直白的理解

    2024年02月19日
    瀏覽(19)
  • 【運動規(guī)劃算法項目實戰(zhàn)】如何實現(xiàn)三次樣條插值(附ROS C++代碼)

    三次樣條插值是一種廣泛應(yīng)用于數(shù)據(jù)擬合和插值的方法。它通過使用三次多項式在給定的一組數(shù)據(jù)點之間進(jìn)行插值,以實現(xiàn)平滑的擬合效果。三次樣條插值的優(yōu)點是可以平滑地擬合給定的數(shù)據(jù)點,而不會產(chǎn)生震蕩或振蕩現(xiàn)象。 三次樣條插值是機器人路徑規(guī)劃中常用的一

    2024年02月14日
    瀏覽(30)
  • (藍(lán)橋杯第十一屆決賽)試題D:本質(zhì)上升序列(動態(tài)規(guī)劃)

    (藍(lán)橋杯第十一屆決賽)試題D:本質(zhì)上升序列(動態(tài)規(guī)劃)

    先把題目中的字符串給出來:tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl 分析:雖然這只是一道填空題,但是我覺得這個還是有一定的思考意義的,所以我今天就把他

    2023年04月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包