bzoj 2516: 电梯
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: 电梯的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [BZOJ 2165] 大楼 【DP + 倍增 + 二进制】
题目链接:BZOJ - 2165 题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来..Orz 使用 DP + 倍增 ...
- bzoj2516 电梯
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2516 [题解] 状压dp. $f_{sta,i}$表示状态为sta,当前在第i层的最小花费时 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
随机推荐
- bzoj3105
题解: 一道博弈论 题目要求取得最少,那么就是留下的最多 把石子从大到小排序 从打的开始刘 如果可以留,那么就留下了 如果留下了与前面留下来的异或后不为0,那么就可以留 代码: #include< ...
- L1-016 查验身份证
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
- Runtime的基本运用
一.什么是runtime(也就是所谓的“运行时”,因为是在运行时实现的.) 1.runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数); [runti ...
- DevExpress WPF入门指南:DXWindow应用
[DevExpress v17.2 版本更新公开课]点击免费报名 DevExpress WPF Window control有一点非常棒,就是可以和其他视觉主题保持统一性.DXWindow class ...
- HTML项目总结
一些存在的可以改进的地方: 达到一个效果不必要墨守成规,比如:
- 表单提交时编码类型enctype详解
很早以前,当还没有前端这个概念的时候,我在写表单提交完全不去理会表单数据的编码,在action属性里写好目标URL,剩下的啊交给浏览器吧~但是现在,更多时候我们都采用Ajax方式提交数据,这种原始的方 ...
- PHP连接MYSQL 报错"No such file or directory"
首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回空,而mysql_error()返回“No such file or directory”. 写个 ...
- MVA Prototype Only User License
This App is only a protetype of MVA WP app, the intent is to demostrate to Leadership person about w ...
- 20155216 2016-2017-2 《Java程序设计》第五周学习总结
20155216 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 使用try,catch,finally处理异常 JVM会尝试执行try区块中的程序代码,如果 ...
- UTF-8编码占几个字节?
占2个字节的:带有附加符号的拉丁文.希腊文.西里尔字母.亚美尼亚语.希伯来文.阿拉伯文.叙利亚文及它拿字母则需要二个字节编码 占3个字节的:基本等同于GBK,含21000多个汉字 占4个字节的:中日韩 ...