不死的LYM NOIP模拟 二分+状压DP
一共也就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相关推荐
- CodeForces - 1550E Stringforces(二分+状压dp)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,只包含前 kkk 个小写字母以及通配符 ???,现在可以将通配符替换成任意的前 kkk 个字母中的一个.设 f[i]f[i]f[i] 为 ...
- [2021-07-19 内测NOIP] 操作(状压DP),异或(字典树),等级(线段树),矩阵(DP)
[2021-07-19 内测] NOIP 操作 description solution code 异或 description solution code 等级 description soluti ...
- Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp
传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...
- P3802不死(二分答案+状压dp验证)
子曰:不睡觉就会死. 深信此话的LYM决定在本学期接下来的n节课上考虑一下睡觉的问题.LYM认为如果在一堂课上睡觉,身体的疲劳值就会下降,反之如果在一堂课上不睡觉,身体的疲劳值就会上升.而身体对疲劳的 ...
- NOIP模拟 整数划分(数论,质因数分解,状压DP)
这道题竟然暴力能拿到90分,大佬orzorzorz%%%%%%%%%%% --------------------------分割线(下面是正解)--------------------------- ...
- [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)
一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...
- 道路覆盖 (二分答案+状压DP)
Description: Tar 把一段凹凸不平的路分成了高度不同的 N 段(每一段相同高度),并用 H[i] 表示第 i 段高度.现在 Tar 一共有 n 种泥土可用,它们都能覆盖给定的连续的 k ...
- 【2022国赛模拟】无损加密——LGV引理、状压DP
原创题无来源 题目描述 题解 首先把问题稍作简化,我们可以最后把行列式乘上所有 dkd_kdk 的积的 nnn 次方,这样前面的过程就不用考虑 dkd_kdk 了,暴力也只需要变动 [lk,rk] ...
- 【gmoj4743】【8.11模拟赛T1】积木【状压DP/暴搜】
题目链接:积木 分析 这题数据也太水了吧我喜欢 可以直接暴力搜索每一个积木的每一个顺序的每一种放置方法. 阶乘级别的复杂度,居然能过就离谱. 正解是状压DP.f[i][j][k]f[i][j][k]f ...
最新文章
- Handlebars.js 模板引擎
- 力扣(leetcode)-1. 两数之和
- 万亿市场下,电商代运营还需另求“第二曲线”
- C语言函数参数压栈顺序为何是从右到左?
- github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
- NOIP练习赛题目6
- Win-MASM64汇编语言-通用寄存器AX/BX/CX/DX/SI/DI/BP
- 在html中显示word,如何在浏览器网页中显示word文件内容
- 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址
- php socket 执行,PHP异步调用socket实现代码
- 使用Setup Factory把java应用打包成安装软件并更改默认安装路径
- C语言趣味题:猜数字游戏(含代码创建思路与过程)
- html购物页面产品展示,html5 3D交互式房间购物商品展示特效
- 《海外社交媒体营销》一一第1章 电商创业起步
- 有一个网页地址, 比如百度主页: https://www.baidu.com/ 如何得到它的内容?
- NLP的bigrams函数“generator object bigrams at 0x000001D32A95A678“问题解决
- MP3格式转WAV格式
- vue3+ts import引用报错Could not find a declaration file for module ‘three-obj-mtl-loader‘.
- 四位数码管显示多位数字计时
- JAVA常用单词汇总
热门文章
- 【笔试与面试】中软国际
- 半导体物理实验 04 - | 椭圆仪测量薄膜厚度
- mysql client 使用_mysqlclient怎么使用
- 基于QT的电子相册设计与实现
- Qt学习之显示类的控件(QLabel、QTextBrowser、QGraphicsView、QCalendarWidget、QWebView、QProgressBar、QOpenGLWidget)
- GSWiFi路由器苹果安卓手机辅助连接通用方法-网线版(图文教程)
- 文件:因为懂你,所以永恒 +习题复习
- MySql 根据身份证号判断年龄所属省份与性别男女
- oracle10g rac启动,oracle 10G rac启动与关闭正常顺序
- 科技有毒 | 今天,请互联网人狠狠爱自己!