zoukankan      html  css  js  c++  java
  • 洛谷 P1086 花生采摘


    这道题难点在于理解题意

    只有第一次可以从路到田,最后一次从田到路

    中间不能以回路再田的方式减少步数

    剩下的就是来回步数的细节问题

    顺序位置可以用结构体存了 没必要存二维数组

    代码

    #include <iostream>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    struct pos
    {
    	int x, y;
    	int val;
    }arr[2500];
    
    bool cmp(pos a, pos b)
    {
    	return a.val > b.val;
    }
    
    int main()
    {
    	int M, N, K, ft = 0, tmp;
    	cin>>M>>N>>K;
    	
    	for(int i = 0; i < M; i++)
    	{
    		for(int j = 0; j < N; j++)
    		{
    			cin>>tmp;
    			
    			if(tmp != 0)
    			{
    				arr[ft].x = j;
    				arr[ft].y = i;
    				arr[ft++].val = tmp; 
    			}
    			
    		}
    	}
    	
    	sort(arr, arr + ft, cmp);
    	
    	int ans = 0;
    	
    	/*test
    		1, 4
    		3, 1
    	*/
    	
    	for(int i = 0; i < ft; i++)
    	{
    		//cout<<arr[i].x<<' '<<arr[i].y<<' '<<arr[i].val<<endl;
    		int ret = 0, py;
    		
    		py = arr[i].y + 1;
    		
    		if(i == 0)
    		{			
    			ret += arr[0].y + 2;
    		}
    		
    		else
    		{
    			
    			py = arr[i].y + 1;
    			ret += abs(arr[i].x - arr[i - 1].x) + abs(arr[i].y - arr[i - 1].y) + 1;
    		}
    		
    		if(K - (ret + py) < 0)
    			break;
    		else
    		{
    			K -= ret;
    			ans += arr[i].val;
    		}
    				
    	}
    	
    	cout<<ans<<endl;
    	
    	return 0;
    }


  • 相关阅读:
    漏洞扫描
    端口探测
    IP探测
    kali linux基础命令
    python学习07
    python学习06
    openoffice+jquery.media.js实现Linux与Windows中文档在线预览
    Oracle10g安装包
    MyEclipse2014安装包附注册破解包、eclipse安装包
    外层div自适应内层div高度
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270620.html
Copyright © 2011-2022 走看看