Color the Fence
2014-08-06 23:00
302 查看
Codeforces Round #202 (Div. 2) B:http://codeforces.com/problemset/problem/349/B
题意:给你一些颜料,然后你可以用这些颜料画一些数字,画每个数字的颜料是不一样的,然后问你用这些颜料可以画出的最大的数。
题解:和容易想到,直接用贪心,数字最大,首先要使得数字的位数最多,所以要选择需要颜料最少的数字来话,此题有一个好处就是,就是不用考虑前导零的情况,数的位数确定之后,就可以用剩余的颜料来调整数字,从高位到低位,每一次把把尽可能大的数字放在高位。
View Code
题意:给你一些颜料,然后你可以用这些颜料画一些数字,画每个数字的颜料是不一样的,然后问你用这些颜料可以画出的最大的数。
题解:和容易想到,直接用贪心,数字最大,首先要使得数字的位数最多,所以要选择需要颜料最少的数字来话,此题有一个好处就是,就是不用考虑前导零的情况,数的位数确定之后,就可以用剩余的颜料来调整数字,从高位到低位,每一次把把尽可能大的数字放在高位。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[23],v; int minn,pos,ct; int ans[1000002],top; int main(){ while(~scanf("%d",&v)){ minn=1e7; for(int i=1;i<=9;i++){ scanf("%d",&a[i]); if(minn>=a[i]){ minn=a[i]; pos=i; } } if(v<minn){ printf("-1\n");continue; } ct=v/minn; int temp=v-ct*minn; for(int i=1;i<=ct;i++) ans[i]=pos; top=0; // printf("%d %d %d\n",ct,temp,minn); while(temp>0){ int tp=0; top++; if(top>ct)break; for(int i=1;i<=9;i++){ if(a[i]-minn<=temp) tp=i; } if(tp==0)break; else { ans[top]=tp; temp-=(a[tp]-minn); } } for(int i=1;i<ct;i++){ printf("%d",ans[i]); } printf("%d\n",ans[ct]); } }
View Code
相关文章推荐
- codeforces349B - Color the Fence 贪心+DP
- Color the fence
- 349B - Color the Fence
- H - Color the Fence -贪心
- NYOJ-791 Color the fence (来源CodeForce)
- Codeforces 349 B Color the Fence (思维+贪心)
- 南阳oj(nyoj) 791 Color the fence
- B - Color the Fence
- NYOJ-Color the fence
- nyoj 791 Color the fence
- Color the fence
- 349B - Color the Fence (贪心)
- (贪心)Color the Fence - CF 202 Div2B
- Color the fence
- nyoj color the fence
- CF#202 div2 B Color the Fence
- CodeForces 349B--Color the Fence(贪心)
- acm-Color the fence
- 791 Color the fence
- NYOJ 791 Color the fence