https://vjudge.net/problem/UVA-10163

题意:

有n个仓库,m个管理员,每个管理员有一个能力值P(接下来的一行有m个数,表示每个管理员的能力值)

每个仓库只能由一个管理员看管,但是每个管理员可以看管k个仓库(但是这个仓库分配到的安全值只有p/k,k=0,1,...),

每个月公司都要给看管员工资,雇用的管理员的工资即为他们的能力值p和,问,使每个仓库的安全值最高的前提下,使的工资总和最小。

输出最大安全值,并且输出最少的花费。

思路:

先求出安全系数来。d[i][j]表示前i个守卫看守前j个仓库的最小安全系数的最大值。之后第二次DP求最小花费。

  1. #include<iostream>
  2. #include<string>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7. const int maxn = + ;
  8. const int INF = ;
  9.  
  10. int n, m;
  11. int p[];
  12. int d[maxn][maxn];
  13.  
  14. int main()
  15. {
  16. //freopen("D:\\txt.txt", "r", stdin);
  17. while (cin >> n >> m && n&& m)
  18. {
  19. for (int i = ; i <= m; i++)
  20. cin >> p[i];
  21. for (int i = ; i <= m; i++)
  22. d[i][] = INF;
  23. for (int i = ; i <= n; i++)
  24. d[][i] = ;
  25. for (int i = ; i <= m; i++)
  26. {
  27. for (int j = ; j <= n; j++)
  28. {
  29. d[i][j] = d[i - ][j];
  30. for (int k = ; k < j; k++)
  31. d[i][j] = max(d[i][j], min(d[i - ][k], p[i] / (j - k)));
  32. }
  33. }
  34. if (!d[m][n])
  35. {
  36. cout << "0 0" << endl;
  37. continue;
  38. }
  39. int x = d[m][n];
  40. for (int i = ; i <= m; i++)
  41. d[i][] = ;
  42. for (int i = ; i <= n; i++)
  43. d[][i] = INF;
  44. for (int i = ; i <= m;i++)
  45. for (int j = ; j <= n; j++)
  46. {
  47. d[i][j] = d[i - ][j];
  48. for (int k = ; k < j;k++)
  49. if (p[i] / (j-k) >= x)
  50. d[i][j] = min(d[i][j], d[i - ][k] + p[i]);
  51. }
  52. cout << x << " " << d[m][n] << endl;
  53. }
  54. return ;
  55. }

UVa 10163 仓库守卫的更多相关文章

  1. UVA 10163 Storage Keepers(两次DP)

    UVA 10163 Storage Keepers(两次DP) http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Ite ...

  2. DP(两次) UVA 10163 Storage Keepers

    题目传送门 /* 题意:(我懒得写,照搬网上的)有n个仓库,m个人看管.一个仓库只能由一个人来看管,一个人可以看管多个仓库. 每个人有一个能力值pi,如果他看管k个仓库,那么所看管的每个仓库的安全值为 ...

  3. UVA 10163 十六 Storage Keepers

    十六 Storage Keepers Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit ...

  4. uva 10163 - Storage Keepers(01背包)

    题目链接:10163 - Storage Keepers 题目大意:给出m为仓库的数量, 给出n为有守夜人的数量, 然后给出n个数值,为对应守夜人应付的酬劳,每个守夜人的能力与他需要的酬劳是相等的,并 ...

  5. 【Uva 10163】Storage Keepers

    [Link]: [Description] 你有n(n≤100)个相同的仓库.有m(m≤30)个人应聘守卫,第i个应聘者的能力值 为Pi(1≤Pi≤1000).每个仓库只能有一个守卫,但一个守卫可以看 ...

  6. UVA 10163 Storage Keepers(dp + 背包)

    Problem C.Storage Keepers  Background Randy Company has N (1<=N<=100) storages. Company wants ...

  7. uva 10163 Storage Keepers

    题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库. 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k. 雇佣一个人的花费也是a. 如果一个仓库没 ...

  8. UVa 10163 Storage Keepers (二分 + DP)

    题意:有n个仓库,m个管理员,每个管理员有一个能力值P,每个仓库只能由一个管理员看管,但是每个管理员可以看管k个仓库(但是这个仓库分配到的安全值只有p/k,k=0,1,...),雇用的管理员的工资即为 ...

  9. UVA 10163 - Storage Keepers(dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题意 有n个仓库,让m个人来看管.一个仓库只能由一个人来看管,一个人可以看管多个仓库. 每个人 ...

随机推荐

  1. android studio 自定义控件

    第一种方式: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  2. ssm返回jsonp数据格式

    为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数 ...

  3. B*树的定义

    B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针: B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2). 所以,B*树分配新结点的 ...

  4. HTTP请求返回状态码详解

    当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...

  5. ubuntu shell脚本出错 dash

    今天在Ubuntu下调试代码,明明是正确的,却仍然报错,查了错误信息才知道:Ubuntu中默认不是bash,而是为了加快开机速度,使用了dash. dash中需要严格的语法,而且与bash语法不同.例 ...

  6. Linux系统——LNMP分离式部署

    #### 安装nginx ```[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/[root@localhost ~]# cd /u ...

  7. mysql查询表基本操作

    数据库表的创建create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度>, . ...

  8. 003-ubuntu上安装mysql

    安装如下: 1.安装服务端:# sudo apt-get  install mysql-server. 2.安装客户端:# sudo apt-get -y install mysql-server. ...

  9. cc150 --链表分割

    题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针.注意:分割以后 ...

  10. 3/5/2014 cfb 小心

    During each move the player can choose all lines of the matrix where dwarf is not on the cell with c ...