wikioi 1166矩陣取數遊戲

2021-06-21 20:33:03 字數 1660 閱讀 1940

本質上就是乙個在一行中頭尾取數情況下求出分數最大值。設d【i,j】表示該行從i到j的合併分數

則d[i,j]=2*max;

由於時間比較晚了,可能不夠時間寫高精度,先存普通版本演算法

#include#include#include#define maxn 100

int map[maxn][maxn];

int d[maxn][maxn];

int main(void) }

for(a=1;a<=n;a++)

for(i=m-1;i>=1;i--)

}r+=d[1][m];

} printf("%d\n",r);

return 0;

}

50分**

#include#include#include#define maxn 100

#define max 100

typedef struct

bigint;

bigint change(char ch)

return a;

}bigint addtion(bigint a,bigint b)

c.len=i-1;

if(c.n[c.len+1]!=0)

c.len++;

return c;

}bigint plus(bigint a,int b)

c.n[i+1]+=(a.n[i]*b)/10;

} c.len=a.len;

if(c.n[c.len+1]!=0)

c.len++;

return c;

}void print(bigint a)

printf("\n");

}int compare(bigint a,bigint b)

else

d[i][j]=y;

}} r=addtion(r,d[1][m]);

} print(r);

return 0;

}

c++100**

#include#include#includeusing namespace std;

const int maxdigit=30+10;

struct bign

}f[80+10][80+10],_pow[80+10],ans;

bign two=(bign)};

bign operator + (bign a,bign b)

if(c.num[c.dig+1]>0)

c.dig++;

return c;

} bign operator * (bign a,bign b)

if(c.num[c.dig+1]>0)

c.dig++;

return c;

} bign operator * (bign a,int b)

return c;

} bign _max(bign a,bign b)

for(int i=ans.dig;i>=1;i--)

printf("%d",ans.num[i]);

printf("\n");

return 0;

}

wikioi 1166 矩陣取數遊戲

問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m 的矩陣,矩陣中的每個元素aij均 為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有乙個得分值,為每行取數的得分之和,...

矩陣取數遊戲 Codevs 1166

題目位址 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的 n m 的矩陣,矩陣中的每個元素 ai j 均為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共 n 個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有乙個得分值,為每行取數的...

1166 矩陣取數遊戲 區間dp 高精度

2007年noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m 的矩陣,矩陣中的每個元素aij均 為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元...