349B - Color the Fence
/* 题意:给你v升染料,有1-9个数字,写每个数字都耗费不同的燃料,问你用这些燃料最多能写出来的数字是多少 #感悟:爆炸,尽然没想起来这么贪,最长的长度肯定cur=v/minv然后,枚举cur位,都尽可能的取一个最大的数 */ #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; int a[11]; vector<int> v; int n; int minv=INF; int mini; int cur; int main(){ // freopen("in.txt","r",stdin); v.clear(); scanf("%d",&n); for(int i=0;i<9;i++){ scanf("%d",&a[i]); if(a[i]<=minv){ minv=a[i]; mini=i; } } cur=n/minv; if(cur==0){ puts("-1"); return 0; } int res=0; for(int i=0;i<cur;i++){//查找每一位 for(int j=8;j>=0;j--){ //每一位都找最大的 if(n<=minv){ v.push_back(mini+1); break; } if(a[j]>n) continue; if( (n-a[j])/minv+v.size()+1==cur){ res+=a[j]; v.push_back(j+1); n-=a[j]; break; } } } for(int i=0;i<v.size();i++){ printf("%d",v[i]); } printf("\n"); return 0; }
我每天都在努力,只是想证明我是认真的活着.