0 点赞 评论 收藏
分享
2024-03-30 17:15
北京航空航天大学 Unity3D客户端 礼堂孙笑丿丨丨:100%代码:
#include<bits/stdc++.h>
using namespace std;
const int N=16384;
unordered_map<int,int> dp[N];
int mi[N];
void solve(){
memset(mi,0x3f,sizeof mi);
dp[1][1]=2;
mi[1]=1;
for(int i=2;i<N;i++){
int minx=1e9;
for(int j=1;j<=i/j;j++){
if(i%j) continue;
int a=j;
dp[i][a]=mi[a]+i/a;
minx=min(minx,dp[i][a]);
a=i/j;
dp[i][a]=mi[a]+i/a;
minx=min(minx,dp[i][a]);
}
dp[i][i]=minx+2;
dp[i][1]=min(dp[i][1],minx+2);
for(auto [a,b]:dp[i]){
mi[a]=min(mi[a],b-i/a);
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
int t=1;
cin>>t;
while(t--){
int num;
cin>>num;
int res=1e9;
for(auto [a,b]:dp[num]){
//cout<<num<<" "<<a<<" "<<b<<endl;
res=min(res,b);
}
cout<<res<<endl;
}
return 0;
}
想了好几个错解,一小时才过,我这方法感觉有点垃圾,但是能过。
投递网易雷火等公司10个岗位
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: