QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Submission ID | Problem | Hacker | Owner | Result | Submit time | Judge time |
---|---|---|---|---|---|---|---|
#1173 | #739473 | #21624. 【PR #2】背包 | jqh333 | Ieihonglongyin | Success! | 2024-11-13 16:15:11 | 2024-11-13 16:15:16 |
Details
Extra Test:
Wrong Answer
time: 2ms
memory: 4980kb
input:
1 1000 30 9000 11000 210 204 172 183 222 182 224 229 210 218 222 194 173 214 176 205 183 177 192 186 223 179 176 221 212 205 211 178 196 199 181 214 197 179 180 220 168 178 213 192 172 175 228 201 205 189 229 175 210 197 230 198 227 231 208 199 185 229 168 230 227 220 196 222 205 230 180 215 214 201...
output:
0000000000000000000000000000000
result:
wrong answer 1st words differ - expected: '0000000000000000000100000000000', found: '0000000000000000000000000000000'
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#739473 | #21624. 【PR #2】背包 | Ieihonglongyin | 97 | 17ms | 6340kb | C++14 | 1.4kb | 2024-11-12 21:51:53 | 2024-11-13 16:16:46 |
answer
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int N=1005;
int T,n,m;ll L,R,p[N],vi[N];vector<ll>f[N][55],tmp[55];vector<int>v[N];
void dfs(int u,int fa){for(int i=0;i<=m;i++)f[u][i].clear();f[u][0].push_back(0);
for(auto i:v[u])if(i!=fa){dfs(i,u),p[u]+=p[i];for(int j=0;j<m;j++)tmp[j].clear();
for(int a=0;a<m;a++)for(int b=0;a+b<m;b++)
for(auto x:f[u][a])for(auto y:f[i][b])tmp[a+b].push_back(x+y);
for(int j=0;j<m;j++){sort(tmp[j].begin(),tmp[j].end());
tmp[j].erase(unique(tmp[j].begin(),tmp[j].end()),tmp[j].end()),f[u][j].clear();
for(int k=0;k<min(2,(int)tmp[j].size());k++)f[u][j].push_back(tmp[j][k]);
for(int k=max(2,(int)tmp[j].size()-2);k<tmp[j].size();k++)f[u][j].push_back(tmp[j][k]);
}
}
for(int i=m-1;~i;i--)if(!f[u][i].empty()){bool fl=0;for(auto j:f[u][i])fl|=L<=p[u]-j&&p[u]-j<=R;int len=f[u][i].size();
fl|=len>1&&L<=p[u]-f[u][i][0]&&p[u]-f[u][i][len-1]<=R&&f[u][i][1]-f[u][i][0]<=R-L&&f[u][i][len-1]-f[u][i][len-2]<=R-L;
if(fl)f[u][i+1].push_back(p[u]);
}
}
int main(){//freopen("tree.in","r",stdin),freopen("tree.out","w",stdout);
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>T;
while(T--){cin>>n>>m>>L>>R,m++;for(int i=1;i<=n;i++)cin>>p[i];
for(int x,y,i=1;i<n;i++)cin>>x>>y,v[x].push_back(y),v[y].push_back(x);dfs(1,0);
for(int i=1;i<=m;i++)cout<<(!f[1][i].empty()&&f[1][i].back()==p[1]);cout<<"\n";
for(int i=1;i<=n;i++)v[i].clear();
}
}