题意:

给定n个作业,每个作业有两个值a,b, 第i天完成这个作业会得到value :i*a + b; 但是完成这个任务之前需要完成一些别的任务

思路:

乍一看像是搜索,但是似乎不太行(好像可以写过)

但其实一想,更是dp,状态数(1<<20) ,显然可以状压,想到dp[i][t]  表示 当前做完第i个作业,状态为t时的最大value

然后可以直接滚动数组, dp[t] 直接表示状态t时最优,外层循环状态t, 内层枚举当前做哪个作业

本来我是想着由 dp[t]最优状态 推t状态后加入当前作业i时的最优情况,但是不如上述所说清晰明了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = (1<<20) + 7;
const int INF = 0x3f3f3f3f;int n;
ll dp[maxn];
struct node {ll a, b;int s;vector<int> v;
} p[22];bool is_ok(int sta, int id) {if((sta&(1<<id)) == 0) return false;if(dp[sta^(1<<id)] == -1) return false;for(auto &i : p[id].v) {if((sta&(1<<i)) == 0) {return false;}}return true;
}
ll getnum(int sta) {ll res = 0;while(sta) {if(sta&1) res++;sta >>= 1;}return res;
}
int main() {scanf("%d", &n);for(int i = 0; i < n; ++i) {scanf("%lld%lld%d", &p[i].a, &p[i].b, &p[i].s);p[i].v.clear();for(int j = 0; j < p[i].s; ++j) {int id;scanf("%d", &id);p[i].v.push_back(id-1);}}memset(dp, -1, sizeof dp);dp[0] = 0;ll ans = 0;int tat = (1<<n);for(int i = 0; i < tat; ++i) {for(int j = 0; j < n; ++j) {if(is_ok(i,j)) {dp[i] = max(dp[i], dp[i^(1<<j)] + p[j].a*getnum(i) + p[j].b);ans = max(ans, dp[i]);}}}printf("%lld\n", ans);return 0;
}

ACM-ICPC 2018 南京赛区网络预赛 E.AC Challenge 状压dp相关推荐

  1. ACM-ICPC 2018 南京赛区网络预赛 J AC Challenge (状压dp)

    题意 给你n道题,在你做第ii{i}道题的时候有p[j]p[j]{p[j]}个前置条件,当这些前置条件都满足的时候,我们可以得到a[j]∗t+b[j]a[j]∗t+b[j]a[j] * t + b[j ...

  2. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge 状压DP

    题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest with n (0 < n \le 20)n(0& ...

  3. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge 状压dp

    Dlsj is competing in a contest with n(0<n≤20)n (0 < n \le 20)n(0<n≤20) problems. And he kno ...

  4. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)

    Dlsj is competing in a contest with n (0 < n \le 20)n(0<n≤20) problems. And he knows the answe ...

  5. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge

    题解 题目大意 给你n个问题 要求每分钟解决一个问题 且不能中断 如果中断当前得分为最终得分 每个问题的得分为 解决时间*a[i] + b[i] 有的问题需要先完成某些问题才能做 使用状压DP 用二进 ...

  6. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge

    题目链接:https://nanti.jisuanke.com/t/30994 题意:有n道题,做第i道题首先得做Si道题(p1​,p2​,...,psi​​),做一道题需要一分钟,在t时刻完成第i道 ...

  7. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge(状压dp)

    题目链接:https://nanti.jisuanke.com/t/30994 样例输入1 5 5 6 0 4 5 1 1 3 4 1 2 2 3 1 3 1 2 1 4 样例输出1 55 样例输入2 ...

  8. ACM-ICPC 2018 南京赛区网络预赛丨AC Challenge丨状压DP

    题意: 一个人做n道题目,每道题会收获ai*t+bi的分数,同时要休息一个单位的时间t.此外,还限制做题目i之前,要先完成si道题目{pi1,pi2,···,pisi}求最多获得多少分数. 思路: n ...

  9. ACM-ICPC 2018 南京赛区网络预赛

    轻轻松松也能拿到区域赛名额,CCPC真的好难 An Olympian Math Problem 问答 只看题面 54.76% 1000ms 65536K Alice, a student of gra ...

最新文章

  1. 3.Linux Shell流程控制
  2. Redis的多种启动方式比较!
  3. LIVE 预告 | 佐治亚理工杨笛一:少数据,多框架的自然语言处理
  4. animate用法 js原生_用 原生Javascript 创建带动画的固顶导航菜单
  5. 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transformations
  6. hdu 1241 Oil Deposits 解题报告
  7. mysql数据库特征_如何掌握MySQL数据库中动态表的特征
  8. (转)基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用...
  9. 树莓派RaspberryPi的RPi.GPIO使用指南
  10. matlab的GUI实验——实现简单信号发生器
  11. JVM学习02-虚拟机的基本结构
  12. 计算机系统通过执行通道程序完成数据,计算机系统结构_第四章练习 答案
  13. python解释器配置_Python解释器的配置
  14. python pycharm 无法import win32api、win32con、win32com、win32gui 问题一次解决!方法合集
  15. 笔记 神经网络、BP算法推导
  16. 简单快速获取思维导图
  17. 嵌入式系统开发笔记33:关于“人生苦短,我学Python”这句话的由来
  18. Python语言程序设计基础_期末作品设计——收银软件(2020-2 B)_答案_通识教育必修课程_上海师范大学
  19. G: LZY的计算器
  20. 服务器数据迁移:为知笔记私服数据迁移

热门文章

  1. vue生命周期与vue请求
  2. 拆卸计算机主机的步骤是,组装电脑之intel CPU散热器的安装和拆卸图文教程
  3. 基于RV1126 Video分析-----mipi dphy模块所代表的subdev子设备注册
  4. vue+element表格 <el-select>远程搜索
  5. JAXB根据带继承关系的类生成soap请求的XML报文(互转)
  6. 【0810神策数据笔试】java3道编程
  7. ailx10的hacknet攻略002
  8. 阿里二面: 说一下从url输入到返回请求的过程
  9. MySQL数据库服务的简单开启和关闭
  10. Excel教程:规范Excel表格设计,让工作效率提升百倍不止