由于Bi<=7,考虑状压。

  如果考虑前i个位置的话,状态里需要压入前7个人后7个人,显然是跑不动的。

  那么改成考虑前i个人。于是设f[i][j][k]表示前i个人都已吃完饭,i+1后面7个人的吃饭状态为j,最后一个吃饭的人是k的答案。转移时考虑下一个吃饭的是谁即可。

  a|b-a&b=a^b。当然没什么用。

  各种情况需要考虑的非常清楚。写的跟我一样丑的话就比较难搞了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int T,n,a[N],b[N],f[N][<<][],lg2[<<|],l[];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj1226.in","r",stdin);
freopen("bzoj1226.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
T=read();
for (int i=;i<=;i++) lg2[<<i]=i;
while (T--)
{
int n=read();
for (int i=;i<=n;i++) a[i]=read(),b[i]=read();
memset(f,,sizeof(f));
f[][][]=;
for (int i=;i<n;i++)
for (int j=;j<(<<min(,n-i-));j++)
{
l[]=min(i++b[i+],n);
for (int k=;k<;k++)
if (!(j&(<<k-))) l[k]=min(l[k-],i+k++b[i+k+]);
else l[k]=l[k-];
for (int k=;k<;k++)
if (k<=&&i+k->=||k>=&&(j&(<<k-)))
{
f[i++lg2[j+&-(j+)]][j>>lg2[j+&-(j+)]+][-lg2[j+&-(j+)]]=
min(f[i++lg2[j+&-(j+)]][j>>lg2[j+&-(j+)]+][-lg2[j+&-(j+)]],f[i][j][k]+(i+k-?(a[i+k-]^a[i+]):));
for (int x=;x<=;x++)
if (!(j&(<<x-))&&i+x+<=l[x-])
f[i][j|(<<x-)][+x]=min(f[i][j|(<<x-)][+x],f[i][j][k]+(i+k-?(a[i+k-]^a[i+x+]):));
}
}
for (int i=;i<;i++) f[n][][]=min(f[n][][],f[n][][i]);
cout<<f[n][][]<<endl;
}
return ;
}

最新文章

  1. 在MVC架构中使用CodeSmith生成NHibernate映射对象和实体类
  2. Freemarker工具类
  3. IOS- Run Loops
  4. 必须关注的25位知名JavaScript开发者
  5. Spring MVC 中的基于注解的 Controller【转】
  6. java-testng-selenium优化
  7. 《iptables详解 》RHEL6
  8. Maven学习(2) - Maven构建多模块Java工程
  9. 单片机脚本语言-移植lua到stm32-MDK
  10. Oracle 11g完全卸载(Windows)(转)
  11. Hbiernate关联排序问题
  12. python基础课程_学习笔记20:标准库:有些收藏夹——os
  13. [转] Understanding-LSTMs 理解LSTM
  14. U盘被写保护不能重新格式化
  15. nginx-启动|关闭|重新加载配置文件的命令
  16. Lua 随机数生成问题
  17. add()方法和Put()方法的差别
  18. byte[]-&gt;new String(byte[]) -&gt; getByte()引发的不一致问题
  19. SQL update语句 更新和查询同一张表 冲突
  20. C# 1.0 到 4.0 的进化 1

热门文章

  1. AltiumDesigner 热焊盘铺铜
  2. 《spark机器学习 第二版》 蔡立宇 分享 pdf下载
  3. Http protocal
  4. Python浮点算术:争议和限制
  5. Iron Speed Designer设计工具开发总结
  6. 基于WebSocket协议的性能测试
  7. ubuntu下修改nginx的进程数
  8. PC端上必应词典与金山词霸的测评分析
  9. TeamWork#1,Week 5,Suggestions for Team Project
  10. 编程之法section II: 2.1 求最小的k个数