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的更多相关文章

  1. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  2. Samples topic

    Rendering: http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.c ...

  3. 面向对象程序设计-C++ Finial exam review NOTES【第十六次上课笔记】

    写在前面: 我记得也不全,如果有记录的更全的同学可以留言,我会添加哒 :) 常量 内敛函数 为什么需要内敛函数 内敛函数适用于什么场合 内敛函数本身,最大优点是,避免了真正函数调用的开销 因为普通函数 ...

  4. (转)ZOJ 3687 The Review Plan I(禁为排列)

    The Review Plan I Time Limit: 5 Seconds      Memory Limit: 65536 KB Michael takes the Discrete Mathe ...

  5. Exam(贪心)

    Exam Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. 【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- ...

  7. hdu 5240 Exam(贪心)

    Exam Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. The Review Plan I-禁位排列和容斥原理

    The Review Plan I Time Limit: 5000ms Case Time Limit: 5000ms Memory Limit: 65536KB   64-bit integer ...

  9. ZOJ 3687 The Review Plan I

    The Review Plan I Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origi ...

随机推荐

  1. logrotate+crond日志切割、轮询

    logrotate 在工作中经常会有需求去查看日志,无论是通过应用或者系统error日志去查找问题或者通过nginx的访问日志统计站点日均PV.UV.所以体现了日志的重要性,但是通常当业务越来越大的时 ...

  2. MySQL-复制技术演进过程

    复制技术的演进可以分为:基于数据安全的复制,基于效率的复制 基于数据安全的复制 异步复制 参考: https://baijiahao.baidu.com/s?id=163939455634386120 ...

  3. Android进阶——多线程系列之Thread、Runnable、Callable、Future、FutureTask

    多线程一直是初学者最抵触的东西,如果你想进阶的话,那必须闯过这道难关,特别是多线程中Thread.Runnable.Callable.Future.FutureTask这几个类往往是初学者容易搞混的. ...

  4. Android自定义View——贝塞尔曲线实现水波纹效果

    我们使用到的是Path类的quadTo(x1, y1, x2, y2)方法,属于二阶贝塞尔曲线,使用一张图来展示二阶贝塞尔曲线,这里的(x1,y1)是控制点,(x2,y2)是终止点,起始点默认是Pat ...

  5. MySQL的DDL和DML

    SQL语句:结构化查询语句,使用SQL与数据库“沟通”,完成相应的数据库操作. 语句分类 DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表.索引 ...

  6. 81.常用的返回QuerySet对象的方法使用详解:values和values_list

    values: 指定提取的数据库表中的字段值,如果不指定任何的字段名的话,默认情况下会提取所有的字段值.但是需要注意的是使用values返回的QuerySet对象中包括的是一个个的字典. 1.提取与A ...

  7. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  8. MySQL数据库索引常见问题

    笔者看过很多数据库相关方面的面试题,但大多数答案都不太准确,因此决定在自己blog进行一个总结. Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+ ...

  9. mybatis-地区三表生成地区树

    package com.dhht.manager.vo.area; import lombok.Data; import java.io.Serializable;import java.util.L ...

  10. Luogu P3031 高于中位数

    定义序列\(x_i = f([H_i >=x])\;\;\;\;其中f(0) = -1,f(1) = 1\),那么区间[i,j]满足条件当且仅当sum_j-sum_{i-1} > 0,即s ...