模拟题,在合成灰色的时候,每次取当前剩余最多的三种颜色,各取1mL合成。然后重新看剩余最多的是哪三个。

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <algorithm>
  4. #include <functional>
  5. #include <queue>
  6. using namespace std;
  7.  
  8. #define MAX_COLOR_NUM 20
  9.  
  10. int color_num;
  11. int gray_vol;
  12. int color_vol[MAX_COLOR_NUM];
  13. int ans;
  14.  
  15. void input()
  16. {
  17. int max_vol = ;
  18. for (int i = ; i < color_num; i++)
  19. {
  20. scanf("%d", &color_vol[i]);
  21. max_vol = max(color_vol[i], max_vol);
  22. }
  23. scanf("%d", &gray_vol);
  24. ans = (max_vol + ) / ;
  25. }
  26.  
  27. void produce_gray()
  28. {
  29. priority_queue<int> pq;
  30. for (int i = ; i < color_num; i++)
  31. if (color_vol[i] != )
  32. {
  33. pq.push(color_vol[i]);
  34. color_vol[i] = ;
  35. }
  36. while (pq.size() >= )
  37. {
  38. int a = pq.top();
  39. pq.pop();
  40. int b = pq.top();
  41. pq.pop();
  42. int c = pq.top();
  43. pq.pop();
  44. a--;
  45. b--;
  46. c--;
  47. gray_vol--;
  48. if (a)
  49. pq.push(a);
  50. if (b)
  51. pq.push(b);
  52. if (c)
  53. pq.push(c);
  54. }
  55. int i = ;
  56. while (!pq.empty())
  57. {
  58. color_vol[i] = pq.top();
  59. pq.pop();
  60. i++;
  61. }
  62. }
  63.  
  64. void work()
  65. {
  66. for (int i = ; i < color_num; i++)
  67. color_vol[i] = ans * - color_vol[i];
  68. while ()
  69. {
  70. produce_gray();
  71. if (gray_vol <= )
  72. break;
  73. ans++;
  74. for (int i = ; i < color_num; i++)
  75. color_vol[i] += ;
  76. }
  77. printf("%d\n", ans);
  78. }
  79.  
  80. int main()
  81. {
  82. while (scanf("%d", &color_num), color_num)
  83. {
  84. input();
  85. work();
  86. }
  87. return ;
  88. }

poj2709的更多相关文章

  1. poj2709 贪心基础

    D - 贪心 基础 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     64bi ...

  2. 【poj2709】Painter--贪心

    Painter Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5621   Accepted: 3228 Descripti ...

  3. POJ2709 染料贪心

    题意:       要搭配出来n种颜料,每种颜料要用mi升,除了这n种颜色还有一个合成灰色的毫升数,灰色是由三种不同的颜色合成的,三种m m m 的不同颜色能合成m升灰色,然后问你满足要求至少要多少盒 ...

随机推荐

  1. Yii 框架的Rbac [权限控制]

    转载自 xmlife 的博客 : http://blog.csdn.net/xmlife/article/details/50733451 1.首先我们要在配置文件的组件(component)里面配置 ...

  2. pgm8

    前面的近似策略是寻找了 energy functional 的近似,该近似导致了 LBP,这使得 message passing 的算法不变.近似使用 I-projection,尽管这个一般说来并不容 ...

  3. Kakfa的设计思想

    Kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实 ...

  4. 【BZOJ1083】[SCOI2005]繁忙的都市(最小生成树)

    [BZOJ1083][SCOI2005]繁忙的都市(最小生成树) 题面 BZOJ 洛谷 题解 模板题. #include<iostream> #include<cstdio> ...

  5. 【转】vi 写完文件保存时才发现是 readonly

    在MAC上编辑apache配置文件,老是忘记sudo…… readonly的文件保存时提示 add ! to override, 但这仅是对root来说的啊! 百毒了一下竟然还有解决方案!! :w ! ...

  6. 【转】#pragma的用法

    在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...

  7. A guess 解题报告

    A guess 题意 选一个\([1,n](n\le 500)\)的整数,可以询问数是否属于区间\([l,r]\),多次询问一起回答,统计有多少种询问区间集合(无序)满足可以猜出这个数,对\(p(2^ ...

  8. 洛谷 P2047 [NOI2007]社交网络 解题报告

    P2047 [NOI2007]社交网络 题目描述 在社交网络(\(social\) \(network\))的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有\ ...

  9. 【洛谷P1991】无线通讯网

    题目大意:给定一个 N 个顶点的完全图,边有边权,现在要求使得图中所有顶点联通的情况下,第 M-1 大的边最小值是多少. 题解:所有点联通的最小要求是所有点和连接这些点的边构成原图的一棵生成树,那么问 ...

  10. oracle递归查询(查询条件ID下得所有子集)

    一.CREATE TABLE TBL_TEST ( ID    NUMBER, NAME  VARCHAR2(100 BYTE), PID   NUMBER                       ...