日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷P1510-精卫填海(01背包)

發布時間:2024/3/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P1510-精卫填海(01背包) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述:

【問題描述】

發鳩之山,其上多柘木。有鳥焉,其狀如烏,文首,白喙,赤足,名曰精衛,其名自詨。是炎帝之少女,名曰女娃。女娃游于東海,溺而不返,故為精衛。常銜西山之木石,以堙于東海。——《山海經》

精衛終于快把東海填平了!只剩下了最后的一小片區域了。同時,西山上的木石也已經不多了。精衛能把東海填平嗎?

事實上,東海未填平的區域還需要至少體積為v的木石才可以填平,而西山上的木石還剩下n塊,每塊的體積和把它銜到東海需要的體力分別為k和m。精衛已經填海填了這么長時間了,她也很累了,她還剩下的體力為c。

輸入格式:

輸入文件的第一行是三個整數:v、n、c。

從第二行到第n+1行分別為每塊木石的體積和把它銜到東海需要的體力。

輸出格式:

輸出文件只有一行,如果精衛能把東海填平,則輸出她把東海填平后剩下的最大的體力,否則輸出’Impossible’(不帶引號)。

輸入輸出樣例:

輸入 #1復制

100 2 10 50 5 50 5

輸出 #1復制

0

輸入 #2復制

10 2 1 50 5 10 2

輸出 #2復制

Impossible

說明/提示:

【數據范圍】

對于20%的數據,0<n<=50。

對于50%的數據,0<n<=1000。

對于100%的數據,0<n<=10000,所有讀入的數均屬于[0,10000],最后結果<=c。

AC Code:?

#include<bits/stdc++.h> using namespace std; #define N 10010 int v,n,c,dp[N],tl[N],tj[N]; int main() {scanf("%d %d %d",&v,&n,&c);for(int i=1;i<=n;i++) {scanf("%d %d",&tj[i],&tl[i]);//分別為相應的體積和耗費的體力 }for(int i=1;i<=n;i++) {for(int j=c;j>=tl[i];j--) {dp[j]=max(dp[j],dp[j-tl[i]]+tj[i]);}}if(dp[c]<v) {//無法填平東海 printf("Impossible\n");}else {for(int i=1;i<=c;i++) {//循環查找精衛在多少體力時就已經將東海填平 if(dp[i]>=v) {//大于需要的體積表示此時已經填平 printf("%d\n",c-i);//c為精衛的總體力,i為填平東海耗費的體力,相減即為剩余的體力 break;}}}return 0; }

總結

以上是生活随笔為你收集整理的洛谷P1510-精卫填海(01背包)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。