Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33230 | 武云帆 | 【J】T3 | C++ | 解答错误 | 80 | 43 MS | 1072 KB | 1010 | 2024-10-04 17:18:20 |
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,q; cin>>n>>q; vector<int> b(n+1,0); for(int i=1;i<=n;i++) cin>>b[i]; vector<int> cost(100001,1000000000); for(int i=n-1;i>=1;i--) b[i]=min(b[i],b[i-1]); for(int i=1;i<=n;i++) cost[i]=b[i]; for(int i=1;i<=1e5;i++){ for(int j=2;;j++){ int z=min(100000,j*i); cost[z]=min(cost[z],cost[i]+cost[j]); if(z==1e5) break; } } for(int i=1e5-1;i>=1;i--) cost[i]=min(cost[i],cost[i+1]); while(q--){ int x,y; cin>>x>>y; if(x<=y){ cout<<"0\n"; continue; } int l=1,r=x; int p=r; while(l<=r){ int mid=(l+r)/2; if(x/mid<=y){ p=mid; r=mid-1; } else l=mid+1; } cout<<cost[p]<<"\n"; } }