一共也就7种课,第7种可以贪心地选择一定睡觉以换取答案的最小值。

那么我们就只剩下六种课需要讨论,状态压缩一下【当前的课之前睡过哪些课】即可。

本题要在二分的check内写DP,用二分出来的疲劳极限作为限制条件。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
using namespace std;
template<class T> inline void read(T &_a){bool f=0;int _ch=getchar();_a=0;while(_ch<'0' || _ch>'9'){if(_ch=='-')f=1;_ch=getchar();}while(_ch>='0' && _ch<='9'){_a=(_a<<1)+(_a<<3)+_ch-'0';_ch=getchar();}if(f)_a=-_a;
}const int maxn=5001;
long long n,c[maxn],js[maxn],zj[maxn],l,mid,r,init,dp[maxn][(1<<6)+5];inline bool check()
{memset(dp,0x7f,sizeof(dp));dp[0][0]=init;for (register int i=1;i<=n;++i){if(c[i]==7){for (register int v=0;v<64;++v)if (dp[i-1][v]<=mid) dp[i][v]=dp[i-1][v]-js[i];continue;}int symbol=(1<<(c[i]-1));for (register int v=0;v<64;++v){if(v&symbol) { if(dp[i-1][v^symbol]<=mid) dp[i][v]=dp[i-1][v^symbol]-js[i]; }else {if(dp[i-1][v]<=mid) dp[i][v]=min(dp[i][v],dp[i-1][v]+zj[i]);if(dp[i-1][v^symbol]<=mid) dp[i][v]=min(dp[i][v],dp[i-1][v^symbol]+zj[i]);}}}for (register int v=0;v<64;++v)if(dp[n][v]<=mid) return true;return false;
}int main()
{freopen("survive.in","r",stdin);freopen("survive.out","w",stdout);read(n);for (register int i=1;i<=n;++i) read(c[i]);for (register int i=1;i<=n;++i) read(js[i]);for (register int i=1;i<=n;++i) read(zj[i]),r+=zj[i];read(init); l=init; r+=l;long long ans;while(l<=r){mid=(l+r)>>1;if(check()) ans=mid,r=mid-1;else l=mid+1;}printf("%lld",ans);fclose(stdin);fclose(stdout);return 0;
}

转载于:https://www.cnblogs.com/jaywang/p/7745330.html

不死的LYM NOIP模拟 二分+状压DP相关推荐

  1. CodeForces - 1550E Stringforces(二分+状压dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,只包含前 kkk 个小写字母以及通配符 ???,现在可以将通配符替换成任意的前 kkk 个字母中的一个.设 f[i]f[i]f[i] 为 ...

  2. [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)

    [2021-07-19 内测] NOIP 操作 description solution code 异或 description solution code 等级 description soluti ...

  3. Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi​表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...

  4. P3802不死(二分答案+状压dp验证)

    子曰:不睡觉就会死. 深信此话的LYM决定在本学期接下来的n节课上考虑一下睡觉的问题.LYM认为如果在一堂课上睡觉,身体的疲劳值就会下降,反之如果在一堂课上不睡觉,身体的疲劳值就会上升.而身体对疲劳的 ...

  5. NOIP模拟 整数划分(数论,质因数分解,状压DP)

    这道题竟然暴力能拿到90分,大佬orzorzorz%%%%%%%%%%% --------------------------分割线(下面是正解)--------------------------- ...

  6. [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)

    一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...

  7. 道路覆盖 (二分答案+状压DP)

    Description: Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k ...

  8. 【2022国赛模拟】无损加密——LGV引理、状压DP

    原创题无来源 题目描述 题解 首先把问题稍作简化,我们可以最后把行列式乘上所有 dkd_kdk​ 的积的 nnn 次方,这样前面的过程就不用考虑 dkd_kdk​ 了,暴力也只需要变动 [lk,rk] ...

  9. 【gmoj4743】【8.11模拟赛T1】积木【状压DP/暴搜】

    题目链接:积木 分析 这题数据也太水了吧我喜欢 可以直接暴力搜索每一个积木的每一个顺序的每一种放置方法. 阶乘级别的复杂度,居然能过就离谱. 正解是状压DP.f[i][j][k]f[i][j][k]f ...

最新文章

  1. Handlebars.js 模板引擎
  2. 力扣(leetcode)-1. 两数之和
  3. 万亿市场下,电商代运营还需另求“第二曲线”
  4. C语言函数参数压栈顺序为何是从右到左?
  5. github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
  6. NOIP练习赛题目6
  7. Win-MASM64汇编语言-通用寄存器AX/BX/CX/DX/SI/DI/BP
  8. 在html中显示word,如何在浏览器网页中显示word文件内容
  9. 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址
  10. php socket 执行,PHP异步调用socket实现代码
  11. 使用Setup Factory把java应用打包成安装软件并更改默认安装路径
  12. C语言趣味题:猜数字游戏(含代码创建思路与过程)
  13. html购物页面产品展示,html5 3D交互式房间购物商品展示特效
  14. 《海外社交媒体营销》一一第1章 电商创业起步
  15. 有一个网页地址, 比如百度主页: https://www.baidu.com/ 如何得到它的内容?
  16. NLP的bigrams函数“generator object bigrams at 0x000001D32A95A678“问题解决
  17. MP3格式转WAV格式
  18. vue3+ts import引用报错Could not find a declaration file for module ‘three-obj-mtl-loader‘.
  19. 四位数码管显示多位数字计时
  20. JAVA常用单词汇总

热门文章

  1. 【笔试与面试】中软国际
  2. 半导体物理实验 04 - | 椭圆仪测量薄膜厚度
  3. mysql client 使用_mysqlclient怎么使用
  4. 基于QT的电子相册设计与实现
  5. Qt学习之显示类的控件(QLabel、QTextBrowser、QGraphicsView、QCalendarWidget、QWebView、QProgressBar、QOpenGLWidget)
  6. GSWiFi路由器苹果安卓手机辅助连接通用方法-网线版(图文教程)
  7. 文件:因为懂你,所以永恒 +习题复习
  8. MySql 根据身份证号判断年龄所属省份与性别男女
  9. oracle10g rac启动,oracle 10G rac启动与关闭正常顺序
  10. 科技有毒 | 今天,请互联网人狠狠爱自己!