1293: [SCOI2009]生日礼物

题目:传送门

题解:

   据说这道题乱搞随便就水过了

   本蒟蒻想到了一个用堆的水法(还专门学了学queue):

   如果把每一种颜色的下一个位置都记录一下的话,一开始就把所有的颜色开头位置加入堆中,求一下ans

   然后将最左边的颜色删掉换成下一个位置并加入堆然后更新答案

   因为题目保证位置升序,所以如果问当前颜色的没有了下一个位置,那就退出

代码(有点丑,因为不会求堆底所以开了两个堆):

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long LL; int n,k;
struct node
{
LL x;int next;
node(){next=-;}
friend bool operator <(node n1,node n2)
{
return n1.x>n2.x;
}
}a[];
struct node1
{
LL x;
friend bool operator <(node1 n1,node1 n2)
{
return n1.x<n2.x;
}
}b[];
priority_queue<node> q;
priority_queue<node1> v;
void clean(){while(q.empty()!=true)q.pop();}
int t[];
int main()
{
clean();int id=;
scanf("%d%d",&n,&k);LL x;
for(int i=;i<=k;i++)
{
scanf("%d",&t[i]);
for(int j=;j<=t[i];j++)
{
scanf("%lld",&x);
a[++id].x=x;if(j!=t[i])a[id].next=id+;
b[id].x=x;
}
}
int w=;
for(int i=;i<=k;i++)
{
if(i!=)w+=t[i-];
q.push(a[w]);v.push(b[w]);
}
node1 n1=v.top();
node n2=q.top();
LL ans=n1.x-n2.x;
while()
{
node no=q.top();
if(no.next==-)break;
q.pop();q.push(a[no.next]);v.push(b[no.next]);
n1=v.top();n2=q.top();
ans=min(ans,n1.x-n2.x);
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. C/C++调试工具gdb
  2. folly::AtomicHashmap源码分析(一)
  3. linux配置本地源
  4. Cordova for Android(Windows)环境配置
  5. 【Android 界面效果26】listview android:cacheColorHint,android:listSelector属性作用
  6. Linux文件与进程的Capability简介
  7. python 正则表达式(一)
  8. OpenCV探索之路(十六):图像矫正技术深入探讨
  9. eclipse 等号左边代码补全
  10. SSH使用自定义私钥进行登录
  11. 自定义上传控件(兼容IE8)
  12. Activity的onPause()、onStop()和onDestroy()里要做的事情
  13. Hive 1.2.1&Spark&Sqoop安装指南
  14. git bash 出现vim弹框的时候怎么退出
  15. shell命令跟踪
  16. Wex5各组件介绍
  17. 64_j1
  18. C# asp.net页面常用语法,页面包含
  19. django 中的路由系统(url)
  20. mysql外键约束总结

热门文章

  1. QlikSense系列(1)——整体介绍
  2. javascript中全屏滑动效果实现
  3. Golden Gate 概述
  4. 从EntityFramework转换EntityFrameworkCore的正确姿势(DBFirst)
  5. Codeforces Round #282 (Div. 2) A
  6. JS使用三元运算符判断三个数中最大的数
  7. Sona &amp;&amp; Little Elephant and Array &amp;&amp; Little Elephant and Array &amp;&amp; D-query &amp;&amp; Powerful array &amp;&amp; Fast Queries (莫队)
  8. JavaScript高级程序设计部分笔记
  9. NOIP2016 DAY1 T3 换教室
  10. [poj 2976] Dropping tests (分数规划 二分)