#include#include using namespace std; int main(){ int N = 42; int top = N*(N+1)/4; vector< vector > dyn; for(int i=0;i<=top;i++){ vector temp; dyn.push_back(temp); for(int j=0;j<=N;j++) dyn[i].push_back(0); } dyn[0][0] = 1; for(int i=1;i<=N;i++){ for(int j=0;j<=top;j++){ dyn[j][i] = dyn[j][i-1]; } for(int j=0;j<=top;j++){ if(i+j<=top) dyn[j+i][i] += dyn[j][i-1]; } } int res = dyn[top-1][N] / 2; cout << res << endl; return 0; }
17 Haziran 2009 Çarşamba
Olimpiyat sorusu falan
Olimpiyatta çözmeye çalıştığımız bi soru. Bir kümeyi(1..N şeklinde) öyle iki parçaya ayıracaz ki o iki parçanın elemanlarının toplamları eşit olsun. Çözüm güzel oldu, yollayayım dedim. Kimse çözemeyince çözümü anlatan ermana teşekkür etmekteyiz buradan.
Kaydol:
Kayıt Yorumları (Atom)

Bunun bide sayıları 1 ile hayvan(INF) arasında verdiği sorusu var. knapsack yemiyo onda, onada uğraş istersen ;) (Ayrıca taktir ettim bu kadar okuyanla istikrarlı bir şekilde yazmana) -Osman Aka
YanıtlaSil