bzoj2700
2024-08-23 00:35:06
题解:
dp
dp[i][j]表示i个红,j个绿的最小代价
然后再加上两位k,l,表示k个红连,l个绿连
然后转移
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=;
const ll INF=1LL<<;
ll a[N],b[N],f[N][N][][],j,k,n,m,tot1,tot2;
int main()
{
scanf("%d%d",&m,&n);
for (int i=;i<=n;i++)
{
scanf("%d%d",&k,&j);
if (j)a[++tot1]=k;
else b[++tot2]=k;
}
sort(a+,a++tot1); sort(b+,b++tot2);
for (int i=tot1+;i<=n;i++)a[i]=INF;
for (int i=tot2+;i<=n;i++)b[i]=INF;
for (int i=;i<=m;i++)
for (int j=;j<=n;j++)
for (int t=;t<=;t++)
for (int l=;l<=;l++)f[i][j][t][l]=INF;
f[][][][]=;
int ad,bd;
for (int i=;i<=m;i++)
{
for (int j=,ad=a[j]*(m-i+),bd=b[i-j]*(m-i+);j<=i;j++,
ad=a[j]*(m-i+),bd=b[i-j]*(m-i+))
{
f[i][j][][]=min(f[i-][j-][][],
min(f[i-][j-][][],f[i-][j-][][]))+ad;
f[i][j][][]=f[i-][j-][][]+ad;
f[i][j][][]=min(f[i-][j][][],
min(f[i-][j][][],f[i-][j][][]))+bd;
f[i][j][][]=f[i-][j][][]+bd;
}
bd=b[i]*(m-i+);
f[i][][][]=min(f[i-][][][],min(f[i-][][][],f[i-][][][]))+bd;
f[i][][][]=f[i-][][][]+bd;
}
ll ans=INF;
for (int i=;i<=tot1;i++)
{
ans=min(ans,f[m][i][][]);
ans=min(ans,f[m][i][][]);
ans=min(ans,f[m][i][][]);
ans=min(ans,f[m][i][][]);
ans=min(ans,f[m][i][][]);
}
printf("%lld\n",ans);
return ;
}
最新文章
- 深入理解javascript函数系列第一篇——函数概述
- delete表1条件是另一个表中的数据,多表连接删除(转)
- 国内开源html5游戏引擎全收录
- bzoj3431 [Usaco2014 Jan]Bessie Slows Down
- matlab求方差,均值,均方差,协方差的函数
- c# 针对不同数据库进行参数化查询
- 怎样基于谷歌地图的Server缓存公布Image Service服务
- 什么时候App委托会收到App进程被结束的消息
- 微信小程序下拉刷新和上拉加载的实现
- Spring Cloud微服务架构图
- bs4 FeatureNotFound: Couldn&#39;t find a tree builder with the features you requested: lxml. Do you need to install a parser library?
- jtable时间编辑器
- c_数据结构_栈的实现
- ajax 的一些参数
- 【Linux】percona-toolkit工具包的安装
- TCP/IP协议(5):传输层之TCP
- BUG 图片元素img下 高度超出 出现多余空白
- BGM时长
- [UIView setShowsFPS:]: unrecognized selector sent to instance XXX
- zabbix-agent报错:zabbix_agentd [5922]: cannot open log: cannot create semaphore set: [28] No space left on device