42pts求调
查看原帖
42pts求调
1265456
封禁用户楼主2024/10/18 20:37

记录

codecode

#include<bits/stdc++.h>
#define ll long long//#define ll long long你值得拥有
using namespace std;
ll n;
struct banana
{
    ll size,factor,index;
    bool operator<(banana other) const
	{
        return size>other.size;
    }
};
priority_queue <banana> pq;
int main()
{
    cin>>n;
    vector <banana> bananas(n);
	vector <pair<ll,ll>> merges;
    for(ll i=0,a,k;i<n;i++)
	cin>>a>>k,bananas[i]={a,k,i+1},pq.push(bananas[i]);
    while(pq.size()>1)
	{
        banana b1=pq.top(),b2;
        pq.pop(),b2=pq.top(),pq.pop();
        ll new_size=b1.size/b1.factor+b2.size/b2.factor,new_index=n+merges.size()+1;
        merges.push_back({b1.index,b2.index});
        pq.push({new_size,b1.factor,new_index});
    }
    for(auto merge:merges)
    cout<<merge.first<<" "<<merge.second<<endl;
    return 0;
}

dalaodalao 调,谢!

2024/10/18 20:37
加载中...