Description

ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜
,因此一个小时内他只能选择睡觉或者打隔膜,当然他也必须选择睡觉或打隔膜,对于每一个小时,他选择睡觉或
打隔膜的愉悦值是不同的,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时又有一个奥妙重重的
规定:对于任意一段连续的k小时,ls必须至少有t1时间在睡觉,t2时间在打隔膜。那么ls想让他获得的愉悦值尽
量大,他该如何选择呢?

Input

第一行四个整数,n,k(1<=k<=n<=1000),t1,t2(0<=t1,t2<=k;t1+t2<=k),含义如上所述。
接下来一行n个整数,第i个整数si(0<=si<=1e9)表示睡觉的愉悦值。
接下来一行n个整数,第i个整数ei(0<=ei<=1e9)表示打隔膜的愉悦值。

Output

第一行输出最大的愉悦值。
接下来一行输出一个长度为n的字符串
第i个字符为E则代表第i小时在打隔膜,第i个字符为S则代表第i个小时在睡觉。
将每个点和每个长度D的区间看作边,限制条件看作流量上下界,差分建图,无源汇最大费用费用流
#include<cstdio>
#include<queue>
typedef long long i64;
const int N=;
const i64 inf=1ll<<;
int n,k,L,R,as[N],bs[N];
int S,T,es[N],enx[N],ev[N],ec[N],e0[N],ep=,pe[N];
i64 l[N],ans=;
bool in[N];
std::queue<int>q;
void ae(int a,int b,int v,int c){
if(!v)return;
es[ep]=b;enx[ep]=e0[a];ev[ep]=v;ec[ep]=c;e0[a]=ep++;
es[ep]=a;enx[ep]=e0[b];ev[ep]=;ec[ep]=-c;e0[b]=ep++;
}
void mins(int&a,int b){if(a>b)a=b;}
bool sp(){
for(int i=;i<=T;++i)l[i]=-inf;
l[S]=;
q.push(S);
while(q.size()){
int w=q.front();q.pop();
for(int i=e0[w];i;i=enx[i])if(ev[i]){
int u=es[i];
if(l[u]<l[w]+ec[i]){
l[u]=l[w]+ec[i];
pe[u]=i;
if(!in[u])in[u]=,q.push(u);
}
}
in[w]=;
}
if(l[T]>-inf){
int f=;
for(int w=T,e;w!=S;w=es[e^]){
e=pe[w];
mins(f,ev[e]);
}
for(int w=T,e;w!=S;w=es[e^]){
e=pe[w];
ev[e]-=f;
ev[e^]+=f;
}
ans+=l[T]*f;
return ;
}
return ;
}
int ee[N];
int main(){
scanf("%d%d%d%d",&n,&k,&L,&R);
R=k-R;
for(int i=;i<=n;++i)scanf("%d",as+i);
for(int i=;i<=n;++i)scanf("%d",bs+i);
S=n-k+;T=S+;
for(int i=;i<=n-k+;++i)ae(i,i+,R-L,);
ae(,T,L,);
ae(S,n-k+,L,);
for(int i=;i<=n;++i){
ans+=bs[i];
int x=i-k+,y=i+;
if(x<)x=;
mins(y,n-k+);
int c=as[i]-bs[i];
if(c<=)ee[i]=ep,ae(y,x,,c);
else{
ae(y,T,,);
ae(S,x,,c);
ee[i]=ep;
ae(x,y,,-c);
}
}
while(sp());
printf("%lld\n",ans);
for(int i=;i<=n;++i){
int c=as[i]-bs[i];
putchar((c<=)==(!ev[ee[i]])?'S':'E');
}
return ;
}

