問題 1548: [藍橋杯][演算法提高vip]盾神與砝碼稱重
時間限制: 1sec 記憶體限制: 128mb 提交: 504 解決: 183
題目描述
有一天,他在宿舍裡無意中發現了乙個天平!這 個天平很奇怪,有n個完好的砝碼,但是沒有遊碼。盾神為他的發現興奮不已!於是他準備去稱一稱自己的東西。他準備好了m種物品去稱。神奇的是,盾神一早就 知道這m種物品的重量,他現在是想看看這個天平能不能稱出這些物品出來。但是盾神稍微想了1秒鐘以後就覺得這個問題太無聊了,於是就丟給了你。
資料規模和約定
1< =n< =24, 1< =m< =10.
輸入第一行為兩個數,n和m。
第二行為n個數,表示這n個砝碼的重量。
第三行為m個數,表示這m個物品的重量。
輸出輸出m行,對於第i行,如果第i個物品能被稱出,輸出yes否則輸出no。
樣例輸入
4 2樣例輸出1 2 4 8
15 16
yes思路:no
假設在左邊放物品,右邊放砝碼,那麼左邊==右邊重量時才能稱出來。
那麼我們也可以選砝碼放到左邊。這一點是關鍵。
那麼對於每乙個砝碼有三個狀態:不放、放左邊、放右邊。
**:
#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
#include#include#include#includeusing namespace std;
const int maxn=20+6;
#define mod 1000000007
#define inf 0x3f3f3f3f
int dx= ;
int dy= ;
int n,m;
int a[maxn];//西交
bool vis[maxn];
int ans;
void dfs(int now,int sum,int x)
if(now>n)
return;
dfs(now+1,sum+a[now],x);//放砝碼那邊
dfs(now+1,sum,x);
dfs(now+1,sum-a[now],x);//放物品那邊
return ;
}int main()
rep(i,1,m)
return 0;
}
盾神與砝碼稱重
有一天,他在宿舍裡無意中發現了乙個天平!這 個天平很奇怪,有n個完好的砝碼,但是沒有遊碼。盾神為他的發現興奮不已!於是他準備去稱一稱自己的東西。他準備好了m種物品去稱。神奇的是,盾神一早就 知道這m種物品的重量,他現在是想看看這個天平能不能稱出這些物品出來。但是盾神稍微想了1秒鐘以後就覺得這個問題太...
演算法提高 盾神與砝碼稱重
演算法提高 盾神與砝碼稱重 時間限制 1.0s 記憶體限制 256.0mb 提交此題 問題描述 有一天,他在宿舍裡無意中發現了乙個天平!這個天平很奇怪,有n個完好的砝碼,但是沒有遊碼。盾神為他的發現興奮不已!於是他準備去稱一稱自己的東西。他準備好了m種物品去稱。神奇的是,盾神一早就知道這m種物品的重...
演算法提高 盾神與砝碼稱重
問題描述 有一天,他在宿舍裡無意中發現了乙個天平!這個天平很奇怪,有n個完好的砝碼,但是沒有遊碼。盾神為他的發現興奮不已!於是他準備去稱一稱自己的東西。他準備好了m種物品去稱。神奇的是,盾神一早就知道這m種物品的重量,他現在是想看看這個天平能不能稱出這些物品出來。但是盾神稍微想了1秒鐘以後就覺得這個...