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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客网 【每日一题】6月10日 失衡天平

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网 【每日一题】6月10日 失衡天平 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:

文章目錄

    • 題目描述
    • 題解:
    • 代碼:

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld

題目描述

終于Alice走出了大魔王的陷阱,可是現在傻傻的她忘了帶武器了,這可如何是好???這個時候,一個神秘老人走到她面前答應無償給她武器,但老人有個條件,需要將所選武器分別放在天平的兩端,若天平平衡則可以將天平上的所有武器拿走,還好這個天平銹跡斑斑,只要兩端重量相差小于等于m就會保持平衡,Alice傻傻的認為越重的武器越好,求Alice最多能拿走的武器總重量。(不限操作次數)

輸入描述:

第一行2個整數 n, m; 第二行n個整數x,分別表示n件武器的重量。 1 <= n <= 100; 0 <= m <= 100; 1 <=
x <= 100;

輸出描述:

一個整數,表示Alice最多能拿走的武器總重量。

示例1
輸入

5 4 1 5 61 65 100

輸出

132

說明
可以稱兩次,第1次:(1 ; 5),第二次(61 ; 65)。
示例2
輸入

5 0 10 20 30 40 100

輸出

200

說明
稱一次,(10,20,30,40 ; 100)。

題解:

第一感覺是dp
對于每個物品我們都要做出選擇:放在天平的左邊,放在天平的右邊,不選擇。
那么我們就可以去找遞推式:
dp[i][j]表示前i樣物品進行選擇后,此時天平兩端的重量差為j的時候,最大質量是多少,我們定義這個質量差為 左減右,那么左邊放物品質量差增大,右邊放質量差變小
我們想想dp[i][j]是怎么來的?
(a[i]表示第i件物品的質量)
如果我們選擇第i件物品,放在天平的左邊,那么dp[i][j]就是從dp[ i -1 ] [ j - a [ i ] ]來的(將第i件物品選擇前,質量差為j-a[i])轉移過來
同理:如果放在天平的右邊,那么dp[i][j]就是dp[i-1][j+a[i]]轉移而來的
如果不放,那就是dp[i-1][j]直接轉移過來
我們要找到最大的情況,就是上面三個取最大值
dp[i][j] = max(dp [ i -1 ] [ j ] , d p [ i - 1 ][ j - a [ i ] ] + a [ i ] ,d p [ i - 1 ] [j +a [ i] ] + a [ i ] )
因為題目有限定這個質量差的上限,所以最后我們求出這個范圍內的最大質量即可
max(sum,dp[n][i])
大致就是這樣

代碼:

#include<bits/stdc++.h> using namespace std; const int maxn=1e5+4; int dp[100][maxn]; int a[maxn]; int max(int a,int b,int c) {if(a>=b&&a>=c)return a;else if(b>=a&&b>=c)return b;else if(c>=b&&c>=a)return c; } int main() {memset(dp,-0x3f,sizeof(dp)); // cout<<dp[0][0]<<endl;int n,m;cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];int sum=0;dp[0][0]=0;for(int i=1;i<=n;i++)for(int j=0;j<=maxn;j++){dp[i][j] = max(dp[i-1][j],dp[i-1][abs(j-a[i])]+a[i],dp[i-1][j+a[i]]+a[i]);} for(int i=0;i<=m;i++){sum=max(sum,dp[n][i]);}printf("%d",sum);return 0; }

總結

以上是生活随笔為你收集整理的牛客网 【每日一题】6月10日 失衡天平的全部內容,希望文章能夠幫你解決所遇到的問題。

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