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

Re:又给大家拖后腿了。。。

Posted by x156003 at 2014-10-09 21:44:50 on Problem 1009
In Reply To:又给大家拖后腿了。。。 Posted by:earnAlive at 2014-04-17 18:38:20
> 花了两天,第一天撸了一下午,结果超时,想了一晚上没想出好方法。。。
> 第二天花了一早上,看各种大神的解题报告,最后撸了一下午,终于出来了,最郁闷的是,感觉没学到啥啊
> #include<stdio.h>
> #include<stdlib.h>
> #define SIZE 1000
> 
> int pair[SIZE][2];
> 
> typedef struct omg
> {
> 	int pos;
> 	int pixel;
> }omg;
> 
> omg outpix[8*SIZE];
> int total,width,size1,size2;
> 
> int get_value(int pos)
> {
> 	int i=0,p=0;
> 	while(p<pos)
> 	{
> 		p+=pair[i++][1];
> 	}
> 	return pair[i-1][0];
> }
> 
> int get_code(int pos)
> {
> 	int max=0;
> 	int row,col,t_pos;
> 	int i,j;
> 	int value=get_value(pos);
> 	int t_value;
> 	
> 	row=(pos-1)/width;
> 	col=(pos-1)%width;
> 	for(i=row-1;i<=row+1;i++)
> 	{
> 		for(j=col-1;j<=col+1;j++)
> 		{
> 			t_pos=i*width+j+1;
> 			if(i<0||j<0||j>=width||t_pos>total||t_pos==pos)
> 			continue;
> 			t_value=get_value(t_pos);
> 			if(max<abs(t_value-value))
> 			max=abs(t_value-value);
> 		}
> 	}
> 	return max;
> }
> 
> int cmp(const void* a,const void* b)
> {
> 	omg *x=(omg *)a;
> 	omg *y=(omg *)b;
> 	return x->pos-y->pos;
> }
> 
> int main()
> {
> 	int pixel,length;
> 	int row,col;
> 	int i,j,k;
> 	int cur;
> 	while(scanf("%d",&width)!=EOF)
> 	{
> 		if(width==0)
> 		break;
> 		size1=0;
> 		total=0;
> 		while(scanf("%d%d",&pixel,&length)!=EOF)
> 		{
> 			if(pixel==0&&length==0)
> 			break;
> 			pair[size1][0]=pixel;
> 			pair[size1++][1]=length;
> 			total+=length;
> 		}
> 		printf("%d\n",width);
> 		cur=1;
> 		size2=0;
> 		for(k=0;k<=size1;k++)
> 		{
> 			row=(cur-1)/width;
> 			col=(cur-1)%width;
> 			for(i=row-1;i<=row+1;i++)
> 			{
> 				for(j=col-1;j<=col+1;j++)
> 				{
> 					int top=i*width+j+1;
> 					if(i<0||j<0||j>=width||top>total)
> 					continue;
> 					outpix[size2].pos=top;
> 					outpix[size2++].pixel=get_code(top);
> 				}
> 			}
> 			cur+=pair[k][1];
> 		}
> 		
> 		qsort(outpix,size2,sizeof(omg),cmp);
> 		omg temp=outpix[0];
> 		for(i=0;i<size2;i++)
> 		{
> 			if(outpix[i].pixel!=temp.pixel)
> 			{
> 				printf("%d %d\n",temp.pixel,outpix[i].pos-temp.pos);
> 				temp=outpix[i];
> 			}
> 		}
> 		printf("%d %d\n",temp.pixel,total-temp.pos+1);
> 		printf("0 0\n");
> 	}
> 	printf("0\n");
> 	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