Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33218 23级徐泽厚 【J】T3 C++ 运行超时 50 1000 MS 1044 KB 1270 2024-10-04 17:00:51

Tests(5/10):


#include <bits/stdc++.h> using namespace std; int n,q; int x,y; struct node{ int v,sum; }b[100005]; int dis[100005],mp[100005]; int minn; int top=0; void dfs(){ queue<int> q; dis[x]=0; mp[x]=1; q.push(x); while (!q.empty()){ int hd=q.front(); q.pop(); mp[hd]=0; for (int i=1;i<=top;i++){ int s=hd/b[i].v; if (dis[s]>dis[hd]+b[i].sum){ dis[s]=dis[hd]+b[i].sum; if (!mp[s]){ mp[s]=1; q.push(s); } } } if (hd<=y){ minn=min(minn,dis[hd]); } } } int main(){ // cin>>n>>q; scanf("%d%d",&n,&q); for (int i=1;i<=n;i++){ int s1; // cin>>s1; scanf("%d",&s1); while (top and b[top].sum>=s1) top--; b[++top].v=i; b[top].sum=s1; } while (q--){ // cin>>x>>y; scanf("%d%d",&x,&y); minn=0x3f3f3f3f; memset(dis,0x3f3f3f3f,sizeof(dis)); if (x<=y){ cout<<0<<endl; continue; } dfs(); // cout<<minn<<endl; printf("%d\n",minn); } return 0; }


测评信息: