O(n!)

https://ac.nowcoder.com/acm/contest/911/D

思路:贪心排序;对与两物品可以判断选取谁最少:a1+p1*a2和a2+a1*p2判断大小;因为每取一个就对另一个有p的影响所以可以排序;

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

#define sfi(i) scanf("%d",&i)
#define sfs(i) scanf("%s",(i))
#define pri(i) printf("%d\n",i)
#define sff(i) scanf("%lf",&i)
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
#define INF 0x3f3f3f3f
#define eps 1e-16
#define PI acos(-1)
#define lowbit(x) ((x)&(-x))
#define zero(x) (((x)>0?(x):-(x))'9')
    {
        if(ss=='-')f=-1;ss=getchar();
    }
    while(ss>='0'&&ss<='9')
    {
        x=x*10+ss-'0';ss=getchar();
    }    return f*x;
}

struct node
{
    int a;
    double p;
}x[maxn];

bool cmp(node x,node y)
{
    if(x.a+x.p*y.a>n;
    for(int i=0;i>x[i].a>>x[i].p;
    sort(x,x+n,cmp);
    double pp=1;
    double ans=0;
    for(int i=0;i

 

你可能感兴趣的:(贪心,思维)