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. selenium(三)浏览器操作

    from time import sleep from selenium import webdriver #定义浏览器是firefox driver=webdriver.Firefox() #页面打 ...

  2. Beand的高级特征

    Spring程序中,Java Bean一般与Spring是非耦合的,不会依赖于Spring类库.这也是Spring的优点. 实现BeanNameAware接口获取本bean的id属性 BeanName ...

  3. ES6.0 Generator 三种用法

    // Generator start ------- thunk 用法 const Thunk = function(fn) { return function (...args) { return ...

  4. 百度AIG知识图谱部算法实习生面经(已拿offer)

    一面: 1.自我介绍 2.平时用什么编程语言比较多 python,另外学过C语言和JAVA 3.c语言里指针占多少内存 答成8位了,应该根据机器而言是16位或32位 4.python里的map函数,讲 ...

  5. HDU 4864

    http://acm.hdu.edu.cn/showproblem.php?pid=4864 #include <iostream> #include <cstdio> #in ...

  6. (树莓派、Arduino、物联网、智能家居、机器人)传感器、机械装置、电子元件

    定制 PCB 1. 机械类 履带底盘 2. 传感器 温度传感器(temperature).湿度传感器(humidity) DHT11/DHT22 驱动:BCM2835 (被动)红外传感器(Passiv ...

  7. jqprint 打印分页

    再要分页的结尾处加上<div style="page-break-after:always;"></div> 就可以了

  8. led灯的驱动电流和电阻

     通常led灯条所采用的LED驱动电流都是20mA, 这网站里有led电阻的详细计算过程:http://www.bao1314.net/792.html

  9. 抓老鼠 codeForce 148D - Bag of mice 概率DP

    设dp[i][j]为有白老鼠i只,黑老鼠j只时轮到公主取时,公主赢的概率. 那么当i = 0 时,为0 当j = 0时,为1 公主可直接取出白老鼠一只赢的概率为i/(i+j) 公主取出了黑老鼠,龙必然 ...

  10. freemarker逻辑判断写法#if

    <li class="<#if (position.flag)! =='haha1'>hide<#else >show</#if>"> ...