vijosP1499炸毁燃料库
背景
某天,外星人展开了对地球的侵略,OIer们开始与之周旋。。。
描述
外星人派出了172849个外星人乘着UFO来到地球,curimit神new带领着OIer们奋力抵抗。curimit神new觉得,仅仅抵抗外星人是不行的,因为外星人还有172849架UFO,必须从根源阻止外星人!
于是curimit神new交给小z一个任务:潜入外星人的基地,摧毁外星人的燃料库。
小z拿着curimit神new给他的地图,来到了外星人的基地。
外星人的燃料库由一排N个燃料筒组成,每个燃料筒中装有一些燃料。小z需要用炸弹炸毁燃料筒。有的燃料筒里面有许多燃料,炸毁它价值就比较高。但有的燃料筒里面只有很少的燃料,甚至没有燃料,所以炸毁它价值很低,甚至不值得去炸毁!于是curimit神new对每个燃料筒有一个估价,有正有负。但是外星人也不是没有防范。在燃料库中有172849个外星人在不停的巡逻,如果小z把任意连续M个燃料筒炸毁K个以上,外星人就会察觉,小z就遭殃了!
于是小z希望你能够帮他定出一个方案,在不被外星人察觉的情况下,能够使自己炸毁的燃料筒的估价和最大(如果所有筒的估价都是负的,那么一个不炸的估价和最大,是0)。
格式
输入格式
第一行有三个数,N,M,K。N<=1000,k<=m<=100。描述见题。
第二行有N个整数,绝对值小于1000,第i个数表示curimit神new对第i个燃料筒的估价。
输出格式
一个数,为满足条件的最大估价和。
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<string>
#define inf 1000000000
#define maxn 100000
#define maxm 100000
#define eps 1e-10
#define ll long long
#define pa pair<int,int>
#define for0(i,n) for(int i=0;i<=(n);i++)
#define for1(i,n) for(int i=1;i<=(n);i++)
#define for2(i,x,y) for(int i=(x);i<=(y);i++)
#define for3(i,x,y) for(int i=(x);i>=(y);i--)
#define mod 1000000007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
return x*f;
}
int n,m,k,mincost,tot=,s,t,a[maxn],head[maxn],q[maxm],d[maxn],from[*maxm];
bool v[maxn];
struct edge{int from,next,go,v,c;}e[*maxm];
void ins(int x,int y,int z,int w)
{
e[++tot].go=y;e[tot].from=x;e[tot].v=z;e[tot].c=w;e[tot].next=head[x];head[x]=tot;
}
void insert(int x,int y,int z,int w)
{
ins(x,y,z,w);ins(y,x,,-w);
}
bool spfa()
{
for (int i=s;i<=t;i++){v[i]=;d[i]=inf;}
int l=,r=,y;q[]=s;d[s]=;v[]=;
while(l!=r)
{
int x=q[++l];if(l==maxn)l=;v[x]=;
for (int i=head[x];i;i=e[i].next)
if(e[i].v&&d[x]+e[i].c<d[y=e[i].go])
{
d[y]=d[x]+e[i].c;from[y]=i;
if(!v[y]){v[y]=;q[++r]=y;if(r==maxn)r=;}
}
}
return d[t]!=inf;
}
void mcf()
{
while(spfa())
{
int tmp=inf;
for(int i=from[t];i;i=from[e[i].from]) tmp=min(tmp,e[i].v);
mincost+=d[t]*tmp;
for(int i=from[t];i;i=from[e[i].from]){e[i].v-=tmp;e[i^].v+=tmp;}
}
}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
n=read();m=read();k=read();
s=;t=n+;
for1(i,n)a[i]=read();
insert(s,,k,);insert(n-m+,t,k,);
for1(i,m)insert(,i+,,-a[i]);
for2(i,m+,n-m)insert(i-m+,i+,,-a[i]);
for2(i,n-m+,n)insert(i-m+,n-m+,,-a[i]);
for1(i,n-m+)insert(i,i+,inf,);
mcf();
printf("%d\n",-mincost);
return ;
}
vijosP1499炸毁燃料库的更多相关文章
- BZOJ-2257 瓶子和燃料 分解因数+数论方面乱搞(裴蜀定理)
一开始真没想出解法...后来发现那么水.... 2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 970 So ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料 裴蜀定理
2257: [Jsoi2009]瓶子和燃料 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- bzoj2257 [Jsoi2009]瓶子和燃料 最大公约数
[Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1449 Solved: 889[Submit][Status][Di ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1326 Solved: 815[Submit][Stat ...
- bzoj2257: [Jsoi2009]瓶子和燃料
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了 ...
- [BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)
[BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子 ...
- [JSOI2009]瓶子和燃料
Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1<=N& ...
- [BZOJ1441&BZOJ2257&BZOJ2299]裴蜀定理
裴蜀定理 对于整系数方程ax+by=m,设d =(a,b) 方程有整数解当且仅当d|m 这个定理实际上在之前学习拓展欧几里得解不定方程的时候就已经运用到 拓展到多元的方程一样适用 BZOJ1441 给 ...
- BZOJ-2257:瓶子和燃料(裴蜀定理)
jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N个瓶子(1<=N<=1000) ,经过 ...
随机推荐
- javaScript的使用
<script>XXX</ccript>HTML文件插入js的主要方法.这个标签主要有以下的几个属性: 1,charset:可选.表示通过src属性指定的字符集. 2,defe ...
- linux下ssh免密登陆
如果 有A.B两台主机: 要实现的效果: A主机ssh登录B主机无需输入password: 加密方式选 rsa|dsa均能够.默认rsa 做法: 1.登录A主机 2.ssh-keygen -t [rs ...
- searchbar的使用介绍
searchBar的使用介绍 首先如何创建一个SearchBar实例: self.searchBar = [[UISearchBar alloc] initWithFrame: CGRectMake( ...
- 实现nodejs的promises库(基于promise.js改写)
原promise.js库地址:https://github.com/stackp/promisejs promises是JavaScript实现优雅编程的一个非常不错的轻量级框架.该框架可以让你从杂乱 ...
- Linux Terminal 控制终端的使用
1. Open new Terminal:Ctrl + Alt + T 或者 Ctrl + Shift + N 2. Open Tab:Ctrl + Shift + T 3. Close Tab:Ct ...
- xeam Build Definition Extension uninstall 卸载
之前在VS上装了Build definition 的扩展,后来发现很不好用,想卸载掉,就增 工具下面找add-in manager, 结果找不到,external tools下面也找不到, googl ...
- Android(java)学习笔记237:多媒体之图形的变化处理
1.图形的缩放 (1)布局文件activity_main.xml如下: <LinearLayout xmlns:android="http://schemas.android.com/ ...
- js 实现关键词球状旋转效果
效果图 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user 'root'@'localhost' (using password: NO)”的解决方案
如上图:首先我安装mysql的时候并没有设置密码,但是就是登不进去,百度了一下,解决方案如下: 解决方案地址:http://zhidao.baidu.com/link?url=7QvuOKtfRdMT ...
- jqPlot,一个 jQuery这个 JavaScript 框架的绘图插件
因为项目中需要做报表的功能,于是学习了如何使用jqplot这个绘图插件 结合ajax技术,动态交互后台数据 前前后后花了三四天的时间. 感觉它会出来的想说还可以. 我的后台模板是bootstrap,在 ...