zoukankan      html  css  js  c++  java
  • POJ 1928

    #include <iostream>
    #include <algorithm>
    #define MAXN 3000
    using namespace std;
    
    struct node
    {
        int x;
        int y;
        int v;
    };
    
    bool op(node a,node b);
    
    node _node[MAXN];
    
    int main()
    {
        //freopen("acm.acm","r",stdin);
        int i;
        int j;
        int m;
        int n;
        int k;
        int tem;
        int test;
        int index;
        int sum;
    
        cin>>test;
        while(test --)
        {
            cin>>m;
            cin>>n;
            cin>>k;
            index = 0;
            for(i = 0; i < m; ++ i)
            {
                for(j = 0; j < n; ++ j)
                {
                    cin>>tem;
                    if(tem > 0)
                    {
                        _node[index].v = tem;
                        _node[index].x = i;
                        _node[index].y = j;
                        ++ index;
                    }
                }
            }
            
            sort(_node,_node+index,op);
            sum = 0;
            k -= 2;
            i = 0;
            if(_node[i].x*2+1 <= k)
            {
                sum += _node[i].v;
                k -= _node[i].x+1;
                ++ i;
            }
            else
            {
                cout<<0<<endl;
                continue;
            }
        //    cout<<i<<endl;
            
            while(true)
            {
            //    cout<<"sum----------"<<sum<<endl;
            //    cout<<"time-----------"<<k<<endl;
            //    cout<<" ***************88 "<<abs(_node[i].x - _node[i-1].x) + abs(_node[i].y - _node[i-1].y) + _node[i].x<<endl;
                if(abs(_node[i].x - _node[i-1].x) + abs(_node[i].y - _node[i-1].y) + _node[i].x +1> k)
                {
                    break;
                }
                else
                {
                    sum += _node[i].v;
                    k -= abs(_node[i].x - _node[i-1].x) + abs(_node[i].y - _node[i-1].y)+1;
                    ++ i;
                }
            }
    
            cout<<sum<<endl;
        }
    }
    
    bool op(node a,node b)
    {
        if(a.v > b.v)
        {
            return true;
        }
        return false;
    }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    背包解法
    第十六周周总结
    软件工程个人课程总结
    学期课后个人总结
    spring事务
    梦断代码03
    团队冲刺的第二十四天
    第十五周周总结
    百度输入法评价
    找到水王
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4566577.html
Copyright © 2011-2022 走看看