刚刚CF的第四题
  • 板块学术版
  • 楼主BIOS
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/3 01:01
  • 上次更新2024/5/3 10:43:05
查看原帖
刚刚CF的第四题
833124
BIOS楼主2024/5/3 01:01
#include<iostream>
#include<cstring>
using namespace std;
#define int long long
const int N=2e5+5;
int p[N],a[N],sa,sb,t,n,k,v,ans,res,c_len,c_sum;
bool st[N];
void dfs(int now,int u,int tot,int k)
{
    res=max(res,tot+(k-u)*a[now]),st[now]=true;
    if(u==k)
        return;
    if(!st[p[now]])
        dfs(p[now],u+1,tot+a[p[now]],k);
    else
        c_len=u,c_sum=tot;
}
void init(int n)
{
    for(int i=1;i<=n;i++)
        st[i]=false;
}
int solve(int sx)
{
    init(n),ans=0,res=0,c_len=0,c_sum=0;
    dfs(sx,1,a[sx],k),ans=max(res,ans),res=0;
    if(c_len)
        init(n),dfs(sx,1,a[sx],k%c_len),ans=max(ans,res+k/c_len*c_sum);
    return ans;
}
signed main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--)
    {
        cin>>n>>k>>sa>>sb;
        for(int i=1;i<=n;i++)
            cin>>p[i];
        for(int i=1;i<=n;i++)
            cin>>a[i];
        v=solve(sa)-solve(sb);
        if(!v)
            cout<<"Draw\n";
        else if(v>0)
            cout<<"Bodya\n";
        else
            cout<<"Sasha\n";
    }
}

这为什么会WA on2,样例是过了的,感觉写的挺清楚的啊?

2024/5/3 01:01
加载中...