有價值分別為 \(1..6\) 的大理石各 \(c_1\sim c_6\) 塊,現要將它們分成兩部分,使得兩部分價值之和相等,問是否可以實現。
其中大理石的總數不超過 \(20000\)。
一類常見的多重揹包模型。注意由於兩部分的價值之和 \(sum=\sum i\times a_i\),價值相等則必然說明 \(sum\) 為偶數。
然後,我們可以將問題看成:有面額 \(1\sim 6\) 的紙幣 \(a_1\sim a_6\) 張,問能否組成面額 \(\dfrac 2\)。直接使用多重揹包二進位制拆分即可。
#include using namespace std;
#define rep(ii,aa,bb) for(re int ii = aa; ii <= bb; ii++)
#define rep(ii,aa,bb) for(re int ii = aa; ii >= bb; ii--)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef pairpii;
const int maxn = 2e5 + 5;
namespace io_readwrite
while(c >= 48 &&c <= 57)
x *= f;return;
} inline void readchar(char &c)
template inline void write(t x)
template inline void writeln(t x)
}using namespace io_readwrite;
int n, c[10], w[10], sum;
bool f[maxn];
inline void work(int v)
int main ()
memset(f, 0, sizeof f);
f[0] = 1;
rep(i, 1, n)
puts(f[sum >> 1] ? "can" : "can't"); }
return 0;
}
318 劃分大理石
題目 有價值分別為1 6的大理石各a 1 6 塊,現要將它們分成兩部分,使得兩部分價值之和相等,問是否可以實現。其中大理石的總數不超過20000。輸入格式 輸入包含多組資料!每組資料佔一行,包含6個整數,表示a 1 a 6 當輸入為0 0 0 0 0 0時表示輸入結束,且該行無需考慮。輸出格式 每組...
1 2 劃分核心
1.2.劃分核心 第 1 章 第一章 裝置驅動簡介 在 unix 系統中,幾個併發的程序專注於不同的任務.每個程序請求系統資源,象計算能力,記憶體,網路連線,或者一些別的資源.核心是個大塊的可執行檔案,負責處理所有這樣的請求.儘管不同核心任務間的區別常常不是能清楚劃分,核心的角色可以劃分 如同圖核心...
2劃分的實現
1.定義 2劃分,是指多個事物作為乙個集合s,把集合s的事物分成兩部分。而這樣的不同劃分有多少個,即為2劃分數。例如,s 則2劃分有 a b,c b a,c c a,b 2劃分數為3.2.演算法實現 假設s的大小為n,即有n個元素。那麼相對於s的不同劃分有 2的 n 1 次方 減 1 個。所以,用乙...