cogs 餐巾 461(贪心)
/*虽然这暴力剪了又剪 改了又改 还是初始的20分...*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 2010
using namespace std;
int n,sum,c[maxn],ans,p,t1,t2,c1,c2,f[maxn];
void Dfs(int now,int cost)
{
if(cost>=ans)return;
if(now==n){ans=min(ans,cost);return;}
int a,b,x=;
for(int i=;i<=c[now];i++)
{
b=c[now]-i;a=i;
if(a>c[now+t1]-f[now+t1])a=c[now+t1]-f[now+t1];
if(b>c[now+t2]-f[now+t2])b=c[now+t2]-f[now+t2];
if((a&&now+t1>n)||(b&&now+t2>n))continue;
f[now+t1]+=a;f[now+t2]+=b;
x=max(,c[now+]-f[now+]);
Dfs(now+,cost+x*p+a*c1+b*c2);
f[now+t1]-=a;f[now+t2]-=b;
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&c[i]),sum+=c[i];
scanf("%d%d%d%d%d",&p,&t1,&c1,&t2,&c2);
ans=sum*p;Dfs(,c[]*p);
printf("%d\n",ans);
return ;
}
/*
标签是网络流 然而并不会
贪心的复杂度是 O(Σci)ci为每天的需求
比较大......
如果暴力的话 每天的状态需要枚举那几个来自慢洗的 那几个来自快洗的 那几个来自买的
复杂度高到上天....
我们可以从买的角度考虑 枚举一共买多少 尽量先给前面 这样后面可供使用的就多
当买了不够了的话 就用洗出来的补
对于i时刻 显然优先用慢洗出来的补更便宜 慢洗的用完了在用快洗的
这里用快洗的时候要优先使用隔得近的 保证后面的状态可以得到更多的慢洗的
then 就是代码了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 2010
using namespace std;
int n,p,sum,mxx,c1,c2,t1,t2,c[maxn],Zang[maxn],ans,falg;
int cnow,nump,ci,num1,num2;
int main()
{
//freopen("napkin.in","r",stdin);
//freopen("napkin.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&c[i]),sum+=c[i],mxx=max(mxx,c[i]);
scanf("%d%d%d%d%d",&p,&t1,&c1,&t2,&c2);
ans=sum*p;
for(int k=sum-;k>=mxx;k--)//枚举一共买多少
{
cnow=k*p;nump=k;
for(int i=;i<=n;i++)
{
if(nump>=c[i]){nump-=c[i];Zang[i]=c[i];}//前面的优先买 提前拿去洗 更优
else
{
ci=c[i]-nump;//除了买来的 还需要几个
num1=num2=nump=;
for(int j=;j<=i-t2;j++)//慢洗的优先
{
if(ci>num2)
{
num2+=Zang[j];Zang[j]=;
if(num2>=ci)
{
Zang[j]=num2-ci;num2=ci;
break;
}
}
}
ci-=num2;//出去慢洗的
if(ci)//如果不够
{
for(int j=i-t1;j>=;j--)//快洗先用隔得最近的
{
if(ci>num1)
{
num1+=Zang[j];Zang[j]=;
if(num1>=ci)
{
Zang[j]=num1-ci;num1=ci;
break;
}
}
}
}
ci-=num1;
if(ci){falg=;break;}//购买量太少而周转不过来时
cnow+=num1*c1+num2*c2;Zang[i]=c[i];
}
}
if(falg)break;
else ans=min(ans,cnow);
}
printf("%d\n",ans);
return ;
}
cogs 餐巾 461(贪心)的更多相关文章
- 餐巾(cogs 461)
[问题描述] 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,…,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分 ...
- [网络流24题]餐巾(cogs 461)
[问题描述] 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分 ...
- 【COGS 461】[网络流24题] 餐巾 最小费用最大流
既然是最小费用最大流我们就用最大流来限制其一定能把每天跑满,那么把每个表示天的点向T连流量为其所需餐巾,费用为0的边,然后又与每天的餐巾对于买是无限制的因此从S向每个表示天的点连流量为INF,费用为一 ...
- Cogs 461. [网络流24题] 餐巾(费用流)
[网络流24题] 餐巾 ★★★ 输入文件:napkin.in 输出文件:napkin.out 简单对比 时间限制:5 s 内存限制:128 MB [问题描述] 一个餐厅在相继的N天里,第i天需要Ri块 ...
- P4480-[BJWC2018]餐巾计划问题【三分,贪心】
正题 题目链接:https://www.luogu.com.cn/problem/P4480 题目大意 \(n\)天,第\(i\)天需要\(a_i\)个餐巾. 每个餐巾价格为\(p\),使用完后有两种 ...
- 【COGS】714. USACO 1.3.2混合牛奶(贪心+水题)
http://cojs.tk/cogs/problem/problem.php?pid=714 在hzwer的刷题记录上,默默地先跳过2题T_T...求凸包和期望的..T_T那是个啥..得好好学习 看 ...
- 贪心(数据结构):COGS 468. [NOI2010]超级钢琴
★★★☆ 输入文件:piano.in 输出文件:piano.out 简单对比 时间限制:2 s 内存限制:512 MB 超级钢琴 [问题描述] 小Z是一个小有名气的钢琴家,最近C博士送 ...
- 洛谷P1251 餐巾(网络流)
P1251 餐巾 15通过 95提交 题目提供者该用户不存在 标签网络流贪心 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 为什么我全部10个测试点都对… 题目描述 一个餐厅在相继的N天里 ...
- [联赛可能考到]图论相关算法——COGS——联赛试题预测
COGS图论相关算法 最小生成树 Kruskal+ufs int ufs(int x) { return f[x] == x ? x : f[x] = ufs(f[x]); } int Kruskal ...
随机推荐
- Spring入门(5)-自动装配Bean属性
Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...
- CodeForces 706C Hard problem (水DP)
题意:对于给定的n个字符串,可以花费a[i] 将其倒序,问是否可以将其排成从大到小的字典序,且花费最小是多少. 析:很明显的水DP,如果不是水DP,我也不会做.... 这个就要二维,d[2][max ...
- mac 下对 iterm 终端 设置代理
vi .profile export http_prox="http://xxxx:port" export https_proxy="http://xxxx:port& ...
- CodeForces 732B Cormen — The Best Friend Of a Man (贪心)
题意:给定n和k表示,狗要在任意连续两天散步次数要至少为k,然后就是n个数,表示每天的时间,让你增加最少次数使得这个条件成立. 析:贪心,策略是从开始到最后暴力,每次和前面一个相比,如果相加不够k,那 ...
- mybatis generator配置文件
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration ...
- 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作
window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...
- AngularJS~集成的ajax和服务的注入
AngularJS很美,以至于迷倒了不少年青人和我这位大叔,它的美不仅仅是在写法上,而且在设计方法上都进乎于完美,用什么服务就注入什么服务,这样方法本来就很直观,程序员感觉直观了,程序在运行起来也按需 ...
- 对iOS中MVC的理解
总结于斯坦福大学的白头发老头的公开课 模型-控制器-视图(MVC)是一种将应用中给所有类组织起来的策略 模型(Model)实际上考虑的是“什么”的问题,即你的程序是什么? 以纸牌匹配游戏为例子,模型就 ...
- Codeforces Round #172 (Div. 2) B. Nearest Fraction 二分
B. Nearest Fraction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/281/p ...
- Sublime Text 备忘
Sublime Text已经被传成编程利器,那当然也是我们前端的利器了,刚开始用的时候,很多小问题,所以做个备忘,忘记的时候也可以翻出来看看,下次重装的时候可以用到. 1.设置自动换行 菜单栏 Vie ...