中國計量大學「中競盃」程式設計競賽補題

2021-10-12 01:12:12 字數 2839 閱讀 7232

f 爬塔

高川最喜歡的遊戲當屬 slay the spire,這是一款爬塔遊戲,你需要從一座塔的底部一直爬到頂部,在爬塔的過程中,塔的每一層都有許多的寶物等你來拿。

高川從塔的左側開始攀爬,從底部爬到頂部,再從右側從頂部逐步下到底部。塔總共有 n 層,每一層都有很多寶物從左到右排列。在左側攀爬時,他只能從每層的最左邊按順序取寶物,在右側下降時,他只能從每層的最右邊按順序取寶物。每個寶物都有乙個價值,他最多拿 m 個寶物,他想知道自己從塔上下來時,最多可以拿的寶物價值和是多少

題解:一開始我用的是佇列求

後來我又用的是棧

但是都wa了

#include

#define ll long long

//#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using

namespace std;

const

long

long maxn =

1e5+7;

intmain()

}int sum=0;

for(

int i=

1;i<=m;i++)}

else

}//計算最大值的

k=v[maxn]

.size()

;if(k}else}if

(m1>=m2)

}//後方尋找

if(v[j]

[nn]

>=max)

}else

}//計算最大值的

k=v[maxn]

.size()

;if(k}else}if

(m1>=m2)}}

} sum=sum+max;

//cout(falg==0)

else

} cout<}

後來又改用vector求但是又wa了

#include

#define ll long long

#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using

namespace std;

const

long

long maxn =

1e5+7;

intmain()

} vector<

int> v1;

for(

int i=n-

1;i>=

0;i--)}

int max=0;

for(

int i=

0;i<=m;i++

)for

(int t=v1.

size()

-1;t>v1.

size()

-1-j;t--)if

(sumi+sumj>=max)

} cout<}

後來看了網上大佬的思路和**

題解:因為每一層只能從左往右或者從右往左的順序取寶物

可以先計算出每一層寶物價值的字首和與字尾和分別表示從左往右與從右往左取寶物的價值和

接著維護乙個ans陣列,ans[i][j]表示第i層取j件寶物所能達到的價值最大值

最後進行dp

#include

using

namespace std;

const

int maxn =

1e2+10;

const

int maxm =

1e4+10;

int a[maxn]

[maxn]

;int x[maxn]

,ans[maxn]

[maxn]

;int pref[maxn]

[maxn]

,suf[maxn]

[maxn]

;int dp[maxm]

;int

main()

}for

(int i=

1;i<=n;i++

)for

(int j=x[i]

;j>=

1;j--

) suf[i]

[j]=suf[i]

[j+1

]+a[i]

[j];

for(

int i=

1;i<=n;i++

)for

(int j=

0;j<=x[i]

;j++

)for

(int k=

0;j+k<=x[i]

;k++

) ans[i]

[j+k]

=max

(ans[i]

[j+k]

,pref[i]

[j]+suf[i]

[x[i]

-k+1])

;for

(int i=

1;i<=n;i++

)for

(int j=m;j>

0;j--

)for

(int k=x[i]

;k>

0;k--)if

(k<=j)

dp[j]

=max

(dp[j]

,dp[j-k]

+ans[i]

[k])

;printf

("%d\n"

,dp[m]);

return0;

}

第十七屆中國計量大學程式設計競賽(同步賽)

比賽位址 b題意 求使得兩個字串相同的最小操作次數 思路 分兩種情況,第一種如果原來sb就是全0字串,那麼只需要打擊一次空格即可操作完成,此時次數最少 第二種通過當前字元對應的已經翻轉的次數及當前字元與目標字元異同來判斷是否需要進行翻轉,分奇數次和偶數次情況,具體見下方 注釋,這裡還需要注意一下,還...

2017中國大學生程式設計競賽 網路選拔賽

01 02 03 04 05 06 07 08 09 10 11 比賽時兩題入賬,但我覺得這就是發揮出我們隊的實力了,比賽的時候感覺挺充實的,一直都在思考。題目是說給你乙個關係圖,第i個人和其他n i個人的關係給出,1代表能成為朋友,0代表不能成為朋友,當3個人及以上沒有朋友或者三個及以上都互相是朋...

2019中國海洋大學團體程式設計競賽校賽

賽事介紹 咕咕咕 知道是分錢大賽就完了 賽前 嗯,勵志要衝二等獎的,最差的得拿個三等獎,要是比三等獎還差的話就直接退隊了吧 賽中 四個小時十道題,還是比較簡單的。a和c是簽到題,結果簽到題還wa了一發,反省一下!十分鐘簽到完成,接下來就是自閉的乙個半小時,感覺i題是hash 二分,但是被隊友否定,也...