Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

1A-要预判如果走下一个点时间够不够回去,不够就输出当前吃到的花生数量,够就继续下一个循环

Posted by kuaichenyang at 2015-10-08 16:32:16 on Problem 1928
#include <iostream>
#include <math.h>
#include <stdlib.h>

struct Point{
	int x,y;
	int v;
};

const int _MAXN=55;

using namespace std;

int top;
Point pt[_MAXN*_MAXN];
int n,m,c;

int cmp(const void *a,const void *b){
	Point A=*((Point *)a);
	Point B=*((Point *)b);
	return B.v-A.v;
}

int work(){
	int ans=0;
	int t=2+(pt[0].x-1)*2+1;
	Point pPre=pt[0];
	if(t>c){
		return 0;
	}
	int pre=t-pt[0].x;
	ans+=pPre.v;
	for(int i=1;i<top;i++){
		Point p=pt[i];
		t=pre+abs(p.x-pPre.x)+abs(p.y-pPre.y)+p.x+1;
		if(t<=c){
			pPre=p;
			pre=t-p.x;
			ans+=p.v;
		}else{
			break;
		}
	}
	return ans;
}

int main(){
	int N;
	cin>>N;
	while(N--){
		top=0;
		cin>>n>>m>>c;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				int temp;
				cin>>temp;
				if(temp!=0){
					pt[top].x=i;
					pt[top].y=j;
					pt[top++].v=temp;
				}
			}
		}
		qsort(pt,top,sizeof(Point),cmp);
		cout<<work()<<endl;
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator