bzoj 4842: [Neerc2016]Delight for a Cat
Description
Input
Output
#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的更多相关文章
- BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
BZOJ 参考这儿. 首先如果一个活动的时间满足条件,那么另一个活动也一定满足.还有就是这题就是费用流没有为什么.不妨假设最初所有时间都用来睡觉,那么我们要对每个\(k\)大小区间选出\([t2,k- ...
- bzoj 4842 [Neerc2016]Delight for a Cat 最小费用最大流,线性规划
题意:有n个小时,对于第i个小时,睡觉的愉悦值为si,打隔膜的愉悦值为ei,同时对于任意一段连续的k小时,必须至少有t1时间在睡觉,t2时间在打隔膜.如果要获得的愉悦值尽 量大,求最大的愉悦值和睡觉还 ...
- bzoj 4842: [Neerc2016]Delight for a Cat【最小费用最大流】
考试题搞了好久也没懂-- 正解应该是线性规划 https://www.cnblogs.com/CQzhangyu/p/7894559.html 可是不会写啊 如果从网络流的角度来体会大概是这样 htt ...
- 【BZOJ4842】[Neerc2016]Delight for a Cat 线性规划+费用流
[BZOJ4842][Neerc2016]Delight for a Cat Description ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打 ...
- [bzoj4842][bzoj1283][Neerc2016]Delight for a Cat/序列_线性规划_费用流
4842: [Neerc2016]Delight for a Cat_1283: 序列 题目大意:ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打隔膜 ...
- 题解-bzoj1283序列 & bzoj4842 [Neerc2016]Delight for a Cat
因为这两题有递进关系,所以放一起写 Problem bzoj1283 序列 题意概要:一个长度为 \(n\) 的序列\(\{c_i\}\),求一个子集,使得原序列中任意长度为 \(m\) 的子串中被选 ...
- bzoj4842: [Neerc2016]Delight for a Cat
bzoj4842 这是一道网络流的题(大家都看出来了吧) 首先我们简化一下题目,选出最关键的部分(就是知道什么和要求什么,还有条件) 我们在这里把睡觉设为0,至少有t0时间在睡觉,把打隔膜设为1,至少 ...
- 【bzoj4842】[Neerc2016]Delight for a Cat 线性规划与网络流
题目描述 $n$ 个连续的位置,每个位置可以填入 S 和 E ,第 $i$ 个位置填入 S 可以获得 $s_i$ 的收益,填入 E 可以获得 $e_i$ 的收益.要求每连续的 $k$ 个位置必须包含至 ...
- 【xsy2115】Delight for a Cat
Time Limit: 1000 ms Memory Limit: 512 MB Description 从前,有一只懒猫叫CJB.每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东 ...
随机推荐
- slice,Array.prototype.slice,Array.protyotype.slice.call
slice 特点:基于当前数组中的一或多个项创建一个新数组.[原数组不会被修改] 返回结果:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象. 语法: arr.slice() ...
- C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“
原文地址:http://blog.csdn.net/onlyou930/article/details/5602654 圆环套圆环之迭代器 话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令 ...
- TCP/IP网络知识点总结
学完了计算机网络是时候整理一篇总结了,温故知新.注意:这篇博客很长长长(2.5万字+50图). TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是 ...
- CMMI的5个级别
为了帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地.不超预算地开发出高质量的软件,美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制了CMMI(软件能力成熟度模型 ...
- CS231n 斯坦福深度视觉识别课 学习笔记(完结)
课程地址 第1章 CS231n课程介绍 ---1.1 计算机视觉概述 这门课的主要内容是计算机视觉.它是一门需要涉及很多其他科目知识的学科. 视觉数据占据了互联网的绝大多数,但是它们很难利用. --- ...
- Codeforces 698A:Vacations(DP)
题目链接:http://codeforces.com/problemset/problem/698/A 题意 Vasya在n天中,有三件事情可以做,健身.比赛或者休息,但是不能连续两天都是比赛或都是但 ...
- Math对象的属性和方法
Math对象是js提供给我们用于运算的方法的集合.若进行数学逻辑上不允许的运算,返回NaN. 属性:Math.E 返回算数常量e(2.718281828459045) Math.LN2 返回2的自然对 ...
- IP相关的方法
1.验证是否为IP地址 def isIP(ip, with_netmask=True): """ 判断IP的格式是否正确 :param ip: IP字符串 :param ...
- python 编码类型
碰到各种编码混用, 则需要搞清楚. http://blog.csdn.net/lxdcyh/article/details/4018054. https://www.jianshu.com/p/a5b ...
- 多个sshkey 指定key来clone仓库
Something like this should work (suggested by orip): ssh-agent bash -c 'ssh-add /somewhere/yourkey; ...