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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

[BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草

發(fā)布時(shí)間:2023/11/27 生活经验 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1606: [Usaco2008 Dec]Hay For Sale 購(gòu)買(mǎi)干草

Time Limit:?5 Sec??Memory Limit:?64 MB
Submit:?1335??Solved:?989
[Submit][Status][Discuss]

Description

約翰遭受了重大的損失:蟑螂吃掉了他所有的干草,留下一群饑餓的牛.他乘著容量為C(1≤C≤50000)個(gè)單位的馬車,去頓因家買(mǎi)一些干草.??頓因有H(1≤H≤5000)包干草,每一包都有它的體積Vi(l≤Vi≤C).約翰只能整包購(gòu)買(mǎi), 他最多可以運(yùn)回多少體積的干草呢?

Input

第1行輸入C和H,之后H行一行輸入一個(gè)Vi.

Output

最多的可買(mǎi)干草體積.

Sample Input

7 3 //總體積為7,用3個(gè)物品來(lái)背包
2
6
5


The wagon holds 7 volumetric units; three bales are offered for sale with
volumes of 2, 6, and 5 units, respectively.

Sample Output

7 //最大可以背出來(lái)的體積

HINT

?

Buying the two smaller bales fills the wagon.

?

Source

Silver

?

Analysis

針對(duì)性優(yōu)化的背包類DPqwq

一開(kāi)始口胡了一個(gè)貪心(降序排序后枚舉最大值,然后開(kāi)始遍歷arr往addup里塞草包,如果當(dāng)前值不合法就跳過(guò)找下一個(gè)值),居然過(guò)了!!!

好吧,還是被CZL一波Hack... 果然是數(shù)據(jù)太水

后來(lái)被LLQ一波對(duì)拍打出了問(wèn)題所在:

如果正解有不連續(xù)的元素,貪心會(huì)被輕松卡掉(比如5 4 3 2,以上策略優(yōu)先選5+4然后跳過(guò)5)

?

Code

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #define maxn 100000
 5 using namespace std;
 6 
 7 int arr[maxn],n,T,ans;
 8 
 9 bool cmp(const int a,const int b){
10     return a>b;
11 }
12 
13 int main(){
14     scanf("%d%d",&T,&n);
15     
16     for(int i = 1;i <= n;i++){
17         scanf("%d",&arr[i]);
18     }
19     
20     sort(arr+1,arr+1+n,cmp);
21     
22     for(int i = 1;i <= n;i++){
23         int addup = 0;
24         for(int j = i;j <= n;j++){
25             if(addup+arr[j] <= T){
26                 addup += arr[j];
27             }
28         }
29         ans = max(ans,addup);
30     }
31     
32     printf("%d",ans);
33     
34     return 0;
35 }
神奇的貪心版本
 1 #include<cstdio>
 2 #include<iostream>
 3 #define maxn 1000000
 4 using namespace std;
 5 
 6 int DP[maxn],n,m,cnt;
 7 
 8 int main(){
 9     
10     scanf("%d%d",&n,&m);
11     
12     for(int i = 1;i <= m;i++){
13         scanf("%d",&cnt);
14         DP[cnt] = 1;
15         for(int j = n;j >= cnt;j--){
16             DP[j] = DP[j]|DP[j-cnt];
17         }
18     }
19     
20     int ans = n;
21     while(!DP[ans]) ans--;
22     
23     printf("%d",ans);
24     
25     return 0;
26 }
針對(duì)性優(yōu)化背包版本

轉(zhuǎn)載于:https://www.cnblogs.com/Chorolop/p/7460523.html

總結(jié)

以上是生活随笔為你收集整理的[BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。