Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
27005 岳亦铭 【BJ】T3 C++ 输出超限 0 105 MS 6964 KB 1706 2024-02-29 18:58:11

Tests(0/3):


#include <bits/stdc++.h> using namespace std; #define int long long const int maxn=1e5+10; int n,m,L,R; int a[maxn]; vector<int> edge[maxn]; struct SOL1 { int f[60][60][210],g[60][60][210],ans[60]; void dfs(int u,int fa) { if(edge[u][0]==fa&&edge[u].size()==1) { if(a[u]>=L&&a[u]<=R) f[u][1][0]=1; if(a[u]<=R) f[u][0][a[u]]=1; return ; } bool flag=0; for(int i=0;i<edge[u].size();i++) { int v=edge[u][i]; if(v==fa) continue; dfs(v,u); if(!flag) { for(int j=0;j<=m;j++) { for(int k=R;k>=0;k--) { if(k<a[u]) break; f[u][j][k]|=f[v][j][k-a[u]]; } } flag=1; continue; } for(int j=0;j<=m;j++) { for(int k=R;k>=0;k--) { for(int j1=0;j1<=m;j1++) { if(j1>j) break; for(int k1=0;k1<=R;k1++) { if(k1>k) break; f[u][j][k]|=(f[u][j-j1][k-k1]&&f[v][j1][k1]); } } } } } for(int i=L;i<=R;i++) { for(int j=0;j<m;j++) f[u][j+1][0]|=f[u][j][i]; } } void sol() { dfs(1,0); for(int i=1;i<=m;i++) for(int k=L;k<=R;k++) ans[i]|=f[1][i][k]; for(int i=0;i<=m;i++) cout<<ans[i]; cout<<endl; } }sol1; signed main() { // freopen("large.in","r",stdin); // freopen("large.out","w",stdout); ios::sync_with_stdio(false); cin>>n>>m>>L>>R; for(int i=1;i<=n;i++) cin>>a[i]; int u,v; for(int i=1;i<n;i++) { cin>>u>>v; edge[u].push_back(v); edge[v].push_back(u); } if(R<=200) { sol1.sol(); return 0; } int p1=2,p2=n-a[n]; cout<<"00"; for(int i=p1;i<=p2;i++) cout<<1; for(int i=n-a[n]+1;i<=n;i++) cout<<0; cout<<endl; return 0; }


测评信息: