#32499: WA 5 and 17


justinmeng12345@gmail.com (Justin Meng)

學校 : 不指定學校
編號 : 125107
來源 : [223.139.61.142]
最後登入時間 :
2024-01-22 16:22:33
h029. 202001_4 貨物分配 -- 2020年1月APCS | From: [218.187.133.173] | 發表日期 : 2022-10-16 22:48

include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <bits/stdc++.h>
#include <iomanip>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <typeinfo>
#define ll long long int 
#define pb push_back
#define inf 0x3f3f3f3f
#define SIZE 400005
using namespace std;
typedef pair<int,int> pp;
int ary[1000000];
int w[1000000];
int q[1000000];
int total[1000000];
int used[1000000];
map <int,int> mp;
vector <int> nodes[1000000];
int dfs(int st,int cur){
  int nxt;
  for (int i=0;i<nodes[st].size();i++){
    nxt=nodes[st][i];
    if (!used[nxt]){
      used[nxt]=1;
      // cout<<"BEFORE: "<<st<<" "<<nxt<<" "<<total[st]<<"\n";
      if (!i) total[st]+=dfs(nxt,cur*2),mp[cur*2]=nxt;
      else total[st]+=dfs(nxt,cur*2+1),mp[cur*2+1]=nxt;
      // cout<<"AFTER: "<<st<<" "<<nxt<<" "<<total[st]<<"\n";
    }
  }
  total[st]+=w[st];
  return total[st];
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n,m,par,l,r;
  cin>>n>>m;
  for (int i=n;i<2*n;i++) cin>>w[i];
  for (int i=1;i<=m;i++) cin>>q[i];
  for (int i=1;i<n;i++){
    cin>>par>>l>>r;
    nodes[par].pb(l);
    nodes[par].pb(r);
  }
  
  int temp;
  used[1]=1;
  temp=dfs(1,1);
  // for (int i=1;i<=2*n-1;i++) cout<<i<<" "<<total[i]<<"\n";
  // for (auto it:mp){
  //   cout<<it.first<<" "<<it.second<<"\n";
  // }
  for (int i=1;i<=m;i++){
    int cur=1;
    while (mp[cur]<n){
      l=total[mp[cur*2]];
      r=total[mp[cur*2+1]];
      // cout<<cur*2<<" "<<cur*2+1<<" "<<total[mp[cur*2]]<<" "<<total[mp[cur*2+1]]<<"\n";
      if (l<=r){
        cur*=2;
      }else{
        cur=(cur*2)+1;
      }
      total[mp[cur]]+=q[i];
    }
    cout<<mp[cur]<<" ";
  }
  return 0; 
}

 

 

為甚麼會WA!?!?!?

 

 
ZeroJudge Forum