BZOJ1226 SDOI2009学校食堂(状压dp)

  由于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=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 1010
int T,n,a[N],b[N],f[N][1<<7][16],lg2[1<<7|1],l[7];
int main()
{
#ifndef ONLINE_JUDGEfreopen("bzoj1226.in","r",stdin);freopen("bzoj1226.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifT=read();for (int i=0;i<=7;i++) lg2[1<<i]=i;while (T--){int n=read();for (int i=1;i<=n;i++) a[i]=read(),b[i]=read();memset(f,42,sizeof(f));f[0][0][7]=0;for (int i=0;i<n;i++)for (int j=0;j<(1<<min(7,n-i-1));j++){l[0]=min(i+1+b[i+1],n);for (int k=1;k<7;k++)if (!(j&(1<<k-1))) l[k]=min(l[k-1],i+k+1+b[i+k+1]);else l[k]=l[k-1];for (int k=0;k<16;k++)if (k<=7&&i+k-7>=0||k>=9&&(j&(1<<k-9))){f[i+1+lg2[j+1&-(j+1)]][j>>lg2[j+1&-(j+1)]+1][7-lg2[j+1&-(j+1)]]=min(f[i+1+lg2[j+1&-(j+1)]][j>>lg2[j+1&-(j+1)]+1][7-lg2[j+1&-(j+1)]],f[i][j][k]+(i+k-7?(a[i+k-7]^a[i+1]):0));for (int x=1;x<=7;x++)if (!(j&(1<<x-1))&&i+x+1<=l[x-1])f[i][j|(1<<x-1)][8+x]=min(f[i][j|(1<<x-1)][8+x],f[i][j][k]+(i+k-7?(a[i+k-7]^a[i+x+1]):0));}}for (int i=1;i<8;i++) f[n][0][0]=min(f[n][0][0],f[n][0][i]);cout<<f[n][0][0]<<endl;}return 0;
}

 

转载于:https://www.cnblogs.com/Gloid/p/9639870.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue实现监听滚动条

// 组件挂载后添加监听事件 mounted () {window.addEventListener(scroll, this.handleScroll) }, methods: {// 我这里监听的是侧边的滚动条handleScroll: () > {// 滚动时&#xff0c;距离顶部的距离var scrollTop document.documentElement.scrollTop || document.body.…

[css] 什么是hack?css的hack有哪些?

[css] 什么是hack&#xff1f;css的hack有哪些&#xff1f; 一、总结 1、CSS hack&#xff1a;由于不同厂商的浏览器&#xff0c;比如Internet Explorer,Safari,Mozilla Firefox,Chrome等&#xff0c;或者是同一厂商的浏览器的不同版本&#xff0c;如IE6和IE7&#xff0c;对CS…

Element组件 Drawer 抽屉的关闭问题

场景 我使用的Drawer 抽屉是从上往下开的效果&#xff0c;点击搜索图标&#xff0c;从上往下开没问题&#xff0c;输入关键字搜索&#xff0c;搜索出来的列表放置于搜索栏下面&#xff0c;所以使用了一个子组件 问题就来了 搜出来的列表item&#xff0c;点击任意一条&#x…

First Steps with TensorFlow代码解析

注&#xff1a;本文的内容基本上都摘自tensorflow的官网&#xff0c;只不过官网中的这部分内容在国内访问不了&#xff0c;所以我只是当做一个知识的搬运工&#xff0c;同时梳理了一遍&#xff0c;方便大家查看。本文相关内容地址如下&#xff1a; https://developers.google.c…

[css] 说说你对相对定位、绝对定位、固定定位的理解

[css] 说说你对相对定位、绝对定位、固定定位的理解 position 属性指定了元素的定位类型。position 属性的五个值&#xff1a;static&#xff08;默认值&#xff09; relative&#xff08;相对定位&#xff09; fixed&#xff08;固定定位&#xff09; absolute&#xff08;绝…

宝塔nginx运行vue项目刷新404问题解决

我的项目是webpack构建的&#xff0c;因为我做一切开发都想要希望要从一个标准的构建去编码 所以&#xff0c;我的项目在node下运行&#xff0c;开发&#xff0c;调试是没有一点问题的&#xff0c;npm run build也是完全OK的&#xff0c;vue路由是history模式 把build出来的d…

[css] css中的选择器、属性、属性值区分大小写吗?

