Uva(12124)(Assemble )

链接:https://vjudge.net/problem/UVA-12124
思路:求最小值最大的题目,一般采取二分的方法,注意本题目输入配件的时候不一定是按照分类顺序输入的,所以需要一个map给每种配件分配一个编号,然后注意二分时新建一个map并赋值为原来map的值,不要直接用原map修改(又错在这种很细节的小地方了)
代码:

#include
#include
#include
using namespace std;

struct pj{
char a[1000],b[1000];
int cost,q;
}pp[1001];

int t,n,times;//times记录配件的种类个数
long long b;
map jj;
map kk;//为每个种类配件分配一个编号,因为输入不一定是按照种类分类输入的

int aaa[1001];

bool c(long long d){
    int qqq = times;
    long long sum = 0;
    map jjj;//复制一个原来的map
    jjj = jj;
    for(int i=0;i=d&&pp[i].cost1){
    long long mid = lb+(ub-lb)/2;
    if(c(mid))lb = mid;
    else ub = mid;
}
printf("%lld\n",lb);
    }
    return 0;
}

你可能感兴趣的:(Uva(12124)(Assemble ))