问题标题: 酷町堂:1259 糖果分组

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,cnt=1;
struct fz{
    int tj,td;// tj:体积;td:甜度。 
}a[15000];
bool cmp(fz x,fz y){
    return x.tj<y.tj;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i].td; 
    for(int i=1;i<=n;i++)
        cin>>a[i].tj;
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n-1;i++){
        if(a[i].td>a[i+1].td){
            cnt++;
        }
    }
    cout<<cnt;
    return 0;
}

我放弃了


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

排序规则

bool cmp(fz x,fz y){
    if(x.td!=y.td)
        return x.td>y.td;
    return x.tj>y.tj;
}

排序后

for(int i=1;i<=n;i++){
        for(int j=1;j<=cnt;j++){
            if(pos1[j]>=a[i].td&&pos2[j]>=a[i].tj){
                pos1[j]=a[i].td;
                pos2[j]=a[i].tj;
                flag=true;
                break;
            }
        }
        if(!flag){
            cnt++;
            pos1[cnt]=a[i].td;
            pos2[cnt]=a[i].tj;
        }
        flag=false;
    }

最后输出cnt

0
陈曦
陈曦
资深天翼
资深天翼

ding

陈曦在2020-12-28 21:03:08追加了内容

陈曦在2021-01-01 18:52:31追加了内容

ding

0
我要回答