1 条题解

  • 1
    @ 2026-7-28 21:30:10
    #include<bits/stdc++.h>
    using namespace std;
    int n,a,b,g[10005],d[10005],ans=INT_MAX,t=0;
    bool vis[10005];
    void dfs(int x) {
    	if(t>ans)return;
    	if(x<1||x>n)return;
    	if(vis[x]==1)return;
    	if(x==b) {
    		ans=min(t,ans);
    		return;
    	}
    	vis[x]=1;
    	int nx=g[x]+x;
    	int zx=x-g[x];
    	t+=d[x];
    	dfs(nx);
    	dfs(zx);
    	t-=d[x];
    	vis[x]=0;
    }
    
    int main() {
    	ios::sync_with_stdio(false);
    	cin.tie(nullptr);
    	cin>>n>>a>>b;
    	for(int i=1; i<=n; i++) {
    		cin>>g[i];
    	}
    	for(int i=1; i<=n; i++) {
    		cin>>d[i];
    	}
    	dfs(a);
    	if(ans==INT_MAX)cout<<"PPCQ";
    	else cout<<ans;
    	return 0;
    }
    
    
    • 1

    信息

    ID
    229
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    11
    已通过
    3
    上传者