如何创建一个网站的流程,河北邢台局长,色盲怎么治疗,重网站建设正题
题目链接:https://www.luogu.com.cn/problem/CF140C 题目大意 nnn个雪球#xff0c;一个雪人需要用333个不同大小的雪球堆起#xff0c;求最多雪人。 解题思路
我们每次拿相同雪球中最多的三个来堆即可#xff0c;用优先队列维护。
时间复杂度O(nlogn)O(n\log n)O…正题
题目链接:https://www.luogu.com.cn/problem/CF140C 题目大意
nnn个雪球一个雪人需要用333个不同大小的雪球堆起求最多雪人。 解题思路
我们每次拿相同雪球中最多的三个来堆即可用优先队列维护。
时间复杂度O(nlogn)O(n\log n)O(nlogn) codecodecode
#includecstdio
#includecstring
#includealgorithm
#includequeue
#define mp(x,y) make_pair(x,y)
using namespace std;
const int N1e510;
int n,a[N],ans,b1[N],b2[N],b3[N];
priority_queuepairint,int q;
int main()
{scanf(%d,n);for(int i1;in;i)scanf(%d,a[i]);sort(a1,a1n);int cnt0;for(int i1;in;i){cnt;if(a[i]!a[i1])q.push(mp(cnt,a[i])),cnt0;}while(1){if(q.empty())break;pairint,int xq.top();q.pop();if(q.empty())break;pairint,int yq.top();q.pop();if(q.empty())break;pairint,int zq.top();q.pop();ans;b1[ans]x.second;b2[ans]y.second;b3[ans]z.second;if(x.first1)q.push(mp(x.first-1,x.second));if(y.first1)q.push(mp(y.first-1,y.second));if(z.first1)q.push(mp(z.first-1,z.second));}printf(%d\n,ans);for(int i1;ians;i){if(b1[i]b2[i])swap(b1[i],b2[i]);if(b1[i]b3[i])swap(b1[i],b3[i]);if(b2[i]b3[i])swap(b2[i],b3[i]);printf(%d %d %d\n,b1[i],b2[i],b3[i]);}return 0;
}