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:求大神指点。discuss里的测试数据全部过了。咋还是WA。。。In Reply To:求大神指点。discuss里的测试数据全部过了。咋还是WA。。。 Posted by:274856653 at 2018-11-18 09:12:31 > #include <stdio.h> > #include <string.h> > #include <stdlib.h> > #include <string.h> > > #define MAX_N 11003 > > int Visit[MAX_N]; > int Storage[MAX_N]; > > int N = 0, K = 0, iWholeNum = 0; > initVariable() > { > int i = 0; > for(i=0; i<MAX_N; i++) > { > Visit[i]=0; > Storage[i]=0; > } > } > > printfTest() > { > int i = 0; > printf("the storage \n"); > for(i = 0; i<=N; i++) > { > printf("the i is %d, Storage[i] is %d\n", i, Storage[i]); > } > > printf("the visit \n"); > for(i = 0; i<=N; i++) > { > printf("the i is %d, Visit[i] is %d\n", i, Visit[i]); > } > } > > > int main() > { > int i = 0, j = 0, k = 0; > int iVacumm = 0; > int iMove = 0; > int iTemp = 0,iLast = 0, iCycle = 0; > int iFileSn = 0; > > initVariable(); > scanf("%d %d",&N, &K); > for(i = 0; i<K; i++) > { > scanf("%d", &iFileSn); > // printf("i is %d, iFileSn is %d\n", i, iFileSn); > for(j = 0; j<iFileSn; j++) > { > iWholeNum++; > scanf("%d", &Storage[iWholeNum]); > Visit[Storage[iWholeNum]] = iWholeNum; > // printf("j is %d, Storage[iWholeNum] %d, Visit[[Storage[iWholeNum]]] is %d\n", j, Storage[iWholeNum], Visit[Storage[iWholeNum]]); > > } > } > //for(i = 0; i<=N; i++) > //{ > // printf("the i is %d, Visit[i] is %d\n", i, Visit[i]); > //} > > for(i = N; i>=1; i--) > { > if( 0 == Visit[i]) > { > iVacumm = i; > break; > } > } > // printf("the iVacumm is %d\n", iVacumm); > > for(i = 1; i<=iWholeNum; i++) > { > if(i != Storage[i]) > { > if(0 == iMove) > iMove = 1; > > // printf("i is %d, Visit[i] is %d\n", i, Visit[i]); > if(0 == Visit[i]) > { > > printf("%d %d\n", Storage[i], i ); > Visit[Storage[i]] = 0; > Visit[i] = i; > Storage[i] = i; > }else > { > iTemp = i; > > while(Visit[iTemp]) > { > // printf("iTemp %d, Visit[iTemp] is %d\n", iTemp, Visit[iTemp]); > iTemp = Visit[iTemp]; > if(i == Visit[iTemp]) > { > // printf("the Cycle \n"); > iCycle = 1; > break; > } > > } > iLast = iTemp; > > // printf("the final iTemp is %d, Storage[iTemp] is %d, iCycle is %d, iLast is %d\n",iTemp, Storage[iTemp], iCycle, iLast); > if (1==iCycle) > { > //printf("Cycle\n"); > printf("%d %d\n", iTemp, iVacumm); > Visit[iTemp] = 0; > iTemp = Storage[iTemp]; > while(1) > { > printf("%d %d\n",iTemp, Visit[iTemp]); > Visit[Visit[iTemp]] = Visit[iTemp]; > Storage[Visit[iTemp]] = Visit[iTemp]; > iTemp = Storage[iTemp]; > // printf("puzzle iTemp is %d, Visit[iTemp] is %d\n", iTemp, Visit[iTemp]); > if(iLast == iTemp) > break; > > } > printf("%d %d\n", iVacumm, i); > Visit[i] = i; > Storage[i] = i; > iCycle = 0; > > > } > else > { > > // printf("link\n"); > iTemp = Storage[iTemp]; > while(1) > { > printf("%d %d\n", iTemp, Visit[iTemp]); > Visit[Visit[iTemp]] = Visit[iTemp]; > Storage[Visit[iTemp]] = Visit[iTemp]; > if(iTemp == i) > break; > > iTemp = Storage[iTemp]; > } > > printf("%d %d\n", Storage[i], i); > > Visit[Storage[i]] = 0; > iVacumm = Storage[i]; > Visit[i] = i; > Storage[i] = i; > > iCycle = 0; > } > > } > > > } > } > if(0 == iMove) > printf("No optimization needed\n"); > > // printfTest(); > > > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator