hdu 1009

1753 단어 욕심
배경: 욕심 내 라.회장 님 께 서 그 도 은퇴 했다 고 말씀 하 시 는 것 을 보고 감상 적 이 었 습 니 다. 요 며칠 감기 에 걸 려 dp 를 배 울 힘 이 없어 서 물 에 욕심 이 났 습 니 다.
학습:
1. 논리 적 오 류 는 항상 있 을 수 있 습 니 다. 배열 에 대한 처리 능력 을 강화 해 야 합 니 다. 다른 사람들 은 모두 구조 체 를 사용 하고 저 는 3 열의 숫자 표를 사용 하여 문 제 를 처리 한 것 을 보 니 구조 체 에 대해 아직 사용 한 적 이 없 는 것 같 습 니 다.
2. 그 동안 성 가 비 에 대한 순 서 는 정렬 을 선택 하 는 사상 을 사 용 했 습 니 다. 알고리즘 을 충분히 이해 한 후에 스스로 사용 하 는 것 이 경계 입 니 다. 예 를 들 어 빠 른 정렬 에서 하나의 key 로 데 이 터 를 기록 하 는 것 이 좋 습 니 다.
#include<stdio.h>
double str[10001][3];
int main(void)
{
	double n;
	int m;//max±íʾ»ñµÃµÄJavabeanµÄÖµ¡£ 
	while(scanf("%lf %d",&n,&m)!=EOF)
	{ 
	    double max=0;
		int line=m;//line±íʾÓÐЧÐÐÊý£¬f¡¾j¡¿Îª0µÄÐж¼ÎÞЧ£¬²»ÒªÇ®Ö±½ÓÂò¡£ 
		if(n==-1&&m==-1) break;
		for(int i=0;i<m;++i)
		{
			scanf("%lf",&str[i][0]);
			scanf("%lf",&str[i][1]);
			if(str[i][1]==0)
			{
				max+=str[i][0];
				--i;
				--line;
				--m; 
			} 
			else str[i][2]=str[i][0]/str[i][1];//Êý×éµÄµÚÒ»Áбíʾ·¿¼äµÄJavabeansµÄÊýÁ¿£¬µÚ¶þÁбíʾ
                                               //ʾÐèÒªµÄèʳ£¬µÚÈýÁбíʾÐÔ¼Û±È 			 
		} 
		for(int i=line;i>0;--i)
		{
			int key=0;
			double aa=0;//keyÓÃÀ´±£´æ×î´óÐԼ۱ȵÄÐÐϱ꣬aa±£´æ×î´óÐÔ¼Û±È 
			for(int j=i;j>0;--j)
			{
				if(str[j-1][2]>aa) 
				{
				key=j-1;
				aa=str[j-1][2];
		     	}
			}//ÀàËÆÓÚÑ¡ÔñÅÅÐò£¬ÕÒ³öÿ´Î×î´óÐÔ¼Û±È  
			if(str[key][1]<n)
			{
				max+=str[key][0];
				n-=str[key][1];
			} 
			else
			{
				max+=n*str[key][2];
				break;
			}
			str[key][0]=str[i-1][0];
			str[key][1]=str[i-1][1];
			str[key][2]=str[i-1][2];//×îºóÒ»×éÊý¾ÝתÒƵ½key×éÊý¾Ý£¬ÒòΪÏ´β»»á¶Áµ½×îºóÒ»×éÊý¾Ý 
		} 
		printf("%.3lf
",max); } return 0; }

난호 주해!

좋은 웹페이지 즐겨찾기