练习赛88 A 题解
活着的证据
https://ac.nowcoder.com/acm/contest/11178/A
细节有一点多的贪心。
如果 说明填不满位数,改变位数:
。
把 位数从前到后先填
后填
,同时统计哪一位被填了
。
分析可得:
- 若这一位有
的存在,最多可以填到
。
- 否则只能填到
。
模拟贪心即可。
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
inline void print(int x){
if(x<0)putchar('-'),x=-x;
if(x>9)print(x/10);
putchar(x%10^48);
}
const int MAXN=5e6+5;
int t,a,b,c,ans[MAXN];
bool f[MAXN];
int main(){
t=read();
while(t--){
a=read(),b=read(),c=read();
if(a+b<c)c=a+b;
for(int i=1;i<=c;++i){
if(a)ans[i]=5,a--;
else ans[i]=1,b--,f[i]=1;
}
for(int i=1;i<=c;++i){
if(f[i]){
if(b<=(3-ans[i]))ans[i]+=b,b=0;
else b-=3-ans[i],ans[i]=3;
f[i]=0;
}else{
if(b<=(8-ans[i]))ans[i]+=b,b=0;
else b-=8-ans[i],ans[i]=8;
}
}
for(int i=1;i<=c;++i)print(ans[i]),ans[i]=0;puts("");
}
return 0;
}
查看6道真题和解析
