BZOJ1226: [SDOI2009]学校食堂Dining
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1226
状压dp。
f[i][s][k]表示原顺序中前i-1个人都吃了饭,当前状态为s(i及i之后的8个点,已吃饭的二进制为1),上一个吃饭的人的相对距离。
因为是对上一个吃饭的人有限制,可以让l从0到7跑一遍,并更新当前可以取到的l的界。
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #include<cstdio>
- #include<queue>
- #include<cmath>
- #define rep(i,l,r) for (int i=l;i<=r;i++)
- #define down(i,l,r) for (int i=l;i>=r;i--)
- #define clr(x,y) memset(x,y,sizeof(x))
- #define inf int(1e9)
- #define ll long long
- #define maxn 1005
- #define eps 1e-5
- #define mm 2147483648
- #define low(x) (x&(-x))
- #define f(x,y,z) g[x][y][z+8]
- using namespace std;
- int g[maxn][][],bin[],b[maxn],t[maxn];
- int T,n,r;
- int read(){
- int x=,f=; char ch=getchar();
- while (!isdigit(ch)){if (ch=='-') f=-; ch=getchar();}
- while (isdigit(ch)){x=x*+ch-''; ch=getchar();}
- return x*f;
- }
- int cal(int x,int y){
- if (x==) return ;
- return (t[x]^t[y]);
- }
- int main(){
- // freopen("in.txt","r",stdin);
- T=read();
- bin[]=; rep(i,,) bin[i]=bin[i-]*;
- while (T--){
- n=read();
- rep(i,,n) t[i]=read(),b[i]=read();
- rep(i,,n+) rep(j,,) rep(k,-,) f(i,j,k)=inf;
- f(,,-)=;
- rep(i,,n) rep(j,,bin[]-) rep(k,-,) if (f(i,j,k)<inf){
- if (j&) {f(i+,j>>,k-)=min(f(i+,j>>,k-),f(i,j,k)); continue;}
- int r=inf;
- rep(l,,) if ((bin[l]&j)==){
- if (i+l>r) break;
- r=min(r,i+l+b[i+l]);
- f(i,j+bin[l],l)=min(f(i,j+bin[l],l),f(i,j,k)+cal(i+k,i+l));
- }
- }
- int ans=inf;
- rep(k,-,-) ans=min(ans,f(n+,,k));
- printf("%d\n",ans);
- }
- return ;
- }
BZOJ1226: [SDOI2009]学校食堂Dining的更多相关文章
- BZOJ1226 [SDOI2009]学校食堂Dining 【状压dp】
题目 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数表示 ...
- bzoj千题计划286:bzoj1226: [SDOI2009]学校食堂Dining
http://www.lydsy.com/JudgeOnline/problem.php?id=1226 关键点:一个人只能忍受 ‘紧跟’ 在他 后面的b个人比他先打到饭 dp[i][j][k] 前i ...
- 【BZOJ1226】[SDOI2009]学校食堂Dining 状压DP
[BZOJ1226][SDOI2009]学校食堂Dining Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满 ...
- BZOJ 1226: [SDOI2009]学校食堂Dining
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 730 Solved: 446[Submit][ ...
- 【bzoj1226】【[SDOI2009]学校食堂Dining】状压dp
(上不了p站我要死了,侵权度娘背锅) Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人 ...
- 1226: [SDOI2009]学校食堂Dining - BZOJ
Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以 ...
- bzoj 1226 [SDOI2009]学校食堂Dining(状压DP)
Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以 ...
- [SDOI2009]学校食堂Dining
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- P2157 [SDOI2009]学校食堂Dining
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
随机推荐
- iOS 获取一个不变的UDID
原文:iOS7: 如何获取不变的UDID 如何使用KeyChain保存和获取UDID 本文是iOS7系列文章第一篇文章,主要介绍使用KeyChain保存和获取APP数据,解决iOS7上获取不变UDID ...
- scala写算法-快排
快排算法很经典,今天用scala的函数式思维来整理一下并实现: def qsort(list: List[Int]):List[Int]=list match { case Nil=>Nil c ...
- ArcGIS API for JavaScript 4.2学习笔记[22] 使用【QueryTask类】进行空间查询 / 弹窗样式
上一篇写道,使用Query类进行查询featureLayer图层的要素,也简单介绍了QueryTask类的使用. 这一篇博文继续推进,使用Query类和QueryTask类进行空间查询,查询USA的著 ...
- 程序员的自我救赎---11.1:RPC接口使用规范
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- lumen安装后输出hello world
1.安装composer,具体请百度 2.composer 切换中国镜像,好处自己体会,命令如下 composer config -g repo.packagist composer https:// ...
- date 命令详解
date - print or set the system date and time Display the current time in the given FORMAT, or set th ...
- Python列表list对象方法总结
- Oracle学习笔记_08_字符串连接
附录:参考资料 1.Oracle中字符串连接的实现方法 2.SQL指令— CONCAT(字符串连接函数)
- 中文代码示例之Angular入门教程尝试
原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...
- 判断python对象是否可调用的三种方式及其区别
查找资料,基本上判断python对象是否为可调用的函数,有三种方法 使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False ...