30pts.........
查看原帖
30pts.........
922781
Dpf20120621楼主2024/3/11 20:49
#include<bits/stdc++.h>
using namespace std;
struct node{
	int k;//k是体积 
	int m;//m是所需体力
	double x;//性价比 
}a[10001];
bool cmp(node n,node m){
	return n.x>m.x;
}
int main(){
    int V,n,c;//V是需要填满的面积,n是还剩的方块,c是体力 
    scanf("%d%d%d",&V,&n,&c);
	for(int i=0;i<n;i++){
		scanf("%d%d",&a[i].k,&a[i].m);
		a[i].x=a[i].k/a[i].m;
	}
	sort(a,a+n,cmp);
	for(int i=0;i<n;i++){
		if(c>=a[i].m){
			c-=a[i].m;
			V-=a[i].k;
			if(V<=0){
				printf("%d",c);
				return 0;
			}
		}else{
			printf("Impossible");
			return 0;
		}
	}
	return 0;
}

本以为是我刷题,结果是题刷我.......

2024/3/11 20:49
加载中...