QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#697586 | #9528. New Energy Vehicle | SocialPanda | WA | 2ms | 9788kb | C++23 | 2.0kb | 2024-11-01 14:59:38 | 2024-11-01 14:59:39 |
Judging History
answer
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#define int long long
//#define LL long long
#define double long double
//#define lf Lf
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define endl "\n"
#define PII pair<int,int>
#define Gheap priority_queue<int,vector<int>,greater<int>>
#define Lheap priority_queue<int>
#define MAXN 0x3f3f3f3f
#define MINN -0x3f3f3f3f
using namespace std;
const int N=2e5+100,M=2*N;
//int e[N],w[M],h[M],ne[M],idx;
vector<int> vec[N];
int a[N];//各型号电池的容量
int v[N];//a的固定值
int p[N];//电站的位置
int t[N];//电站能充哪个型号电池
int idx=0,ans=0;
int dis(int sn)
{
while(vec[sn].size() and ans>=vec[sn].back())
{
vec[sn].pop_back();
}
if(vec[sn].empty()) return 1e18;
else return vec[sn].back();
}
void solve()
{
int n,m;
cin>>n>>m;
priority_queue<PII,vector<PII>,greater<PII>> q;
for(int i=1;i<=n;i++) {cin>>a[i];v[i]=a[i];vec[i].clear();}
for(int i=1;i<=m;i++) {cin>>p[i]>>t[i];}
for(int i=1;i<=m;i++) vec[t[i]].eb(p[i]);
for(int i=1;i<=n;i++) reverse(vec[i].begin(),vec[i].end());
for(int i=1;i<=n;i++) q.push({dis(i),i});
while(q.size())
{
int sn = q.top().se;q.pop();
int ned_go=1e18;
if(idx<m) ned_go=p[idx+1]-ans;
int act_go=min(a[sn],ned_go);
a[sn]-=act_go;
ans+=act_go;
if(idx<m and ans==p[idx+1])
{
idx++;
int old = a[t[idx]];
a[t[idx]] = v[t[idx]];
q.push({dis(sn),sn});
if(old==0) q.push({dis(t[idx]),idx});
}
}
cout<<ans<<endl;
}
/*
1 2
3 3
0 1 2 3 4 5 6 7 8 9 10
1 2
1 1 2 2 2 1 2 2 2 1 1
1 2
5 2
0 1 2 3 4 5 6 7 8 9
2 1
*/
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int tt=1;
cin >> tt;
while(tt--) solve();
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 9788kb
input:
2 3 1 3 3 3 8 1 2 2 5 2 1 2 2 1
output:
12 9
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 2ms
memory: 7912kb
input:
6 3 2 2 2 2 6 1 7 1 2 2 3 3 2 1 6 2 2 3 2 2 5 1 7 2 9 1 2 2 3 3 2 1 6 2 1 1 999999999 1000000000 1 1 1 1000000000 1000000000 1
output:
9 15 13 19 1000000018 2000000018
result:
wrong answer 2nd lines differ - expected: '11', found: '15'