QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#510237#6531. Base Station Constructionucup-team3474WA 55ms15192kbC++231.1kb2024-08-09 00:21:282024-08-09 00:21:29

Judging History

你现在查看的是最新测评结果

  • [2024-08-09 00:21:29]
  • 评测
  • 测评结果:WA
  • 用时:55ms
  • 内存:15192kb
  • [2024-08-09 00:21:28]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1919810;
typedef long long ll;
typedef pair<ll,ll> PII;
ll n,m,k;
ll a[N],b[N];
ll dp[N];
ll ne[N];
ll q[N],tt,hh;

int s[N];

void __(){
    scanf("%lld",&n);
    for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
    for(int i=1;i<=n;i++) dp[i]=0;
    vector<PII> v;
    scanf("%lld",&m);
    bool flag=1;
    for(int i=1;i<=m;i++){
        int x,y;
        scanf("%d%d",&x,&y);
        if(y==n)  flag=0;
        v.push_back({y,x});
    }
    sort(v.begin(),v.end());
    int j=0;
    for(int i=1;i<=n;i++){
        ne[i]=ne[i-1];
        while(j<v.size()&&v[j].first<i){
            ne[i]=max(ne[i],v[j].second);
            j++;
        } 
        // cout<<ne[i]<<" ";
    }
    // cout<<endl;
    tt=0,hh=0;
    q[0]=0;
    
    for(int i=1;i<=n;i++){
        while(hh<=tt&&q[hh]<ne[i]) hh++;
        dp[i]=dp[q[hh]]+a[i];
        while(hh<=tt&&dp[i]<dp[q[hh]]) tt--;
        q[++tt]=i;
    }
    printf("%lld\n",dp[n]-flag*a[n]);
}


int main(){
    int _=1;
    cin>>_;
    while(_--){
        __();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 9936kb

input:

2
5
3 2 4 1 100
3
1 3
2 4
5 5
5
7 3 4 2 2
3
1 4
2 3
4 5

output:

102
5

result:

ok 2 number(s): "102 5"

Test #2:

score: -100
Wrong Answer
time: 55ms
memory: 15192kb

input:

6201
12
88 78 46 95 84 98 55 3 68 42 6 18
19
6 9
10 11
12 12
8 11
8 12
2 3
2 3
1 5
9 9
7 8
6 11
2 4
12 12
2 4
2 9
7 10
8 8
1 7
6 11
5
76 27 48 66 61
2
1 4
3 5
8
64 81 20 6 86 9 4 55
1
7 7
9
1 43 18 81 11 22 9 61 83
14
5 6
2 6
5 8
1 4
9 9
9 9
7 7
2 5
8 9
5 6
4 8
5 8
9 9
6 6
10
66 41 84 7 80 31 22 96 ...

output:

209
137
4
157
362
141
42
220
174
139
245
206
217
162
230
127
287
89
156
130
148
46
1
193
299
93
239
303
236
150
177
57
46
82
157
66
83
160
151
62
35
168
156
81
171
290
110
242
126
121
335
86
311
244
333
162
302
81
304
238
30
129
75
131
96
179
81
382
142
185
77
176
215
373
211
56
120
39
234
118
348
1...

result:

wrong answer 1st numbers differ - expected: '141', found: '209'