QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#249412 | #6742. Leaves | RobeZH | WA | 0ms | 3820kb | C++23 | 2.1kb | 2023-11-12 06:10:59 | 2023-11-12 06:10:59 |
Judging History
answer
#pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include<bits/stdc++.h>
#define FR(i,n) for(int i=0;i<n;++i)
#define eb emplace_back
#define st first
#define nd second
#define x1 fxxkcjb
#define y1 fxxkyzc
#define x2 fxxkzzy
#define y2 fxxknitit
using namespace std;
namespace R=ranges;
template<typename T>
using func=function<T>;
using ll=long long;
using ld=long double;
using pii=pair<int,int>;
const int mod=998244353,LIM=1e4,inf=1e9+7;
const vector<vector<int>> d={{1,0},{0,1},{-1,0},{0,-1}};
int Cas;
void sol(){
int n,m;cin>>n>>m;
vector<int>a(n);vector<pii>c(n);
vector<vector<pii>>dp(n);
FR(i,n){
int typ;cin>>typ;
if(typ==1){
cin>>c[i].st>>c[i].nd;
--c[i].st,--c[i].nd;
}
else cin>>a[i];
}
func<void(int,int,vector<int>&)>get=[&](int x,int k,vector<int>&ret){
if(a[x]>0){ret.eb(a[x]);return;}
if((dp[x][k].st+dp[x][k].nd+k)%2==0){
get(c[x].st,dp[x][k].st,ret);
get(c[x].nd,dp[x][k].nd,ret);
}else{
get(c[x].nd,dp[x][k].nd,ret);
get(c[x].st,dp[x][k].st,ret);
}
};
for(int cur=n-1;~cur;--cur)if(a[cur]==0){
auto[l,r]=c[cur];
dp[cur].assign(dp[l].size()+dp[r].size(),{0,0});
vector<vector<int>>mi(dp[l].size()+dp[r].size(),{inf});
FR(i,dp[l].size())FR(j,dp[r].size()){
vector<int>temp;
get(l,i,temp);get(r,j,temp);
if(temp<mi[i+j])swap(temp,mi[i+j]),dp[cur][i+j]={i,j};
temp.clear();
get(r,j,temp);get(l,i,temp);
if(temp<mi[i+j+1])swap(temp,mi[i+j+1]),dp[cur][i+j+1]={i,j};
}
FR(i,dp[cur].size())if(i>=2&&mi[i]>mi[i-2]){
swap(mi[i],mi[i-2]);
dp[i]=dp[i-2];
}
}else dp[cur].eb(-1,-1);
vector<int>ans;
get(0,m,ans);
for(int&x:ans)cout<<x<<" ";
cout<<"\n";
}
int main(){
ios_base::sync_with_stdio(false);
sol();
return 0;
}
/*
3 2
.*.
.*.
...
3 3
.*.
.*.
...
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3756kb
input:
3 0 1 2 3 2 1 2 2
output:
1 2
result:
ok 2 number(s): "1 2"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3820kb
input:
7 1 1 2 3 1 4 5 1 6 7 2 4 2 2 2 3 2 1
output:
2 4 3 1
result:
ok 4 number(s): "2 4 3 1"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
7 2 1 2 3 1 4 5 1 6 7 2 4 2 2 2 3 2 1
output:
1 3 4 2
result:
ok 4 number(s): "1 3 4 2"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
1 0 2 1000000000
output:
1000000000
result:
ok 1 number(s): "1000000000"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
3 1 1 2 3 2 1 2 2
output:
2 1
result:
ok 2 number(s): "2 1"
Test #6:
score: -100
Wrong Answer
time: 0ms
memory: 3792kb
input:
7 2 1 2 3 1 4 5 1 6 7 2 1 2 2 2 3 2 4
output:
2 1 3 4
result:
wrong answer 1st numbers differ - expected: '1', found: '2'