社区讨论
RE求调
P11229[CSP-J 2024] 小木棍参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhj3y6j4
- 此快照首次捕获于
- 2025/11/03 20:20 4 个月前
- 此快照最后确认于
- 2025/11/03 20:20 4 个月前
CPP
/*
1.这是什么算法?从题目里面怎么看出来?(就是突破点)
2.写代码自己有错误,是什么原因?(知识不知道,还是不够仔细,如读题没理解透)
3.这题与前面什么题目感觉是类似?
*/
#include<bits/stdc++.h>
using namespace std;
int n,m,x[105];
struct node{
int v,id;
}a[100005];
string dp[15],ans[55];
string mi(string c,string y){
if(c=="") return y;
if(c.size()<y.size()) return c;
if(y.size()<c.size()) return y;
return (c<y)?c:y;
}
bool cmp(node x,node y){return x.v<y.v;}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
freopen("00in.txt","r",stdin);
dp[2]="1";
dp[5]="2";
dp[4]="4";
dp[6]="6";
dp[3]="7";
dp[7]="8";
x['0']=6,x['1']=2,x['2']=5,x['4']=4,x['7']=3,x['8']=7;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].v;
a[i].id=i;
m=max(m,a[i].v);
}
m++;
sort(a+1,a+n+1,cmp);
int now=1;
for(int i=1;i<=m;i++){
if(i>=8) dp[i%8]="";
for(char j='0';j<='8';j++){
if(j=='3'||j=='5'||j=='6'||i-x[j]<0||dp[(i-x[j])%8]=="") continue;
dp[i%8]=mi(dp[i%8],dp[(i-x[j])%8]+j);
}
while(i>=a[now].v){
ans[a[now].id]=dp[i%8];
now++;
}
}
for(int i=1;i<=n;i++){
if(ans[i]=="") cout<<-1<<endl;
else cout<<ans[i]<<endl;
}
return 0;
}
希望debug拒接新算法哦(.^.)
回复
共 1 条回复,欢迎继续交流。
正在加载回复...