QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#454152 | #4363. Branch Assignment | mzmz001 | WA | 1211ms | 5356kb | C++14 | 1.9kb | 2024-06-24 16:55:02 | 2024-06-24 16:55:03 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,b,k,m,idx,h[5005],vis[5005],in[5005],out[5005],sb[5005],qzh[5005];
ll dp[5005],num[5005];
struct node{
ll from,v,w;
}G[50005];
struct node2{
ll u,w;
bool operator < (const node2 &x)const{
return w>x.w;
}
};
struct node3{
ll l,r,p;
}tp[5005];
priority_queue<node2> q;
void make(ll u,ll v,ll w){
G[++idx].v=v;
G[idx].from=h[u];
G[idx].w=w;
h[u]=idx;
}
void djstl(ll x,ll dis[],ll op){
for(ll i=1;i<=n;i++)vis[i]=0,dis[i]=1e14;
q.push({x,0});
dis[x]=0;
while(!q.empty()){
ll u=q.top().u;
q.pop();
if(vis[u])continue;
vis[u]=1;
for(ll i=h[u];i;i=G[i].from){
if((i&1ll)^op)continue;
ll v=G[i].v,w=G[i].w;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
q.push({v,dis[v]});
}
}
}
}
ll culcu(ll x,ll y){
return dp[x]+(y-x-1)*(qzh[y]-qzh[x]);
}
ll erfen2(ll x,ll y){
ll l=tp[x].l,r=tp[x].r,z=tp[x].p,mid;
if(!(culcu(y,r)<culcu(z,r)||(culcu(y,r)==culcu(z,r)&&num[y]>num[z])))return r+1;
while(l<r){
mid=(l+r)/2;
if(culcu(y,mid)<culcu(z,mid)||(culcu(y,mid)==culcu(z,mid)&&num[y]>num[z]))r=mid;
else l=mid+1;
}
return l;
}
ll check(ll val){
dp[0]=num[0]=0;
for(ll i=1;i<=b;i++){
dp[i]=1e18;
for(ll j=0;j<i;j++){
if((culcu(j,i)+val<dp[i])||(culcu(j,i)==dp[i]&&num[j]+1>num[i])){
dp[i]=culcu(j,i)+val;
num[i]=num[j]+1;
}
}
}
return num[b];
}
ll erfen(ll k){
ll l=-1e15,r=1e15,mid;
while(l<r){
mid=(l+r+1)>>1;
if(check(mid)>=k)l=mid;
else r=mid-1;
}
ll sum=check(l);
return dp[b]-l*sum;
}
int main(){
scanf("%lld%lld%lld%lld",&n,&b,&k,&m);
for(ll i=1;i<=m;i++){
ll u,v,w;
scanf("%lld%lld%lld",&u,&v,&w);
make(u,v,w),make(v,u,w);
}
djstl(b+1,in,1);
djstl(b+1,out,0);
for(ll i=1;i<=b;i++)in[i]+=out[i];
sort(in+1,in+b+1);
for(ll i=1;i<=b;i++)qzh[i]=qzh[i-1]+in[i];
printf("%lld",erfen(k));
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3900kb
input:
5 4 2 10 5 2 1 2 5 1 3 5 5 4 5 0 1 5 1 2 3 1 3 2 5 2 4 5 2 1 1 3 4 2
output:
13
result:
ok single line: '13'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3984kb
input:
5 4 2 10 5 2 1 2 5 1 3 5 5 4 5 10 1 5 1 2 3 1 3 2 5 2 4 5 2 1 1 3 4 2
output:
24
result:
ok single line: '24'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3792kb
input:
5 4 3 8 1 5 15 5 1 15 2 5 2 5 2 3 3 5 1 5 3 1 4 5 2 5 4 0
output:
4
result:
ok single line: '4'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3764kb
input:
2 1 1 2 1 2 5 2 1 3
output:
0
result:
ok single line: '0'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3848kb
input:
9 4 2 11 1 2 1 2 3 2 3 4 3 4 6 4 6 8 5 8 9 6 9 7 7 7 5 8 5 8 8 7 6 9 6 1 10
output:
304
result:
ok single line: '304'
Test #6:
score: 0
Accepted
time: 660ms
memory: 4564kb
input:
5000 4999 2 9998 1 2 10000 2 1 10000 2 3 10000 3 2 10000 3 4 10000 4 3 10000 4 5 10000 5 4 10000 5 6 10000 6 5 10000 6 7 10000 7 6 10000 7 8 10000 8 7 10000 8 9 10000 9 8 10000 9 10 10000 10 9 10000 10 11 10000 11 10 10000 11 12 10000 12 11 10000 12 13 10000 13 12 10000 13 14 10000 14 13 10000 14 15...
output:
589335814500000
result:
ok single line: '589335814500000'
Test #7:
score: 0
Accepted
time: 671ms
memory: 4664kb
input:
5000 4999 100 9998 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1 6 7 1 7 8 1 8 9 1 9 10 1 10 11 1 11 12 1 12 13 1 13 14 1 14 15 1 15 16 1 16 17 1 17 18 1 18 19 1 19 20 1 20 21 1 21 22 1 22 23 1 23 24 1 24 25 1 25 26 1 26 27 1 27 28 1 28 29 1 29 30 1 30 31 1 31 32 1 32 33 1 33 34 1 34 35 1 35 36 1 36 37 1 37 38 1 38...
output:
1224510000
result:
ok single line: '1224510000'
Test #8:
score: -100
Wrong Answer
time: 1211ms
memory: 5356kb
input:
5000 4900 2000 50000 3116 1995 5417 1801 380 719 4749 13 4103 1175 493 659 596 3035 2098 628 2199 2816 711 3295 5220 4888 4316 153 1007 2136 1990 1365 1579 8062 4076 1263 7023 3114 3756 2785 3695 3175 3364 2302 3474 5739 3062 3705 9620 3815 1026 7712 3991 3582 3049 3245 2397 5834 18 1456 1619 2186 4...
output:
-9188051185500179716
result:
wrong answer 1st lines differ - expected: '166040058', found: '-9188051185500179716'