BZOJ1293: [SCOI2009]生日礼物
2015-11-26 17:21
411 查看
SB题。。。。不解释
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; long long FULL,now; long long line[1000001]; char c; inline void read(long long &a) { a=0;do c=getchar();while(c<'0'||c>'9'); while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar(); } struct Node { long long color,place; inline friend bool operator <(Node a,Node b) {return a.place<b.place;} }me[1000001]; long long P_color[80]; int main() { long long n,k,i,j,l; long long con=0; read(n),read(k); for(i=1;i<=k;i++) { read(j); for(l=1;l<=j;l++) { read(me[++con].place); me[con].color=i-1; if(me[con].place==1282) con++,con--; } } FULL=1ll<<k; FULL--; sort(me+1,me+1+n); long long now=0; long long r=0; l=0; bool pr[100001]; long long ans=1ll<<60; for(i=1;i<=n;i++) { line[++r]=i; now|=1ll<<me[i].color; P_color[me[i].color]=me[i].place; while((P_color[me[line[l]].color]!=me[line[l]].place))l++; if(now!=FULL) continue; if(ans>me[line[r]].place-me[line[l]].place) { ans=min(ans,me[line[r]].place-me[line[l]].place); /*puts("");puts("");puts("");puts(""); for(j=r;j>=l;j--) if(!pr[me[line[j]].color]) pr[me[line[j]].color]=true,printf("Pla:%I64d Clo:%I64d\n",me[line[j]].place,me[line[j]].color); memset(pr,false,sizeof(pr)); */ } } printf("%lld\n",ans); }
相关文章推荐
- iOS代理,协议
- flume-ng interceptors
- ExtJS(6)- 用Sencha Cmd构建打包Ext项目
- 64、具有过渡动画效果的布局Layout( 2 )
- AngularJS进阶(十二)AngularJS常用知识汇总(不断更新中....)
- android studio快捷键大全
- http协议之初识
- AngularJS进阶(十二)AngularJS常用知识汇总(不断更新中....)
- java中cookie的操作
- 内存泄露之排查篇
- C++primer_泛型算法-插入迭代器和iostream迭代器
- jdk安装
- Node.js + Express + Mongodb 开发搭建个人网站(二)
- 如何提高自己的薪水
- 内部排序-插入排序-希尔排序
- windows udp网络数据包收发控制
- sql函数大全
- Solr 部分 局部字段修改 更新 删除
- 2015年11月26日17:18:59
- sed 正则表达式【MAC地址】GLPI转换华为交换机MAC格式