BZOJ 1226 [SDOI2009]学校食堂Dining ——状压DP
看到B<=8,直接状态压缩即可。
dp[i][j][k]表示当前相对位置是关于i的,并且i以前的已经就餐完毕,j表示i和之后的就餐情况,k表示上一个就餐的人的相对位置。
然后Dp即可
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
#define inf 0x3f3f3f3f
#define maxn 1005
const int buf=8; int dp[maxn][258][17];
int T,t[maxn],b[maxn],n; int main()
{
scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
F(i,1,n) scanf("%d%d",&t[i],&b[i]);
memset(dp,0x3f,sizeof dp);
dp[1][0][-1+buf]=0;
F(i,1,n) F(j,0,(1<<8)-1) F(k,-8,7)
if (dp[i][j][k+buf]<inf)
{
if (j&1)
dp[i+1][j>>1][k+buf-1]=min(dp[i+1][j>>1][k+buf-1],dp[i][j][k+buf]);
else
{
int lim=inf;
F(l,0,7) if (!(j&(1<<l)))
{
if (i+l>lim) break;
lim=min(lim,i+l+b[i+l]);
dp[i][j|(1<<l)][l+buf]=min(dp[i][j|(1<<l)][l+buf],dp[i][j][k+buf]+(k+i==0?0:t[k+i]^t[l+i]));
}
}
}
int ans=0x3f3f3f3f;
F(i,-8,7) ans=min(ans,dp[n+1][0][i+buf]);
printf("%d\n",ans);
}
}
BZOJ 1226 [SDOI2009]学校食堂Dining ——状压DP的更多相关文章
- 【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][ ...
- bzoj 1226 [SDOI2009]学校食堂Dining(状压DP)
Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以 ...
- [LuoguP2157][SDOI2009]学校食堂_状压dp
学校食堂 题目链接:https://www.luogu.org/problem/P2157 数据范围:略. 题解: 发现$B$特别小,很容易想到状压. 即在$dp$的时候弄出来$f_{(i,j,k)} ...
- BZOJ1226 SDOI2009学校食堂(状压dp)
由于Bi<=7,考虑状压. 如果考虑前i个位置的话,状态里需要压入前7个人后7个人,显然是跑不动的. 那么改成考虑前i个人.于是设f[i][j][k]表示前i个人都已吃完饭,i+1后面7个人的吃 ...
- BZOJ 1226: [SDOI2009]学校食堂Dining [DP 状压]
题意: $n$个人排队打饭,第$i$个人口味$a_i$,能容忍最多身后第$b_i$个人先打饭. 先后两人$i,j$做饭时间为$a_i & a_j - a_i | a_j$ 求最少时间 一开始想 ...
- 1226: [SDOI2009]学校食堂Dining - BZOJ
Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以 ...
- luogu2157 [SDOI2009]学校食堂 局部状压
题目大意 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- BZOJ 1879 [Sdoi2009]Bill的挑战 ——状压DP
本来打算好好写写SDOI的DP题目,但是忒难了, 太难了,就写的这三道题仿佛是可做的. 生在弱省真是兴奋. 这题目直接状压,f[i][j]表示匹配到i,状态集合为j的方案数,然后递推即可. #incl ...
随机推荐
- zookeeper系列 (第一章 :ubuntu 下安装zookeeper)
1.zookeeper是分布式一致性管理服务.解决了分布式中死锁,不一致,原子性操作等问题. 2.环境:系统ubuntu,zookeeper 下载地址:http://archive.apache.or ...
- ARM指令解析
今天我来总结一下arm指令的学习,今天我不会对所有的arm指令进行一一的解析,在这里希望大家去看arm汇编手册,这个手册的中文版我放在了http://download.csdn.net/detail/ ...
- 图片压缩(pc端和移动端都适用)
最近在做移动端遇到了一个问题就是: 手机拍照后,图片过大如果上传到服务器务必会浪费带宽,最重要的是流量啊 别慌,好事儿来了,务必就会有人去研究研究图片的压缩: 鄙人结合前人的经验,结合自己实战,总结出 ...
- java代码(处理json串)
package test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class ...
- (二)SpringMVC之执行的过程
(DispatcherServlet在Spring当中充当一个前端控制器的角色,它的核心功能是分发请求.请求会被分发给对应处理的Java类,Spring MVC中称为Handle.) ① 用户把请 ...
- 关于用终端运行php来测试推送的问题
照网上的方法,合并好了证书的pem,密码也是对的,然后也写好了推送用的php文件,在终端里php这个文件,报错报错内容是:Warning: stream_socket_client(): SSL op ...
- block总结
3.编译器中的block 3.1 block的数据结构定义 我们通过大师文章中的一张图来说明: 上图这个结构是在栈中的结构,我们来看看对应的结构体定义: 1 2 3 4 5 6 7 8 9 10 11 ...
- 读懂 Deployment YAML【转】
既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...
- python之编码的进阶
识记点: ascii 不支持中文 gbk 国标 中文2 英文1 unicode 万国码 英文2 中文4 utf-8 英文1 欧洲2 亚洲3 硬盘中存储的是字节 用什么编码就用什么解码 # 一段文字的转 ...
- KeyValuePair的使用
Dictionary<string, string> dc = new Dictionary<string, string>(); 前台页面: <div id=" ...