ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#214402 | #2767. 摆烂 | erican | 50 | 191ms | 8572kb | C++11 | 2.9kb | 2024-11-18 20:13:48 | 2024-11-19 08:31:16 |
answer
/* Erica N */
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define int long long
#define ull unsigned long long
#define pii pair<int, int>
#define ps second
#define pf first
#define itn int
#define rd read()
int read(){
int xx = 0, ff = 1;char ch = getchar();
while (ch < '0' || ch > '9') {if (ch == '-')ff = -1; ch = getchar();}
while (ch >= '0' && ch <= '9')xx = xx * 10 + (ch - '0'), ch = getchar();
return xx * ff;
}
// void write(int out) {
// if (out < 0)
// putchar('-'), out = -out;
// if (out > 9)
// write(out / 10);
// putchar(out % 10 + '0');
// }
#define cdbg(x...) do { cerr << #x << " -> "; err(x); } while (0)
void err() { cerr << endl; }
template<template<typename...> class T, typename t, typename... A>
void err(T<t> a, A... x) { for (auto v: a) cerr << v << ' '; err(x...); }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
const int N = 3e5 + 5;
const int INF = 1e18;
const int M = 1e7;
const int MOD = 1e9 + 7;
int a[N];
int t[N];
int nxt[N];
int pos[N];
int tot;
int f[N];//将前i个送入并返回的最小用时
priority_queue<pii> pl;
priority_queue<int> pr;
signed main() {
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
int n=rd;
for(int i=1;i<=n;i++){
t[i]=rd;
a[i]=rd;
}
int s=n+1;
for(int i=n;~i;i--){
nxt[i]=s;
if(a[i]>a[s])s=i,pos[++tot]=s;
}
reverse(pos+1,pos+tot+1);
memset(f,0x3f3f,sizeof f);
f[0]=0;
pl.push({-(f[0]+2*a[nxt[0]]),0});
for(int i=1;i<=tot;i++){
while(pl.size()){
int x=pl.top().ps;
if(f[x]<t[pos[i]]){
int y=-pl.top().pf;
pl.pop();
y-=f[x];
pr.push(-y);
}else{
break;
}
}
if(pl.size())f[i]=min(f[i],-pl.top().pf);
if(pr.size())f[i]=min(f[i],t[pos[i]]-pr.top());
// for(int j=0;j<i;j++){
// f[i]=min(f[i],max(t[pos[i]]+2*a[nxt[j]],f[j]+2*a[nxt[j]]));
// }
pl.push({-(f[i]+2*a[nxt[i]]),i});
}
// cdbg(f[1]);
cout<<f[tot]<<endl;
// for(int i=1;i<=n;i++){
// cerr<<nxt[i]<<' ';
// }cerr<<endl;
// int cur=s;
// int tim=0;
// while(cur<=n){
// tim=max(tim,t[cur]);
// int mx=a[cur];
// if(tim+2*mx<=t[nxt[cur]]){
// tim=t[nxt[cur]];
// cur=nxt[cur];
// continue;
// }
// int rt=0;
// while(nxt[cur]<=n&&tim+rt+(t[nxt[cur]]-t[cur])+2*mx<=tim+rt+mx*2+2*a[nxt[cur]]){
// cur=nxt[cur];
// rt+=(t[nxt[cur]]-t[cur]);
// }
// tim=tim+rt+2*mx;
// cdbg(cur,tim);
// cur=nxt[cur];
// }
// cout<<tim<<endl;
}
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 0ms
memory: 3556kb
input:
20 12513359 382258501 49946422 294259408 61782741 259996549 128874560 457675284 152578248 511428369 ...
output:
2781551734
result:
ok 1 number(s): "2781551734"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
20 6592046 616393821 8538879 124771654 24979050 168650283 59952328 506075107 128878498 796836890 168...
output:
2878186356
result:
ok 1 number(s): "2878186356"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
20 2099663 147467539 25290040 156795746 197254068 590585918 198843927 512239904 222920966 456981246 ...
output:
2770880243
result:
ok 1 number(s): "2770880243"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
20 66393530 420843093 90129695 489656570 131248562 182208891 291691534 751771331 342922878 673384475...
output:
2926027520
result:
ok 1 number(s): "2926027520"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
20 141852945 69130050 155003677 784901688 156591867 730149439 161520357 619098795 188670057 61380271...
output:
2878920725
result:
ok 1 number(s): "2878920725"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
20 0 333333333 1 333333332 2 333333331 3 333333330 4 333333329 5 333333328 6 333333327 7 333333326 8...
output:
888888906
result:
ok 1 number(s): "888888906"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
20 0 200000000 1 199999999 2 199999998 3 199999997 4 199999996 5 199999995 6 199999994 7 199999993 8...
output:
799218728
result:
ok 1 number(s): "799218728"
Subtask #2:
score: 20
Accepted
Test #8:
score: 20
Accepted
time: 0ms
memory: 3576kb
input:
1000 132699 718470029 234343 395421925 1290414 393017296 1399642 607415822 1402810 515471990 2008288...
output:
2991845504
result:
ok 1 number(s): "2991845504"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
1000 1460927 635822050 1474184 113973702 2262058 184319286 2754182 45688636 3158543 762355475 357426...
output:
2997073536
result:
ok 1 number(s): "2997073536"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
1000 2118442 141038751 2135116 387165975 4874198 290249307 6872737 82266843 7401335 726603624 756080...
output:
2995302771
result:
ok 1 number(s): "2995302771"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
1000 437090 934565437 1175198 156863320 1198404 324764019 2277385 373440655 2425307 392581950 350360...
output:
2995901355
result:
ok 1 number(s): "2995901355"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
1000 9066 773817477 123486 806680042 851047 596461942 992394 523789453 1003388 520126158 1323726 958...
output:
2992153228
result:
ok 1 number(s): "2992153228"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
1000 1219327 803904616 2680619 571390377 2920737 199860734 3524708 883722438 4171344 134002719 59874...
output:
2997734121
result:
ok 1 number(s): "2997734121"
Test #14:
score: 0
Accepted
time: 2ms
memory: 3576kb
input:
1000 2880284 488746460 3414969 562543737 4498732 74314414 9375222 111266686 9458421 596112995 963592...
output:
2998591235
result:
ok 1 number(s): "2998591235"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
1000 1239163 666132179 1871097 706139536 2956078 487495665 3259471 69911742 4479955 188362973 586756...
output:
2996854561
result:
ok 1 number(s): "2996854561"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
1000 630980 355641503 934118 736144505 1523728 365898752 4057089 829930253 4910133 224420115 4990452...
output:
2999709988
result:
ok 1 number(s): "2999709988"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
1000 193594 350732868 965625 322880549 1694055 576483511 1992769 754390117 2507741 171984733 3271204...
output:
2999420445
result:
ok 1 number(s): "2999420445"
Test #18:
score: 0
Accepted
time: 2ms
memory: 3620kb
input:
1000 0 333333333 1 333333332 2 333333331 3 333333330 4 333333329 5 333333328 6 333333327 7 333333326...
output:
888889886
result:
ok 1 number(s): "888889886"
Test #19:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
1000 0 200000000 1 199999999 2 199999998 3 199999997 4 199999996 5 199999995 6 199999994 7 199999993...
output:
799217760
result:
ok 1 number(s): "799217760"
Subtask #3:
score: 20
Accepted
Test #20:
score: 20
Accepted
time: 17ms
memory: 5900kb
input:
100000 9326 430414358 13368 156324232 15149 550951304 22296 345034579 22578 397947033 37137 49312905...
output:
2999984291
result:
ok 1 number(s): "2999984291"
Test #21:
score: 0
Accepted
time: 18ms
memory: 5900kb
input:
100000 1281 980120279 38572 969057410 60961 443629644 67305 918262285 68761 540475664 79259 86368005...
output:
2999973779
result:
ok 1 number(s): "2999973779"
Test #22:
score: 0
Accepted
time: 18ms
memory: 5900kb
input:
100000 20710 863020655 22837 465689267 34425 232297482 37426 410827133 47298 825839625 48599 2328793...
output:
2999991115
result:
ok 1 number(s): "2999991115"
Test #23:
score: 0
Accepted
time: 8ms
memory: 5896kb
input:
100000 1893 587093713 12130 188883761 20509 103771956 23181 427935148 30291 289716104 52036 41982854...
output:
2999953325
result:
ok 1 number(s): "2999953325"
Test #24:
score: 0
Accepted
time: 17ms
memory: 5896kb
input:
100000 9157 466195030 10932 448643920 15616 675011785 24802 20969130 42481 213957558 43201 100624199...
output:
2999986961
result:
ok 1 number(s): "2999986961"
Test #25:
score: 0
Accepted
time: 17ms
memory: 5900kb
input:
100000 8028 735757896 15346 778429486 19608 762797726 36073 700770644 38385 673827857 39670 79333540...
output:
2999964970
result:
ok 1 number(s): "2999964970"
Test #26:
score: 0
Accepted
time: 11ms
memory: 5900kb
input:
100000 18066 489619655 39420 363288479 45624 255823520 53848 768452718 86073 570556759 97457 1152834...
output:
2999949901
result:
ok 1 number(s): "2999949901"
Test #27:
score: 0
Accepted
time: 15ms
memory: 5896kb
input:
100000 9572 354230841 44475 137493766 73724 908871450 83706 376797074 88538 381989371 90425 46309979...
output:
2999992149
result:
ok 1 number(s): "2999992149"
Test #28:
score: 0
Accepted
time: 17ms
memory: 5896kb
input:
100000 2617 628340050 16629 69440544 45392 441060577 52161 702044189 66272 750166177 70981 780473233...
output:
2999978454
result:
ok 1 number(s): "2999978454"
Test #29:
score: 0
Accepted
time: 19ms
memory: 5900kb
input:
100000 1820 854489707 4143 351640051 6324 246260208 10128 483185284 12354 258240070 17250 502913471 ...
output:
2999978980
result:
ok 1 number(s): "2999978980"
Test #30:
score: 0
Accepted
time: 11ms
memory: 8568kb
input:
100000 0 333333333 1 333333332 2 333333331 3 333333330 4 333333329 5 333333328 6 333333327 7 3333333...
output:
888988886
result:
ok 1 number(s): "888988886"
Test #31:
score: 0
Accepted
time: 17ms
memory: 8572kb
input:
100000 0 200000000 1 199999999 2 199999998 3 199999997 4 199999996 5 199999995 6 199999994 7 1999999...
output:
799119142
result:
ok 1 number(s): "799119142"
Subtask #4:
score: 0
Runtime Error
Test #32:
score: 0
Runtime Error
input:
2000000 181 24185667 293 532288461 1433 921996635 1694 629544979 2540 173534643 2662 963172401 3159 ...
output:
result:
Subtask #5:
score: 0
Runtime Error
Test #42:
score: 0
Runtime Error
input:
2000000 684 624071334 1181 709831992 1397 43325781 1938 430417709 4157 60566309 4568 912818933 5265 ...