Review For Exam
Review For Exam
[2019 福建省赛]
一个很简单的状态压缩DP,结果集体走偏
如何解决连续几日的限制问题?这种东西普通的DP很难写
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1010;
ll dp[maxn][1050];
ll val[maxn];
bool vis[1050];
const ll inf =0x3f3f3f3f3f3f3f3f;
int main() {
int n,k,a,b;
scanf("%d%d%d%d",&n,&k,&a,&b);
for(int i=1;i<=n;++i) scanf("%lld",&val[i]);
int mx=(1<<k)-1;
memset(dp,-0x3f3f3f3f,sizeof(dp));
for(int j=0,tmp;j<=mx;++j){
tmp=0;
for(int i=0;i<k;++i){
if((j>>i)&1){
tmp++;
}
}
if(tmp<=b&&tmp>=a) {
vis[j]=1;
dp[1][j]=0;
for(int i=0;i<k;++i){
if((j>>i)&1){
dp[1][j]+=val[k-i];
}else{
dp[1][j]-=val[k-i];
}
}
}
}
int tmp,tmpp,op;
for(int i=2;i<=n-k+1;++i){
for(int j=0;j<=mx;++j){
if(vis[j]){
tmp=j>>1;
tmpp=tmp+(1<<(k-1));
op=j%2;
if(op){
if(vis[tmp])
dp[i][j]=max(dp[i-1][tmp]+val[i+k-1],dp[i][j]);
if(vis[tmpp])
dp[i][j]=max(dp[i-1][tmpp]+val[i+k-1],dp[i][j]);
}else{
if(vis[tmp])
dp[i][j]=max(dp[i-1][tmp]-val[i+k-1],dp[i][j]);
if(vis[tmpp])
dp[i][j]=max(dp[i-1][tmpp]-val[i+k-1],dp[i][j]);
}
}
}
}
ll ans=-inf;
for(int j=0;j<=mx;++j){
ans=max(dp[n-k+1][j],ans);
}
printf("%lld\n",ans);
return 0;
}
Review For Exam的更多相关文章
- 线性代数导论 | Linear Algebra 课程
搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...
- Samples topic
Rendering: http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.c ...
- 面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】
写在前面: 我记得也不全,如果有记录的更全的同学可以留言,我会添加哒 :) 常量 内敛函数 为什么需要内敛函数 内敛函数适用于什么场合 内敛函数本身,最大优点是,避免了真正函数调用的开销 因为普通函数 ...
- (转)ZOJ 3687 The Review Plan I(禁为排列)
The Review Plan I Time Limit: 5 Seconds Memory Limit: 65536 KB Michael takes the Discrete Mathe ...
- Exam(贪心)
Exam Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 【Java】-NO.20.Exam.1.Java.1.001- 【1z0-807】- OCEA
1.0.0 Summary Tittle:[Java]-NO.20.Exam.1.Java.1.001-[1z0-807] Style:EBook Series:Java Since:2017-10- ...
- hdu 5240 Exam(贪心)
Exam Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- The Review Plan I-禁位排列和容斥原理
The Review Plan I Time Limit: 5000ms Case Time Limit: 5000ms Memory Limit: 65536KB 64-bit integer ...
- ZOJ 3687 The Review Plan I
The Review Plan I Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origi ...
随机推荐
- C++命名规范——谷歌规范
1.文件命名规则 文件名全部小写,可以含下划线或连字符,按项目约定命名,且尽量保证文件名明确.比如: cmd_save_player_info_class.cc ,my_use_full_class. ...
- promise核心 为什么用promise
为什么要用promise 1.使用纯回调函数 先指定回调函数,再启动异步任务 答 1.指定回调函数的方式更加灵活 可以在执行任务前,中,后 2.支持链式调用,解决回调地狱问题 什么是回调地狱:回调函数 ...
- java 微信红包算法代码实现及架构设计
转载至:https://www.zybuluo.com/yulin718/note/93148 微信红包的架构设计简介 架构 @来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈 ...
- POJ 1013:Counterfeit Dollar
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42028 Accepted: 13 ...
- webservice wsdl文件标签讲解
<?xml version="1.0" encoding="utf8"?> <wsdl:definitions targetNamespace ...
- vue 插槽 part3
f vue中的插槽 1.<slot>默认内容</slot> 当副组件不传递信息的时候 显示默认内容 2.<slot></slot> 显示的是插槽中所有的 ...
- XML技术详解
XML 1.XML概述 XML可扩展标记语言是一种基于文本的语言用作应用程序之间的通信模式,是一个非常有用的描述结构化信息的技术.XML工具使得转化和处理数据变得十分容易,但同样也要领域相关的标准和代 ...
- 十六进制转化二进制[c]
#include<stdio.h> #include<string.h> #include<stdlib.h> int hex2dec(char c) { ; // ...
- leetcode中二分查找的具体应用
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- 成为优秀Angular开发者所需要学习的19件事
一款to-do app基本等同于前端开发的"Hello world".虽然涵盖了创建应用程序的CRUD方面,但它通常只涉及那些框架或库也能做到的皮毛而已. Angular看起来似乎 ...