POJ 2950 摘花生 解题报告

POJ 2950 摘花生 解题报告

编号:2950

 

考查点:模拟

 

思路:就是模拟,先找到最大的点,然后逐个加,判断时间是否到即可.

 

提交情况:这道题我是相当的冤,自己还算顺利的写出来后,提交结果一直是runtime error,我还以为是超时..后来怎么改都不行,请教zz后晓得原来是数组初始化问题,自己又重新定义数组,并且先排序,减少了查找的时间,一次就AC..

 

Source Code


//POJ Grids 2950
#include <math.h>
#include 
<stdlib.h>
#include 
<iostream>
using namespace std;

int ary[3000][3];
int m,n,t;

int Compare(const void* a,const void* b)
{
    
return *(int*)b - *(int*)a;
}


int main()
{
    
int count;
    cin
>>count;
    
while (count--)
    {
        memset(ary,
0,3000*3*sizeof(int));
        cin
>>m>>n>>t;
        
int max = 0,r = -1,l = 0,s = 0;
        
int index = 0;
        
for (int i=0;i<m;i++)
        {
            
for (int j=0;j<n;j++)
            {
                
int temp;
                cin
>>temp;
                
if (temp)
                {
                    ary[index][
0= temp;
                    ary[index][
1= i;
                    ary[index][
2= j;
                    index
++;
                }
            }
        }

        qsort(ary[
0],index,3*sizeof(int),Compare);

        
int a,b;
        a 
= b = 0;
        m 
= 0;

        
for (int i=0;i<index;i++)
        {
            a 
= ary[i][1];
            b 
= ary[i][2];
            
if (r==-1)
            {
                
if (2*abs(a-r)+1<=t)
                {
                    s 
+= abs(a-r)+1;
                    r 
= a;
                    l 
= b;
                    max 
+= ary[i][0];
                }
                
else
                    
break;
            }
            
else
            {
                
if (s+1+abs(a-r)+abs(b-l)+a+1<=t)
                {
                    s 
+= abs(a-r)+abs(b-l)+1;
                    r 
= a;
                    l 
= b;
                    max 
+= ary[i][0];
                }
                
else
                    
break;
            }
        }
        cout
<<max<<endl;
    }

    
return 0;
}

 

总结:下次记住了runtime error一般是数组初始化问题,要熟练使用快排算法,自己这道题的代码应该是还算不错,估计性能比书上的还要好些.

 

 

 

                                                       By   Ns517

                                                      Time 09.01.26

posted @ 2009-01-26 14:24  端木  阅读(815)  评论(0编辑  收藏  举报