1 条题解

  • 0
    @ 2026-10-22 20:11:36

    大根堆做法

    #include <bits/stdc++.h>
    using namespace std;
    const int N=105;
    priority_queue<int>pq;//定义大根堆 
    int candles[N];
    int main(){
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++)cin>>candles[i];
    	for(int i=1;i<=n;i++)pq.push(candles[i]);
    	int i=0;//天数 
    	while(pq.size()>=i+1){//一定是i+1,不能写i 
    		i++;
    		vector<int>now;//点燃的蜡烛 
    		bool f=1;
    		for(int j=1;j<=i;j++){
    			if(pq.top()-1!=0)now.push_back(pq.top()-1);//现在的蜡烛长度 
    			if(!pq.empty())pq.pop();//晶石后任:if(!pq.empty())是必写的,不写会溢出 
    		}
    //		for(auto x:now)cout<<x<<' ';
    		for(auto x:now)pq.push(x);
    //		cout<<"     "<<pq.size()<<endl;
    	}
    	cout<<i;//输出 
    	return 0;
    }
    
    
    • 1

    信息

    ID
    1143
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    5
    已通过
    3
    上传者