UVA - 10613(Storage Keepers(最优解不可组合))
来源:互联网 发布:大数据在审计中的应用 编辑:程序博客网 时间:2024/06/11 17:10
#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <algorithm>using namespace std;#define INF 1200000000const int maxn = 102;const int maxm = 31;const int M = 40000;int d[maxm][maxn],n,m,p[maxn];bool vis[maxm][maxn];/*3 33 6 7240013 *** 当3守卫1,剩下问题的最优解为 6 13并不构成原问题的最优解所以(以守卫最薄弱尽量大的情况下,值最小来定义状态,并不可解)3 13*/int dp(int i,int j){if(vis[i][j]) return d[i][j];vis[i][j]=true;if(i==m){ if(j==n) return d[i][j]=INF; return d[i][j]=0;}int lim=min(n,p[i+1]+j);for(int k=j;k<=n;k++){ int num; if(k==j) num=dp(i+1,k); else num=min(dp(i+1,k),p[i+1]/(k-j)); if(k==j) d[i][j]=num; else d[i][j]=max(d[i][j],num);}return d[i][j];}int best;int mincost(int i,int j){if(vis[i][j]) return d[i][j];vis[i][j]=true;if(i==m){ if(j==n) return d[i][j]=0; return d[i][j]=INF;}int& ans=d[i][j];ans=INF;for(int k=j;k<=n;k++){ int num; if(k==j) num=mincost(i+1,k); else { if(p[i+1]/(k-j)<best) break; num=mincost(i+1,k)+p[i+1]; } ans=min(ans,num);}return ans;}int main(){ while(scanf("%d %d",&n,&m)==2){ if(!n&&!m) break; for(int i=1;i<=m;i++) scanf("%d",&p[i]); memset(vis,false,sizeof(vis)); best = dp(0,0); printf("%d ",best); memset(vis,false,sizeof(vis)); printf("%d\n",best==0 ? 0:mincost(0,0)); } return 0;}
0 0
- UVA - 10613(Storage Keepers(最优解不可组合))
- UVA 10163 - Storage Keepers(dp)
- uva 10163 - Storage Keepers(01背包)
- UVA - 10163Storage Keepers(01背包)
- uva 10163 Storage Keepers (dp)
- UVA - 10163 - Storage Keepers(两次dp)
- UVA 10163-Storage Keepers(DP)
- uva 10163 Storage Keepers (DP)
- UVA-10163 Storage Keepers (DP多次)
- UVA 10163 Storage Keepers (01背包DP + 二分)
- uva 10163 Storage Keepers
- UVA 10163 Storage Keepers
- UVA 10163 Storage Keepers
- UVA - 10163 Storage Keepers
- uva 10163 Storage Keepers
- UVA 10163 - Storage Keepers
- uva 10163 Storage Keepers
- UVA - 10163 Storage Keepers
- 你知道。在这个世界上最好的幸福——就是可以做自己。
- 单例模式2
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widg
- 编译型与解释型、动态语言与静态语言、强类型语言与弱类型语言的区别
- UVA - 10613(Storage Keepers(最优解不可组合))
- 【数据结构与算法】【查找】基本概念
- linux 内核移植和根文件系统的制作
- 网络流
- zabbix_sendmail.py
- Android-Universal-Image-Loader 图片加载库 详细分析
- C++隐式的类类型转换和类型转换运算符
- py2exe使用教程(六)——关于压缩文件
- Date()日期创建