QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#56347 | #2161. The Cost of Speed Limits | UT_aka_Is | WA | 687ms | 9604kb | C++ | 1.8kb | 2022-10-18 21:13:01 | 2022-10-18 21:13:03 |
Judging History
answer
#include <bits/stdc++.h>
#define SIZE 20005
#define MX 400
#define INF 10000000000LL
using namespace std;
typedef long long int ll;
typedef pair <int,int> P;
vector <P> vec[SIZE];
vector <int> vs;
ll dp[MX][SIZE],mn[SIZE];
int nd[SIZE];
int plt;
ll ans;
void predfs(int v=0,int p=-1){
nd[v]=1;
for(int i=0;i<vec[v].size();i++){
int to=vec[v][i].first;
if(to!=p){
predfs(to,v);
nd[v]+=nd[to];
}
}
}
void dfs(int v=0,int p=-1,int d=0,int cost=0){
P mx=P(-1,-1);
int cc;
for(int i=0;i<vec[v].size();i++){
int to=vec[v][i].first;
int cur=vec[v][i].second;
if(to!=p){
mx=max(mx,P(nd[to],to));
if(mx.second==to) cc=cur;
}
}
ll sum=0;
if(mx.second!=-1){
dfs(mx.second,v,d,cc);
sum+=mn[mx.second];
}
for(int i=0;i<vec[v].size();i++){
int to=vec[v][i].first;
int cur=vec[v][i].second;
if(to!=p&&to!=mx.second){
dfs(to,v,d+1,cur);
sum+=mn[to];
for(int j=0;j<vs.size();j++) dp[d][j]+=dp[d+1][j];
}
}
mn[v]=INF;
for(int j=0;j<vs.size();j++){
if(vs[j]<cost) dp[d][j]=INF;
else{
if(p!=-1) dp[d][j]+=vs[j]-cost;
dp[d][j]=min(dp[d][j],INF);
if(p!=-1){
dp[d][j]=min(dp[d][j],sum+vs[j]-cost+(ll) vec[v].size()*plt);
} else{
dp[d][j]=min(dp[d][j],sum+(ll) vec[v].size()*plt);
}
if(vec[v].size()==1){
if(p!=-1) dp[d][j]=min(dp[d][j],sum+vs[j]-cost);
else dp[d][j]=min(dp[d][j],sum);
}
}
mn[v]=min(mn[v],dp[d][j]);
}
//printf("* %d : %lld\n",v,mn[v]);
//for(int j=0;j<vs.size();j++) printf("%lld ",dp[d][j]==INF?-1:dp[d][j]);puts("");
}
int main(){
int n;
scanf("%d%d",&n,&plt);
for(int i=0;i<n-1;i++){
int u,v,s;
scanf("%d%d%d",&u,&v,&s);u--,v--;
vec[u].push_back(P(v,s));
vec[v].push_back(P(u,s));
vs.push_back(s);
}
sort(vs.begin(),vs.end());
vs.erase(unique(vs.begin(),vs.end()),vs.end());
predfs();
dfs();
printf("%lld\n",mn[0]);
}
详细
Test #1:
score: 100
Accepted
time: 3ms
memory: 4232kb
input:
13 20 1 8 101 1 9 30 1 2 100 1 3 100 2 4 75 2 5 70 2 6 82 2 7 77 3 10 73 3 11 69 3 12 83 3 13 79
output:
272
result:
ok single line: '272'
Test #2:
score: 0
Accepted
time: 2ms
memory: 4248kb
input:
9 10 1 6 26 2 6 27 3 6 28 4 6 29 5 6 30 7 9 14 8 9 1 9 6 10
output:
60
result:
ok single line: '60'
Test #3:
score: 0
Accepted
time: 2ms
memory: 4264kb
input:
7 64 2 1 194 3 1 187 4 2 158 5 1 42 6 5 101 7 5 80
output:
308
result:
ok single line: '308'
Test #4:
score: 0
Accepted
time: 2ms
memory: 4224kb
input:
6 32 2 1 110 3 2 36 4 1 54 5 3 101 6 5 71
output:
178
result:
ok single line: '178'
Test #5:
score: 0
Accepted
time: 651ms
memory: 7612kb
input:
20000 100 2273 4097 98627 14155 14055 33506 16060 6363 28081 14840 12695 23379 11520 7892 5831 6633 13834 73944 19218 19341 62064 14392 160 58289 18147 209 46443 16941 5453 55103 11895 12849 31201 10275 1622 71781 19595 6349 14232 19485 10800 9778 10745 13541 44786 18727 15264 25726 5847 12815 43894...
output:
2999800
result:
ok single line: '2999800'
Test #6:
score: 0
Accepted
time: 652ms
memory: 9504kb
input:
20000 1000 1 2 99998 2 3 99994 3 4 99992 4 5 99989 5 6 99987 6 7 99983 7 8 99982 8 9 99978 9 10 99973 10 11 99970 11 12 99965 12 13 99961 13 14 99957 14 15 99954 15 16 99949 16 17 99946 17 18 99945 18 19 99940 19 20 99935 20 21 99932 21 22 99927 22 23 99923 23 24 99920 24 25 99919 25 26 99918 26 27 ...
output:
2088429
result:
ok single line: '2088429'
Test #7:
score: 0
Accepted
time: 687ms
memory: 9604kb
input:
20000 1000 1 2 4 2 3 6 3 4 9 4 5 13 5 6 15 6 7 17 7 8 22 8 9 23 9 10 27 10 11 28 11 12 31 12 13 36 13 14 38 14 15 39 15 16 44 16 17 46 17 18 49 18 19 52 19 20 55 20 21 60 21 22 62 22 23 64 23 24 67 24 25 68 25 26 71 26 27 72 27 28 76 28 29 77 29 30 82 30 31 86 31 32 89 32 33 90 33 34 95 34 35 96 35 ...
output:
2098509
result:
ok single line: '2098509'
Test #8:
score: 0
Accepted
time: 9ms
memory: 5172kb
input:
20000 100000 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1 45 1...
output:
1999780001
result:
ok single line: '1999780001'
Test #9:
score: 0
Accepted
time: 20ms
memory: 9424kb
input:
20000 100 1 2 114 2 3 243 3 4 243 4 5 239 5 6 248 6 7 122 7 8 187 8 9 281 9 10 241 10 11 209 11 12 119 12 13 241 13 14 243 14 15 236 15 16 151 16 17 272 17 18 132 18 19 281 19 20 272 20 21 194 21 22 233 22 23 220 23 24 271 24 25 278 25 26 153 26 27 108 27 28 229 28 29 130 29 30 291 30 31 245 31 32 2...
output:
1636347
result:
ok single line: '1636347'
Test #10:
score: -100
Wrong Answer
time: 3ms
memory: 4292kb
input:
1 12345
output:
10000000000
result:
wrong answer 1st lines differ - expected: '0', found: '10000000000'