×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#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