【简●解】学校食堂

【大意】#

懒癌晚期,直接丢传送门,,,

【分析】#

开始拿到这道题没有太多的思路,再看了看数据范围,Bi7??应该是状压吧,,,然后开始往状压上想。还真是呢。。。

开始推了个错误的方程导致一直WA,后来瞟了眼题解,才发现自己方程的状态没有表示完,,,

我们设f[i][j][k]表示前i1个人已经打完了饭,第i个人以及后面7个人打饭的状态为j,最后一个打饭的人的编号为i+k,容易知道k的范围为8k7,那么转移就比较明显了。

先考虑j&1,即第i个人打好饭时,那么就可以直接转移到f[i+1][j>>1][k1]

再思考其他情况,它们只能在f[i][...][...]以内转移。

因为1~i1已经打完饭,所以考虑枚举打i+h(0h7)的饭,如果符合情况就转移到f[i][j|(1<<h)][h]

又因为k可以取到负数,所以就把第三维加个偏移量,就行了。

【Code】#

Copy
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> const int BASE = 8; const int MAX = 1000 + 5; const int INF = 0x3f3f3f3f; inline int read(){ bool f = 0;int x = 0;char ch; do { ch = getchar(); if (ch == '-') f = 1; } while (ch < '0' || ch > '9'); do {x = (x << 3) + (x << 1) + ch - '0'; ch = getchar(); } while (ch >= '0' && ch <= '9'); return f ? ~x + 1 : x; } inline int min(int a, int b) { return a < b ? a : b; } int C, n, t[MAX], b[MAX], f[MAX][1 << 8][20], rate, ans; int main(){ C = read(); while (C--) { n = read(); ans = INF; for (int i = 1;i <= n; ++i) { t[i] = read(), b[i] = read(); } memset(f, 0x3f, sizeof f); f[1][0][BASE - 1] = 0; for (int i = 1;i <= n; ++i) { for (int j = 0;j < (1 << 8); ++j) { for (int k = -8;k <= 7; ++k) { if (f[i][j][k + BASE] != INF) { if (j & 1) { f[i + 1][j >> 1][k - 1 + BASE] = min(f[i + 1][j >> 1][k - 1 + BASE], f[i][j][k + BASE]); } else { rate = INF; for (int h = 0;h <= 7; ++h) if (!((j >> h) & 1)){ if (i + h > rate) break; rate = min(rate, i + h + b[i + h]); f[i][j | (1 << h)][h + BASE] = min(f[i][j | (1 << h)][h + BASE], f[i][j][k + BASE] + ((i + k) ? (t[i + k] | t[i + h]) - (t[i + k] & t[i + h]) : 0)); } } } } } } for (int k = 0;k <= 8; ++k) ans = min(f[n + 1][0][k], ans); printf("%d\n", ans); } return 0; }
posted @   SilentEAG  阅读(187)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
CONTENTS