bzoj1226 学校食堂

2023-11-02 11:32
文章标签 学校食堂 bzoj1226

本文主要是介绍bzoj1226 学校食堂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学校食堂

题目背景:

bzoj1226

分析:状压DP

知道吗,要仔细读题,b[i] <= 7 ······

一开始并没有认真读题,然后没有看到b[i] <= 7导致一直在想这个怎么做的了······然后看到这个就有点思路了,定义f[i][j][k]表示,已经处理完了前i - 1个人,i ~ i + 7个人的用餐情况为j,上一个用餐的人是第i + k个人,因为b[i]的限制,那么可以知道k最多为-8 ~ 7开个16的数组每次加8好了······至于转移呢就是

f[i][j][k] à f[i + 1][j >> 1][k - 1] (j & 1)

f[i][j][k] à f[i + 1][j | (1 << l)][l] + (a[i + k] ^ a[i + l])   (otherwise)

注意在转移过程中的b[i]限制不能被超过,还有就是关于边界的情况,第一个转移有一个k - 1会不会导致出现-9呢,答案是不会的,因为i已经被选择了,那么i - 8一定在i之前被选择,否则状态将不合法,所以转移到i + 1时,不会出现-9(但是如果你之前的状态就挂了······那就GG了)

错误:j | (1 <<l) 写成 j & (1 << l)的一定只有我······

Source

/*created by scarlyw
*/
#include <cstdio>
#include <string>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
#include <cctype>
#include <vector>
#include <set>
#include <queue>const int MAXN = 1000 + 10;
const int MAXX = 8;
const int INF = 1000000000;int n, t;
int f[MAXN][1 << MAXX | 1][MAXX << 1];
int a[MAXN], b[MAXN];inline void read_in() {scanf("%d", &n);for (int i = 1; i <= n; ++i) scanf("%d%d", &a[i], &b[i]);
}inline void solve() {memset(f, 60, sizeof(f));f[1][0][7] = 0;for (int i = 1; i <= n; ++i) {for (int j = 0; j < (1 << MAXX); ++j) {for (int k = -8; k <= 7; ++k) {if (j & 1) f[i + 1][j >> 1][k - 1 + 8] = std::min(f[i][j][k + 8], f[i + 1][j >> 1][k - 1 + 8]);else {int limit = INF;for (int l = 0; l <= 7; ++l) {if (j & (1 << l)) continue ;if (i + l > limit) break ;limit = std::min(limit, i + l + b[i + l]);f[i][j | (1 << l)][l + 8] = std::min(f[i][j | (1 << l)][l + 8], f[i][j][k + 8] + ((i + k == 0) ? 0 :(a[i + k] ^ a[i + l])));}}}}}int ans = INF;for (int i = 0; i < MAXX * 2; ++i) ans = std::min(f[n + 1][0][i], ans);printf("%d\n", ans);
}int main() {scanf("%d", &t);while (t--) read_in(), solve();return 0;
}

这篇关于bzoj1226 学校食堂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330328

相关文章

项目解决方案:某市食品安全监测和监管系统解决方案,主要针对区县食品生产企业及学校食堂

目           录 1、概述 2、建设目标及需求 2.1建设目标 2.2需求描述 2.3需求分析 3、设计依据与设计原则 3.1设计依据 3.2设计原则 4、建设方案设计 4.1系统方案设计 4.2方案描述 4.3服务器配置 5、功能介绍 5.1资源管理平台 5.1.1 用户权限管理 5.1.2 用户管理 5.1.3 认证管理 5.1.4 权限管理 5

大数据专业--学校食堂库存在线管理与分析系统毕设源码

摘要: 随着现代科技的发展,学校食堂库存在线管理逐渐受到关注。本文旨在通过引入人工智能技术,对学校食堂库存在线管理进行优化,提高管理效率和准确性。为此,我们采用了人工智能算法,对库存在的食品进行了智能分类和标注,以满足食堂管理人员对食品多样性的需求。 在学校食堂库存的在线管理中,通常需要包括以下功能: 1. 库存录入:将食材和物品信息录入系统,包括名称、数量、单位等。 2. 库存监控:实时监控

基于SSM的学校食堂点餐系统的设计与实现

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于SSM的学校食堂点餐系统的设计与实现 视频演示 基于SSM的学校食堂点餐系统的设计与实现_哔哩哔哩_bilibili 系统介绍 学校食堂点餐系统旨在解决传统食堂管理中的不便之处,提高学生和教职员工的用餐体验。通过该系统,用户可以