[css] css中的选择器、属性、属性值区分大小写吗&#xff1f; 选择器和属性区分大小写&#xff0c;属性值如果是颜色可以不区分大小写吧个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌…

vscode设置中文,设置中文不成功问题

刚安装好的vscode界面显示英文&#xff0c;如何设置中文呢&#xff1f; 在locale.json界面设置”locale":"zh-cn"也未能实现界面为中文&#xff0c;在网上找了参考了&#xff0c;以下教程真实测试有效&#xff01; 首先&#xff1a; 下载插件&#xff1a;Chines…

移动端阻止body左右偏移

如果一直找不到你的CSS问题&#xff0c;就用下面的CSS解决吧 html,body{overflow-x: hidden;} 原生JS function bodyScroll(){e.preventDefault(); } document.addEventListener(touchmove, bodyScroll, false); //阻止 document.removeEventListener(touchmove, bodyScroll,…

[css] img标签是行内元素,为什么却能设置宽高

[css] img标签是行内元素&#xff0c;为什么却能设置宽高 原来CSS中还有一个概念&#xff1a;可替换元素MDN上是这么解释的&#xff1a;在 CSS 中&#xff0c;可替换元素&#xff08;replaced element&#xff09;的展现效果不是由 CSS 来控制的。这些元素是一种外部对象&…

网页Request Headers请求头和Response Headers响应头

Request Headers Accept:告诉服务器&#xff0c;客户机支持的数据类型 Accept-Encoding:告诉服务器&#xff0c;客户机支持的数据压缩格式 Cache-Control&#xff1a;缓存控制&#xff0c;服务器通过控制浏览器要不要缓存数据 Connection:处理完这次请求&#xff0c;是断开…

springboot+jpa+mysql+redis+swagger整合步骤

springbootjpaMySQLswagger框架搭建好之上再整合redis&#xff1a; 在电脑上先安装redis&#xff1a; 一、在pom.xml中引入redis 二、在application.yml里配置redis&#xff0c;单独说明&#xff1a;redis刚一开始安装好是没有设置密码的。否则&#xff0c;会报connection错误。…

[css] 如何禁止长按保存或复制图像?

[css] 如何禁止长按保存或复制图像&#xff1f; img {pointer-event:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;}个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

我是从这篇博客中&#xff08;https://blog.csdn.net/zwq912318834/article/details/79571110&#xff09;了解的一点基础东西&#xff0c;代码都是从这篇博客里面的源代码直接复制过去测试和学习的。 遇到的问题&#xff1a; 1、返回状态码&#xff1a;502——百度得知这是一…

ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)

Now you have a string consists of uppercase letters, two integers AA and BB. We call a substring wonderful substring when the times it appears in that string is between AA and BB (A \le times \le BA≤times≤B). Can you calculate the number of wonderful sub…

[css] css的height:100%和height:inherit之间有什么区别呢?

[css] css的height:100%和height:inherit之间有什么区别呢&#xff1f; 上周在微博上无节操吐槽了下inherit的段子&#xff0c;没想到回声还不少&#xff1a; 微博inherit无节操段子 不过inherit确实是个好东西&#xff0c;不仅节约代码&#xff0c;尤其与background之流打交…

http详解 请求报文格式和响应报文格式

题外话&#xff1a; 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人&#xff0c;信不信未来的PI&#xff0c;了解一下&#xff0c;唯一一个高度与之持平的项目 HTTP 工作原理 超文本传输协议(Hypertext Transfer Protocol&#xff0c;简称HTT…

【LeetCode】拓扑排序

【207】 Course Schedule 排课问题&#xff0c;n门课排课&#xff0c;有的课程必须在另外一些课程之前上&#xff0c;问能不能排出来顺序。 题解&#xff1a;裸的拓扑排序。参考代码见算法竞赛入门指南这本书。 1 class Solution {2 public:3 bool dfs(const vector<vec…

Python2和Python3的兼容性写法

# python2 和 python3的兼容代码 try:# python2 中import cookielibprint(f"user cookielib in python2.") except:# python3 中import http.cookiejar as cookielibprint(f"user cookielib in python3.")

[css] 说说你对sass的嵌套规则的理解?

[css] 说说你对sass的嵌套规则的理解&#xff1f; 嵌套类型有&#xff1a;选择器嵌套、属性嵌套、伪类嵌套、群组选择器嵌套 。 .tenant-detail { background: transparent!important; .tenant-container { //1.选择器嵌套 width: 100%; > div { margin: 0{ //2.属性嵌套 相…