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

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

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

 #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. 【HDU】5247-找连续数(直接暴力)

    ORZ,这道题想复杂了,原来直接暴力就能够了复杂度为 n * n * logn #include<cstdio> #include<set> #include<algor ...

  2. careercup-链表 2.1

    2.1 编写代码,移除未排序链表中的重复节点. 不使用临时缓存: 如果不允许使用临时的缓存(即不能使用额外的存储空间),那需要两个指针, 当第一个指针指向某个元素时,第二个指针把该元素后面与它相同的元 ...

  3. Linux ssh/scp连接时避免输入yes(公钥验证)并防止出现POSSIBLE BREAK-IN ATTEM

    方法一:连接时加入StrictHostKeyChecking=no ssh -o StrictHostKeyChecking=no root@192.168.1.100 方法二:修改/etc/ssh/ ...

  4. sublime 2如何进入vim模式

    点击菜单栏[Preferences]——[Settings - Defaults] 查找: "ignored_packages": ["Vintage"] 改为 ...

  5. Default Custom Action Locations and IDs

    Default Custom Action Locations and IDs SharePoint 2013                             The following ta ...

  6. POJ-3278(BFS)

    题目:                                                                                                 ...

  7. A题笔记(6)

    No. 3040 代码量好少,主要考到数学知识 唯一需要注意的是变量的类型 int -2147483648 ~ +2147483647 (4 Bytes) long 在32位机器中 int 类型 和 ...

  8. Java随机生成定长纯数字或数字字母混合数

    (转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码

  9. Swift基础知识入门(基于Swift2.0)

    //: Playground - noun: a place where people can play import UIKit // Swift中不需要设置main函数入口,编译器会在全局函数中自 ...

  10. gif图简介

    多媒体教程 - GIF 图 GIF 是在 Web 上使用的主要图像格式之一. 本文详细讲解了 GIF 图像的特性和使用技巧. 理解图像格式 无论是 HTML 还是 XHTML 都没有规定图像的官方格式 ...