bzoj 2516: 电梯
Description
.jpg)
Input
.jpg)
Output
.jpg)
状压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个非负整数 ...
随机推荐
- cf935E
题解: 树形dp 要记录一个最小的,一个最大的 然后转移 代码: #include<bits/stdc++.h> using namespace std; ; ][],f[N*][],T[ ...
- Oracle 固定执行计划-使用SPM(Sql Plan Management)固定执行计划
固定执行计划-使用SPM(Sql Plan Management)固定执行计划 转载自:http://www.lunar2013.com/2016/01/固定执行计划-使用spm%EF%BC%88sq ...
- TClientDataSet的 AddIndex
unit Unit2; interface uses SysUtils, Classes, DB, DBClient; type TDataModule2 = class(TDataModule) C ...
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
加密与解密,这很重要,我们已经可以用pypcap+npcap简单嗅探到网络中的数据包了.而这个工具其实可以嗅探到更多的数据.如果我们和别人之间传输的数据被别人嗅探到,那么信息泄漏,信息被篡改,将给我们 ...
- hdu 1556 Color the ball (线段树+代码详解)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- JQuery, Silverlight 公用WCF
WCF web.config配置: <?xml version="1.0"?> <configuration> <system.web> < ...
- NSScanner
NSScanner NSScanner:该类主要实现对字符串扫描.并且该扫描必须从头到尾扫描(也可以跳到指定的地方进行扫描),开始扫描必须应用到函数,连续的数字之间可以用空格隔开,如:35 15.2 ...
- Python 字典的遍历
dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟" ...
- Hashtable实现原理及源码分析
Hashtable简介 和HashMap一样,Hashtable也是一个散列表,存储的内容是键值对(key-value)映射. Hashtable在Java中的定义为: public class Ha ...
- iOS GameCenter 接入
iOS GameCenter iTunes Connect 设置 首先,申请一个应用程序,不必提交.目地是为了得到Bundle ID. 然后设置一下工程中Info.plist的Bundle i ...