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

发现不能减少成本的数据就停止。

Posted by forestgump2012 at 2022-03-28 22:40:50 on Problem 1260
// 还是沿用大家的dp方法,有个小改进,通过对比累加减少的金额,一旦发现不能减少金额的数据,即可停止


#include "stdio.h"
#include "string.h"
const int size=105;
struct item{
	int num,p;
} ct[size];
int s[size];


int _max(int a,int b){
	if(a>b) return a;
	return b;
}

int main(){
	int cost,ts,ts1,u;
	int t,c;
	int i,j;
	scanf("%d",&t);
	while(t>0){
		t--;
		scanf("%d",&c);
		cost=0; 
		for(i=1;i<=c;i++){
			scanf("%d%d",&ct[i].num,&ct[i].p);
			cost+=(ct[i].num+10)*ct[i].p;
		}
		memset(s,0,sizeof(s));
		for(i=1;i<=c;i++){
			ts=0; s[i]=s[i-1];
			if(i>1)  {
				for(j=i-1;j>=1;j--){
					ts1=ts;
					u=(ct[j].num+10)*ct[j].p-ct[j].num*ct[i].p;
					if(u<=0) break;  
					ts+=u;
					s[i]=_max(s[i],_max(ts1+s[j],ts+s[j-1]));
				}
		
			}
		}
		printf("%d\n",(cost-s[c]));

	}
	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