zoukankan      html  css  js  c++  java
  • vojos 1059 积木城堡 经典动态

    题目意思就是小xc想送给幼儿园女孩子们每人一座城堡,这些城堡都是用立方体的积木搭成,现在为了不出现偏袒那个女生的现象,必须要求送给每个女孩子的城堡的告诉都一样高,那么小xc想出来的办法就是在抽掉其中部分城堡当中的积木,尽量让所有的城堡能达到最大公共高度。

    那么其实转念一想就很简单,其实就是把其中每个塔的积木全部当做是物品,求这些物品尽量能占得的最大空间,然后求所有城堡的能到达的最大公共高度。

    View Code
     1  #include<iostream>
     2  #include<stdio.h>
     3  using namespace std;
     4  int dp[110][10000],Count[10000]; 
     5  int main()
     6  {
     7     int n,height,Minvalue,sum;
     8     while(scanf("%d",&n)!=EOF)
     9     {
    10            Minvalue=100000;
    11            memset(dp,0,sizeof(dp));
    12            memset(Count,0,sizeof(Count));
    13            for(int i=0;i<n;i++)
    14            {
    15                dp[i][0]=1,height=1,sum=0;
    16                while(1)
    17                {
    18                   scanf("%d",&height);
    19                   if(height==-1)break;
    20                   sum+=height;
    21                   for(int j=sum;j>=height;j--)
    22                   {
    23                       if(dp[i][j-height]==1&&dp[i][j]==0)
    24                       {
    25                            dp[i][j]=1;
    26                            Count[j]++;           
    27                       }        
    28                   }
    29                }    
    30                Minvalue=sum<Minvalue?sum:Minvalue;
    31            }
    32            int answer;
    33            for(answer=Minvalue;answer>0;answer--)
    34            if(Count[answer]==n)break;
    35            printf("%d\n",answer);
    36     }
    37     return 0;    
    38  }
    39  
  • 相关阅读:
    单例类
    UITableView汇总
    JVM虚拟机——垃圾收集算法
    集合框架 HashMap 的扩容机制, ConcurrnetHashMap 的原理
    java判断两个单链表是否相交
    java中Comparator 和 Comparable的区别
    String getProperty(String key, String def)
    JAVA 单步调试快捷键
    Stanford Word Segmenter使用
    使用ifstream和getline读取文件内容[c++]
  • 原文地址:https://www.cnblogs.com/nuoyan2010/p/2667083.html
Copyright © 2011-2022 走看看