Wannafly模拟赛5 A Split 【贪心】

题目:https://www.nowcoder.com/acm/contest/18/A

题意:

你有一个大小为��的����������,每次你可以从你已有的����������中选择一个大小不为1的����������,设他的大小为��,然后把它分裂成��和��−��,其中1≤��<��,这样你获得的收益是��∗(��−��)给定��,��,求最少分裂几次才能得到至少��的收益

分析:
最后分的大小尽量平均得到的M最大。二分分的次数,然后判断是否可以使得收益>=M即可。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=1e3+9;
typedef long long LL;
typedef pair<int,int> pii;
int a[N];
int solve(int s,int x)
{
    for(int i=0;ifor(int i=0;iint ans=0;
    int sum=0;
    for(int i=0;ireturn ans;
}
int main()
{
    int s,m;
    scanf("%d%d",&s,&m);
    for(int i=1;iif(solve(s,i+1)>=m){
            printf("%d\n", i);
            return 0;
        }
    }
    printf("-1\n");
    return 0;
}






















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