zoukankan      html  css  js  c++  java
  • poj 2709

    http://poj.org/problem?id=2709

    平摊问题,用贪心算法解决;因为gray可以用任意三种涂料合成,本题的题意就是把gray转换成它的原料(可以是任意三种),再加上以前已经有的,使各种涂漆原料的量尽可能的相近;这样先把每种涂漆按照量的多上进行从小到大排序,每次选择前三个加一,直至gray变为零;

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
    int n;
    int color[14];
    while(cin>>n&&n!=0)
    {
    int i,j;
    for(i=0;i<n;i++)
    {
    scanf("%d",&color[i]);
    }
    scanf("%d",&color[n]);
    sort(color,color+n);
    int temp;
    //temp=color[n]%50==0?color[n]/50:color[n]/50+1;
    while(color[n])
    {
    int need=(color[2]%50==0)?50:50-color[2]%50;
    color[n]--;
                for(i=0;i<3;i++)
    color[i]+=1;
    for(i=2;i>=0;i--)
    {
    for(j=i+1;j<n;j++)
    {
    if(color[j-1]>color[j])
    { temp=color[j-1];color[j-1]=color[j];color[j]=temp; }
    else
    break;
    }
    }

    }
    int res=(color[n-1]%50==0)?color[n-1]/50:color[n-1]/50+1;
    cout<<res<<endl;

    }
    return 0;
    }
  • 相关阅读:
    java多线程
    golang编码转换
    golang csv,xls,xlsx
    golang 资源
    electron安装
    Ubuntu系统下面软件安装更新命令
    golang代码执行顺序
    datatables使用
    Echarts柱形图颜色设置
    golang chan 超时
  • 原文地址:https://www.cnblogs.com/orangeblog/p/2434701.html
Copyright © 2011-2022 走看看