逆天脑抽
查看原帖
逆天脑抽
1051462
yuthay楼主2024/11/8 13:30

贪心+搜索剪枝(但是30分)

(沉重悼念)

初三生初中的最后一次竞赛,却带着如此的不甘和遗憾黯然离场。 代码可以AC,但是考场上怕A不了,打了两个特殊性质的特判。结果脑子一抽,B性质打错了,痛失70分和省一。不知道怎么想的,我还试了一下15,代码输出801,我说是对的。 后面把B性质删掉,在洛谷上面评测就A了。 (再次沉重悼念)```cpp #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int T,n,maxn,b[N]; int t[10]={6,2,5,5,4,5,6,3,7,6}; bool f; void dfs(int k,int res) { if(f) return ; if(k==maxn+1) { for(int i=1;i<=maxn;i++) cout<<b[i]; cout<<endl; f=1; return ; } for(int i=0;i<=9;i++) { if(k==1&&i==0) continue; if(7*(maxn-k)<res-t[i]) continue; if(k<=maxn-1&&res>=t[i] || k==maxn&&res==t[i]) { b[k]=i; dfs(k+1,res-t[i]); } } return ; } int main() { freopen("sticks.in","r",stdin); freopen("sticks.out","w",stdout); cin>>T; while(T--) { cin>>n; f=0; maxn=ceil(n/7.0); if(n%7==0) {//A for(int i=1;i<=maxn;i++) cout<<8; cout<<endl; continue; } if(n%7==1&&n!=1&&n!=8) {//B //仁济了 for(int i=1;i<maxn-1;i++) cout<<8; cout<<"01\n"; continue; } dfs(1,n); if(!f) cout<<-1<<endl; } return 0; }

2024/11/8 13:30
加载中...