bzoj 4842: [Neerc2016]Delight for a Cat的更多相关文章

  1. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)

    BZOJ 参考这儿. 首先如果一个活动的时间满足条件,那么另一个活动也一定满足.还有就是这题就是费用流没有为什么.不妨假设最初所有时间都用来睡觉,那么我们要对每个\(k\)大小区间选出\([t2,k- ...

  2. bzoj 4842 [Neerc2016]Delight for a Cat 最小费用最大流,线性规划

    题意:有n个小时,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时对于任意一段连续的k小时,必须至少有t1时间在睡觉,t2时间在打隔膜.如果要获得的愉悦值尽 量大,求最大的愉悦值和睡觉还 ...

  3. bzoj 4842: [Neerc2016]Delight for a Cat【最小费用最大流】

    考试题搞了好久也没懂-- 正解应该是线性规划 https://www.cnblogs.com/CQzhangyu/p/7894559.html 可是不会写啊 如果从网络流的角度来体会大概是这样 htt ...

  4. 【BZOJ4842】[Neerc2016]Delight for a Cat 线性规划+费用流

    [BZOJ4842][Neerc2016]Delight for a Cat Description ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打 ...

  5. [bzoj4842][bzoj1283][Neerc2016]Delight for a Cat/序列_线性规划_费用流

    4842: [Neerc2016]Delight for a Cat_1283: 序列 题目大意:ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜 ...

  6. 题解-bzoj1283序列 & bzoj4842 [Neerc2016]Delight for a Cat

    因为这两题有递进关系,所以放一起写 Problem bzoj1283 序列 题意概要:一个长度为 \(n\) 的序列\(\{c_i\}\),求一个子集,使得原序列中任意长度为 \(m\) 的子串中被选 ...

  7. bzoj4842: [Neerc2016]Delight for a Cat

    bzoj4842 这是一道网络流的题(大家都看出来了吧) 首先我们简化一下题目,选出最关键的部分(就是知道什么和要求什么,还有条件) 我们在这里把睡觉设为0,至少有t0时间在睡觉,把打隔膜设为1,至少 ...

  8. 【bzoj4842】[Neerc2016]Delight for a Cat 线性规划与网络流

    题目描述 $n$ 个连续的位置,每个位置可以填入 S 和 E ,第 $i$ 个位置填入 S 可以获得 $s_i$ 的收益,填入 E 可以获得 $e_i$ 的收益.要求每连续的 $k$ 个位置必须包含至 ...

  9. 【xsy2115】Delight for a Cat

    Time Limit: 1000 ms Memory Limit: 512 MB Description ​ 从前,有一只懒猫叫CJB.每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东 ...

随机推荐

  1. scrapy-redis基础和介绍

    一.scrapy-redis(0.6)依赖的环境 Scrapy >= 1.0.0                #终于过了1版本,这个太重要了,总算坑小了点,感谢那些为了解决各种scrapy与s ...

  2. bzoj3065

    题解: 替罪羊树 (讲道理昨天讲课我一点都听不懂) alpha取到0.75比较好(当然啦可能其他的更好) 每当不满足条件的时候就重构 代码: #include<bits/stdc++.h> ...

  3. bzoj4001

    题解: 答案就是n*(n+1)/2/(2*n-1) 代码: #include<bits/stdc++.h> double n; int main() { scanf("%lf&q ...

  4. axure 认证授权注册码2017-12-25

    Licensee: University of Science and Technology of China (CLASSROOM)Key: DTXRAnPn1P65Rt0xB4eTQ+4bF5IU ...

  5. iOS开发多线程篇—GCD简介

    iOS开发多线程篇—GCD介绍 一.简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 G ...

  6. centos下tomcat启动卡死

    遇到好几次了,总是忘记哪个位置~!!! tomcat启动时查看日志会卡在一个位置很长时间,如下 28-Aug-2018 22:56:55.216 INFO [localhost-startStop-1 ...

  7. 解决 Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg'

    解决 Error: could not open `C:\Program Files\Java\jre7\lib\i386\jvm.cfg' 重装JDK后,因为没有装在以前的目录,运行java命令后报 ...

  8. layer弹出相册层

    如果想要制作一个简单的相册,可以采用这个插件的方法.如果你的图片是从后台传过来的json格式里,可以通过ajax加载让图片显示在页面上,然后在使用layer插件,做出点击以后就可以查看大图的效果. 一 ...

  9. chapter02“良/恶性乳腺癌肿瘤预测”的问题

    最近比较闲,是时候把自己以前看的资料整理一下了. LogisticRegression:由于在训练过程中考虑了所有的样本对参数的影响,因此不一定获得最佳的分类器,对比下一篇 svm只用支持向量来帮助决 ...

  10. C# 解析excel时,字段内有内容,却读取不到的解决方法

    C# 解析excel时,字段内有内容,却读取不到的解决方法:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ...