我.

调了快一天

因为一个位置错误的感叹号

:-)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

狗dp

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 99999999
using namespace std; int c,n;
int t[],b[],dp[][<<][];//dp 前i-1个人已经打完饭了,第i个人及其后面7个人的状态,上一次打饭的人与i的相对距离(向前为-向后为+) 实际运用时由于不能为负数 所以要+8 int time(int a,int b){if(a==)return ; return t[a]^t[b];}//题目要求的时间计算 int main()
{
int i,j,k;
scanf("%d",&c); for(int l=;l<=c;l++)
{
scanf("%d",&n);
for(i=;i<=n;i++) scanf("%d%d",&t[i],&b[i]); for(i=;i<=n+;i++)
for(j=;j<(<<);j++)
for(k=-;k<=;k++)
dp[i][j][k+]=inf;
dp[][][]=;// k -1+8 //初始化 for(i=;i<=n;i++)//枚举n个人
for(j=;j<(<<);j++)//枚举状态
for(k=-;k<=;k++)//枚举相对位置
if(dp[i][j][k+]<inf)//没轮到呢.怎么排他后面的...?!
{
if(j&) dp[i+][j>>][k+]=min(dp[i+][j>>][k+],dp[i][j][k+]);else//如果已经打完了 就可以 扔了emm 下一个还未打的时间与上一个打完时间相同
{
int r=inf;//忍受范围
for(int m=;m<=;m++)//枚举下一个人
{
if(!((j>>m)&))//判断后面的人是否吃完了
{
if(i+m>r)break;//超出了忍耐限度!
r=min(r,i+m+b[i+m]);//更新目前最小忍耐限度
dp[i][j+(<<m)][m+]=min(dp[i][j+(<<m)][m+],dp[i][j][k+]+time(i+k,i+m));//emm让他有饭(雾
}
}
}
}
int ans=inf;
for(i=;i<;i++)ans=min(ans,dp[n+][][i]);//全部人都有饭啦!
printf("%d\n",ans);
}
return ;
}

最新文章

  1. ypzl药品质量不合格数据库-excel自动排版
  2. AJAX练习(一):制作可以自动校验的表单(从原理上分析ajax的作用)
  3. Wireshark分析器分析数据流过程
  4. 【BZOJ】【2818】Gcd
  5. PHP 进行蜘蛛访问日志统计
  6. ajax检查用户名
  7. xamarin SimpleAdapter绑定出错问题
  8. util:properties与context:property-placeholder
  9. 转:Eclipse Debug 界面应用详解——Eclipse Debug不为人知的秘密
  10. 【可视化】div背景半透明
  11. .Net Core 学习之路-AutoFac的使用
  12. [AtCoder 2702]Fountain Walk - LIS
  13. Visitor 模式心得
  14. C# DateTimePicker控件获取他的年,月,日,时,分,秒
  15. 凭什么相信你,我的CNN模型
  16. 每天记命令:lscpu 和 cat /proc/cpuinfo
  17. php cli命令 自定义参数传递
  18. 20155323刘威良《网络对抗》Exp6 信息搜集与漏洞扫描
  19. DateFrame
  20. menu 一组 只能选择一个

热门文章

  1. java生成6位数所有组合
  2. Android自定义的弹窗
  3. 更新pip源/anaconda源
  4. 框架-Spring容器
  5. python如何在一个for循环中遍历多个列表
  6. Python模块——base64
  7. Kali 时间修改
  8. 洛谷P1525 关押罪犯(并查集、二分图判定)
  9. StartDT AI Lab | 智能运筹助力企业提升决策效率、优化决策质量
  10. tc/traffic control 网络控制工具