这道题贪心水过的,dp的方法有待研究,我好水啊!!!
就是排序,在cmp里加一哥a.x*b.y>a.y*b.x
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct node{
int x,y;
}a[25];
bool cmp(node a,node b){
if(a.x*b.y==a.y*b.y)
return a.y<b.y;
return a.x*b.y>a.y*b.x;
}
int main(){
int n,x,y;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++){
scanf("%d%d",&x,&y);
a[i].x=x;
a[i].y=y;
}
sort(a,a+n,cmp);
int sum=0;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++)
sum+=a[j].x*a[i].y;
}
printf("%d\n",sum);
}
}