#41382: NA 95% 求解 (C++)


free20061010@gmail.com (人生好累 and RickAstley!!)

學校 : 新北市立海山高級中學
編號 : 199913
來源 : [1.171.206.212]
最後登入時間 :
2024-07-22 18:06:29
h028. 202001_3 砍樹 -- 2020年1月APCS | From: [1.171.206.212] | 發表日期 : 2024-07-22 18:24

錯在第一個側資

#include<bits/stdc++.h>// 95%
#define int long long
using namespace std;
struct node{ 
    int l,r,v;
};
node arr[100009];  //left,right,value
int road[100009]; 
int ans = 0;
int maxi = 0;
queue<int>q;
//-----------------------
int32_t main(){
    int n,m;cin>>n>>m;
    for(int i = 1;i<=n;i++){
        cin>>road[i];
    }
    arr[0].r = 1;
    arr[n+1].l = n-1;
    for(int i = 1;i<=n;i++){
        cin>>arr[i].v;
        arr[i].l = i-1;
        arr[i].r = i+1;
        q.push(i);
    }
    road[n+1] = m;
    road[0] = 0;
    //-------------------------------
    while(!q.empty()){
        int x = q.front();q.pop();
        if(arr[x].v==0)continue;
        if(road[x]-road[arr[x].l]>=arr[x].v||road[arr[x].r]-road[x]>=arr[x].v){
            q.push(arr[x].l);
            q.push(arr[x].r);
            arr[arr[x].l].r  = arr[x].r;
            arr[arr[x].r].l = arr[x].l;
            ans+=1;
            maxi = max(maxi,arr[x].v);
            arr[x].v = 0;
            //arr[x] -> died
            //cout<<x<<" ";
        }
    }
    //-------------------------------
    cout<<ans<<"\n"<<maxi;
}

 

 
#41383: Re: NA 95% 求解 (C++)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
h028. 202001_3 砍樹 -- 2020年1月APCS | From: [111.71.216.39] | 發表日期 : 2024-07-23 10:11

        if(arr[x].v==0)continue;

似乎是因為題目輸入的高度可能是0,所以這裡的判斷會有問題

可是輸入說明不是說正整數嗎...

 
ZeroJudge Forum