码迷,mamicode.com
首页 > 编程语言 > 详细

XDOJ_1144_排序+模拟

时间:2016-11-01 01:15:57      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:stream   div   http   using   ace   names   for   php   class   

http://acm.xidian.edu.cn/problem.php?id=1144

 

不一定每一次都是合并k个,第一次先合并不足k的次数,后面都合并k个。

但是不知道为什么我这样写的一直WA,后来在优先队列中加上诺干个0,使得每次都是合并k个就过了,很奇怪。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;

priority_queue< long long,vector<long long>,greater<long long> > q;
int n,k;

int main()
{
    while(~scanf("%d%d",&n,&k))
    {
        while(!q.empty())   q.pop();
        long long x,ans = 0;
        for(int i = 1;i <= n;i++)
        {
            scanf("%lld",&x);
            q.push(x);
        }
        while((n-1)%(k-1))
        {
            q.push(0);
            n++;
        }
        while(q.size() != 1)
        {
            long long t = 0,sum = 0;
            while(t++ < k)
            {
                sum += q.top();
                q.pop();
            }
            ans += sum;
            q.push(sum);
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

XDOJ_1144_排序+模拟

标签:stream   div   http   using   ace   names   for   php   class   

原文地址:http://www.cnblogs.com/zhurb/p/6017896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!