Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:USACO,chapter 1In Reply To:USACO,chapter 1 Posted by:tzkq at 2010-06-19 16:29:36 写了一个,还好,通过了。 再仔细想想,用矩阵来做有什么好处呢? 可以处理更强的数据,当模量为40的时候,效率一样,只是求解的参数不同,矩阵的本质和高斯消元相同,使用起来更抽象。 int i,k,v[9],A[9],I[][9]={ { -1, 3, -1, 3, -1, -2, -1, -2, 4}, { 2, -1, 2, -1, 2, -1, -3, 4, -3}, { -1, 3, -1, -2, -1, 3, 4, -2, -1}, { 2, -1, -3, -1, 2, 4, 2, -1, -3}, { 2, -1, 2, -1, -3, -1, 2, -1, 2}, { -3, -1, 2, 4, 2, -1, -3, -1, 2}, { -1, -2, 4, 3, -1, -2, -1, 3, -1}, { -3, 4, -3, -1, 2, -1, 2, -1, 2}, { 4, -2, -1, -2, -1, 3, -1, 3, -1}}, T[]={4, 8, 4, 8, 4, 8, 4, 8, 4};//a'解 int main(){ for(i=0;i<9;i++){ scanf("%d",&k); v[i]=(4-k)%4; } for(i=0;i<9;i++)for(k=0;k<9;k++)A[i]+=v[k]*I[k][i];//矩阵乘法 while(1){//寻找整数解 for(i=0;i<9&&0<=A[i]&&A[i]%5==0;i++); if(i==9)break; for(i=0;i<9;i++)A[i]+=T[i]; } for(i=0;i<9;i++)for(k=A[i]/5%4;k--;)printf("%d ",i+1); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator