题意

gcd 共有 \(n\) 件衣服,编号为 \(A_1,A_2,\cdots A_n\)。

每一件衣服分别拥有颜色值和清洗时间,他在每一件衣服穿完以后都会将其送去清洗,而这件衣服当天所拥有的舒适感取决于当天的天气与他的衣服颜色值的乘积,天气值存在负数。

现给出共 \(m\) 天的天气情况,求最大舒适值。

分析

数据范围极小,考虑状压。

设当前状态为 \(f_{i, j}\) 表示已经过完了第 \(i\) 天,过完第 \(i\) 天之后的衣服状态为 \(j\)。其中 \(j\) 是一个 \(7\) 进制数,它的第 \(k\) 位表示第 \(k\) 件衣服还需要洗几天。(若 \(j = 0\),则表示不需要洗了,可以直接用。)

由于本人比较懒,因此直接用了十进制数代替七进制。(因此拿到了最劣解)。

总状态数最劣为 \(O(m \times \prod y_i)\) 个,在题目数据范围内可过。为了加速,可以提前处理出可用状态。

代码示例

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#define rep(i, a, b) for (int i = (a); i <= (b); i ++ ) using namespace std; using LL = long long;
const int N = 2010; int n, m;
int c[N], t[N], w[N];
LL f[N][7000];
vector<int> state; int get(int x, int k) { // 取出 x 的第 k 位
int res; while (k) res = x % 10, x /= 10, k -- ;
return res;
} bool check(int s) { // 判断状态 s 是否可用
// 判断条件:1. 没有一位大于它最大的清洗时间
// 2. 必须有至少以为是 0,否则 gcd 将没有衣服穿
for (int i = 1; i <= n; i ++ ) if (get(s, i) > t[i]) return false;
for (int i = 1; i <= n; i ++ ) if (!get(s, i)) return true;
return false;
} int modify(int s, int k) { // 改动 s 的第 k 位
// 即:其他衣服的清洗时间 - 1,第 k 天的重置位 t[k]
int ans = 0;
for (int i = n; i; i -- )
if (i == k) ans = ans * 10 + t[k];
else ans = ans * 10 + (get(s, i) > 0 ? get(s, i) - 1 : 0);
return ans;
} int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i ++ )
scanf("%d", &c[i]);
for (int i = 1; i <= n; i ++ )
scanf("%d", &t[i]);
for (int i = 1; i <= m; i ++ )
scanf("%d", &w[i]); for (int i = 0; i < pow(10, n); i ++ ) // 枚举可用状态
if (check(i))
state.push_back(i); // 并存储 memset(f, -0x7f, sizeof f);
f[0][0] = 0;
for (int i = 0; i < m; i ++ )
for (auto j : state)
for (int k = 1; k <= n; k ++ )
if (f[i][j] != -0x7f7f7f7f && !get(j, k))
f[i + 1][modify(j, k)] = max(f[i + 1][modify(j, k)], f[i][j] + w[i + 1] * c[k]); LL res = -0x7f7f7f7f;
for (auto i : state)
res = max(res, f[m][i]);
if (res == -0x7f7f7f7f) puts("gcd loves her clothes!");
else printf("%lld\n", res); return 0;
}

P4928 [MtOI2018]衣服?身外之物! 题解的更多相关文章

  1. 题解 Cicada 拿衣服

    传送门 神仙题! 听@Yubai给我讲了半个下午,快%@Yubai 见到这些奇奇怪怪的题是不是应该试着证下状态数上界啊 首先观察题目里给的柿子,可以发现 \(or-and\) 单调增, \(min-m ...

  2. 题解 P7623 [AHOI2021初中组] 收衣服

    我还在小学的时候以现在初中名义我大五十牛逼参加了这次,然后身败名裂死磕这道题不会,现在觉得自己好傻啊 233333 显然这是要统计每个区间的贡献,所以我们可以打出来这个暴力,统计每个区间的次数,对于 ...

  3. CSUST选拔赛题解

    本鶸鸡于本月10号参加了蔽校的选拔赛,成绩差的死,大部分的题都是赛后花了好长时间才补出来的,其中有些题还是靠QAQorz大佬帮忙才能解决,感谢Qls对我的帮助~接下来就附带上我的暴力题解,大佬们有更好 ...

  4. Bzoj 1229: [USACO2008 Nov]toy 玩具 题解 三分+贪心

    1229: [USACO2008 Nov]toy 玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 338  Solved: 136[Submit] ...

  5. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解

    题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定 ...

  6. [CSP-S模拟测试]:Cicada拿衣服(暴力+乱搞)

    题目传送门(内部题94) 输入格式 第一行两个整数$n,k$,代表衣服的数量和阈值. 接下来一行$n$个数,第$i$个数$a_i$表示每件衣服的愉悦值. 输出格式 输出一行$n$个数,第$i$个数为$ ...

  7. 牛客编程巅峰赛S1第3场 - 青铜&白银 C.牛牛晾衣服(二分)

    题意:有\(n\)件衣服,每件衣服都有\(a_{i}\)滴水,所有衣服每分钟都能自然烘干\(1\)滴水,或者用烘干机,每分钟可以烘干\(k\)滴水,问最快多少分钟可以使所有衣服都烘干. 题解:这题和之 ...

  8. A. 【例题1】奶牛晒衣服

    A . [ 例 题 1 ] 奶 牛 晒 衣 服 A. [例题1]奶牛晒衣服 A.[例题1]奶牛晒衣服 关于很水的题解 既然是最少时间,那么就是由最湿的衣服来决定的.那么考虑烘干机对最湿的衣服进行操作 ...

  9. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  10. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

随机推荐

  1. Java四种引用 强引用,软引用,弱引用,虚引用(转)

    强引用 : 只要引用存在,垃圾回收器永远不会回收 Object obj= new Object(); Object 对象对后面 new Object的一个强引用, 只有当obj这个被释放之后,对象才会 ...

  2. oracle优化-分页查询的错误认识

    对于分页查询,上一篇文章总结了实现分页查询的办法.同时给出等价写法,另外在执行计划角度验证SQL的等价性https://www.cnblogs.com/handhead/p/13856505.html ...

  3. 前端三件套系例之JS——JavaScript基础、JavaScript基本数据类型、JavaScript函数

    文章目录 1 JavaScript基础 1.JavaScript是什么 2.JavaScript介绍 2-1 ECMAScript和JavaScript的关系 2-2 ECMAScript的历史 3. ...

  4. 一个简单的C4.5算法,采用Python语言

    Test1.py 主要是用来运行的 代码如下: # -*- coding: utf-8 -*- from math import log import operator import treePlot ...

  5. 9.11 多校联测 Day1 总结

    我的想法是,你如果没读过题,看了这篇总结完全不能知道题面是啥,不存在泄题风险.所以不设密码力() 状态极差. 昨晚忘记定闹钟,好在早上突然想起今天考试惊醒了,rp--. 不过没有提前一个小时起来导致考 ...

  6. docker 分离engine和client

    背景 由于我个人电脑是2020款m1,16G,256G.一方面,平时除了运行多个浏览器,还有coding 编辑器等等,内存确实很紧张.其次呢,m1 是ARM的架构,所以构建的镜像是无法在X86的机器上 ...

  7. 从windows到linux,图形化操作到命令行操作讲解

    作为一个后端开发人员,刚开始进入到职场中,linux还不是必备项.但是随着开发经验的提升,慢慢就会接触到linux,所以就有了那句:开发必须要会linux.一开始我也不知道linux是干嘛的,学那些命 ...

  8. Python Web UI自动化报错 :ResourceWarning: Enable tracemalloc to get the object allocation traceback

    ResourceWarning资源警告解决方案 原因:在执行线性脚本完毕时,没有及时释放相应资源,导致内存堆积,从而造成内存溢出(如关闭浏览器等操作),此时,Python将会做出提醒: 在百度吸取 网 ...

  9. swiper轮播图出现疯狂抖动(小程序)

    swiper轮播图息屏一段时间或快速滑动切换时出现疯狂抖动 以前做小程序项目的时候,没专门测试人员,都是开发者自测,可能我的手机性能比较不错(哈哈)或时机不对,总之没发掘到这个bug:近期做项目,测试 ...

  10. 平台工程时代的 Kubernetes 揭秘:2023年生产状况报告深度剖析

    Kubernetes 在生产环境中的复杂性已经成为常态,在2023年这个平台工程盛行的时代,容器管理的最大亮点可能在于其灵活性,然而在运维政策和治理等方面仍然存在诸多挑战.八年过去了,在生产环境中使用 ...