Description

Input

Output

状压dp,状态表示为表示当前在第x层,电梯内有哪些人,哪些人还没到终点

#include<cstdio>
#include<cstring>
#include<algorithm>
int T,n,k,ts[],as[],bs[],xs[];
int h[][],f[][],tr[][];
int abs(int x){return x>?x:-x;}
void mins(int&a,int b){a>b?a=b:;}
int max(int a,int b){return a>b?a:b;}
int main(){
for(scanf("%d",&T);T;--T){
scanf("%d%d",&n,&k);
int xp=;
for(int i=;i<n;++i){
scanf("%d%d%d",ts+i,as+i,bs+i);
xs[xp++]=as[i];
xs[xp++]=bs[i];
}
int mx=<<n,idp=;
for(int i=;i<mx;++i)for(int j=;j<mx;++j)if((i|j)==i){
tr[idp][]=i;tr[idp][]=j;
h[i][j]=idp++;
}
memset(f,0x3f,sizeof(f[])*(idp+));
std::sort(xs,xs+xp);
xp=std::unique(xs,xs+xp)-xs;
for(int i=;i<n;++i){
as[i]=std::lower_bound(xs,xs+xp,as[i])-xs;
bs[i]=std::lower_bound(xs,xs+xp,bs[i])-xs;
}
for(int i=;i<xp;++i)f[][i]=abs(xs[i]-k);
for(int i=;i<idp-;++i){
int A=tr[i][],B=tr[i][],*F0=f[i];
for(int k=;k<n;++k)if(A>>k&){
if(B>>k&)continue;
int&F=f[h[A][B|<<k]][bs[k]],_x=xs[bs[k]];
for(int j=;j<xp;++j)mins(F,F0[j]+abs(xs[j]-_x));
}else{
int&F=f[h[A|<<k][B]][as[k]],_x=xs[as[k]];
for(int j=;j<xp;++j)mins(F,max(ts[k],F0[j]+abs(xs[j]-_x)));
}
}
int ans=0x3f3f3f3f;
for(int i=;i<xp;++i)mins(ans,f[idp-][i]);
printf("%d\n",ans);
}
return ;
}

bzoj 2516: 电梯的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. [BZOJ 2165] 大楼 【DP + 倍增 + 二进制】

    题目链接:BZOJ - 2165 题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来..Orz 使用 DP + 倍增 ...

  3. bzoj2516 电梯

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2516 [题解] 状压dp. $f_{sta,i}$表示状态为sta,当前在第i层的最小花费时 ...

  4. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  5. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  6. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  7. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  8. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  9. 【sdoi2013】森林 BZOJ 3123

    Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...

随机推荐

  1. 比较强大 优秀的开源框架 :Android图片加载与缓存:Android Glide 的用法

    使用Android Glide,需要先下载Android Glide的库,Android Glide在github上的项目主页: https://github.com/bumptech/glide . ...

  2. css 让div 置于最顶层而不被其他东西挡住

    今天遇到自己写的div被其他东西给挡住了,需要设置一个属性就成功了 设置:z-index:值:比如 z-index:999. 若值设置为为-1,代表为最底层. div的图层由div的style中的z- ...

  3. Java——线程定时器

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  4. 玩转X-CTR100 l STM32F4 l SD卡FatFs文件系统

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有SD卡接口,本教程使用免费 ...

  5. android机顶盒真机调试方法

    最近接触电视APP开发,之前对Android开发也不太了解还一直以为不能真机调试.最近静下心来想一想肯定能真机调试的,我是我不知道而已.现在讲述一下真机调试的步骤: 1.进入设置--关于,连续点击版本 ...

  6. 类似select下拉选择框同时又支持手动输入的元素 datalist 介绍。

    有时候我们会有这样的需求,通过使用下拉菜单给用户一定的选择范围,同时又可以使用户在找不到选择项的时候手动输入.这个时候我们就需要用到html5的datalist属性了. datalist包含<o ...

  7. CSS 网格布局学习

    转自:https://blog.jirengu.com/?p=990 CSS网格布局(又名“网格”)是一个二维的基于网格的布局系统,其目的只在于完全改变我们设计基于网格的用户界面的方式. CSS一直用 ...

  8. Linux下Bind error: Address already in use处理

    发生这种问题是由于端口被程序绑定而没有释放造成. 可以使用netstat -lp查询当前处于连接的程序以及对应的进程信息. 如果只想查看指定端口,可以输入netstat -lp | grep 9877 ...

  9. RESTful API 学习

    /********************************************************************************* * RESTful API 学习 ...

  10. Spring整合struts的配置文件存放问题

    只使用Spring的时候,我把applicationContext.xml是放在项目的src路径下的,这样使用ClassPathXmlApplicationContext很方便嘛 整合了struts之 ...