用两个优先队列来实现,因为队列只能从一头出去;

所以维护一个数组,来标记这个队列的已经出列而另外一个队列没有出列的元素;

到时候再把他们删了就行;

 #include<cstdio>
#include<queue>
#include<cstring>
#define maxn 1000009
using namespace std; priority_queue<int,vector<int>,greater<int> >gq;
priority_queue<int,vector<int>,less<int> >lq;
int numg[maxn],numl[maxn];
int main()
{
int n,x,k;
while(scanf("%d",&n)&&n)
{
memset(numl,,sizeof numl);
memset(numg,,sizeof numg);
long long ans=;
while(!gq.empty())gq.pop();
while(!lq.empty())lq.pop();
for(int i=;i<n;i++)
{
scanf("%d",&k);
while(k--)
{
scanf("%d",&x);
gq.push(x);
lq.push(x);
}
while()
{
if(numg[lq.top()]>)
{
numg[lq.top()]--;
lq.pop();
}
else break;
}
while()
{
if(numl[gq.top()]>)
{
numl[gq.top()]--;
gq.pop();
}
else break;
}
numg[gq.top()]++;
numl[lq.top()]++;
ans+=lq.top()-gq.top();
gq.pop();
lq.pop();
}
printf("%lld\n",ans);
}
return ;
}

还可以用multiset来做;

代码:

 #include<cstdio>
#include<set>
using namespace std; multiset<int>s; int main()
{
int n,k,x;
while(scanf("%d",&n)&&n)
{
long long ans=;
s.clear();
while(n--)
{
scanf("%d",&k);
while(k--)
{
scanf("%d",&x);
s.insert(x);
}
multiset<int>::iterator it;
it=s.begin();
int mi=*it;
s.erase(it);
it=s.end();
it--;
int ma=*it;
s.erase(it);
ans+=ma-mi;
}
printf("%lld\n",ans);
}
return ;
}

uva 11136 - Hoax or what的更多相关文章

  1. UVA 11136 - Hoax or what (可以提交了,不会Submission error了)

    看题传送门:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  2. set UVA 11136 Hoax or what

    题目传送门 题意:训练指南P245 分析:set维护,查询删除最大最小值 #include <bits/stdc++.h> using namespace std; typedef lon ...

  3. UVA 11136 Hoax or what (multiset)

    题目大意: 超时进行促销.把账单放入一个箱子里 每次拿取数额最大的和最小的,给出 最大-最小  的钱. 问n天总共要给出多少钱. 思路分析: multiset 上直接进行模拟 注意要使用long lo ...

  4. UVa 11136 Hoax or what (STL)

    题意:有 n 天,每天有m个数,开始的前一天没有数据,然后每天从这个里面拿出一个最大的和最小的,求 n 天的最大的和最小的差值相加. 析:一看就知道用set啊,多简单的STL,不过要注意,开long ...

  5. Hoax or what UVA - 11136(multiset的应用)

    刚开始把题意理解错了,结果样例没过,后来发现每天只处理最大和最小的,其余的不管,也就是说昨天的元素会影响今天的最大值和最小值,如果模拟的话明显会超时,故用multiset,另外发现rbegin()的功 ...

  6. 知识点总结——STL相关(持续补充)

    ---恢复内容开始--- C++ STL 与ACM竞赛相关的应用 1.vector vector是动态数组,可以理解为是能够根据需要随时申请内存的动态数组. 常用操作如下: 容量 vec.size() ...

  7. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  8. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  9. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

随机推荐

  1. Jafka来源分析——文章

    Kafka它是一个分布式消息中间件,我们可以大致分为三个部分:Producer.Broker和Consumer.当中,Producer负责产生消息并负责将消息发送给Kafka:Broker能够简单的理 ...

  2. TR069协议向导——一个帮助你了解TR069协议的简明教程(一)

    您也能够到下面地址下载: http://download.csdn.net/source/993034 1.为什么须要TR069    随着VoIP.IPTV等越来越多IP终端设备的普及(尤其在家庭中 ...

  3. WinCacheGrind配合XDebug分析PHP程序性能

    http://www.nowamagic.net/librarys/veda/detail/2338

  4. (转载)OSI七层参考模型和TCP/IP四层参考模型

    Mallory   网络模型概念浅析 网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型. #只是一种设计==模型# Open System Interconnect的缩写,意为开放式系统互 ...

  5. 仿QQ迷你首页(VC++,MFC)(迷你资讯)的开发与实现(源代码)

    由于需求,需要写个类似QQ迷你资讯首页的东西,就花了一点时间写了写,软件效果截图如下: 程序的主要核心代码如下: 程序的全部源代码下载地址:http://download.csdn.net/downl ...

  6. Eclipse下安装/配置Jrebel6.X

    Eclipse3.6+下安装/配置Jrebel6.X 1. 为什么要使用Jrebel 在日常开发过程中, 一旦修改配置/在类中增加静态变量/增加方法/修改方法名等情况, tomcat不会自动加载, 需 ...

  7. CentOS7安装vim7.4

    卸载自带vim yum remove vim-enhanced vim-common 下载vim包 wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz ...

  8. step2 uboot tag存储主要部分代码

      cmd_bootm.c //传递给内核的参数      int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])     ...

  9. 查看当前使用的shell

    1.实时查看当前进程中使用的shell种类:推荐 ps | grep $$ | awk '{print $4}' (注:$$表示shell的进程号) 2.最常用的查看shell的命令,但不能实时反映当 ...

  10. Play - js/css concatenation & minify

    1. Css We’ll use LESS CSS, all less sources are defined in the app/assets, and they will be compiled ...