有好心人给一下hack数据吗QWQ
by Bernie_qwq @ 2022-10-02 11:03:45
蝴蝶a
by JustForYourself @ 2022-10-02 12:47:33
@[JustForYourself](/user/809531) ?
by Bernie_qwq @ 2022-10-02 19:07:11
我的代码只对了hack点,可以参考下
我这先处理当k=0时的情况~~(但是也错了)~~再最后进行统一处理
~~反正就是有一大堆错误,但是hack点对了~~
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,k,d[1001],f[1001];
long long ans;
struct tour
{
int t,x,y;
friend bool operator<(tour x,tour y){return x.y>y.y;}
}a[10010];
priority_queue<tour>q;
bool cmp(tour x,tour y)
{
return x.x<y.x || x.x==y.x;
}
int main()
{
//freopen("bus.in","r",stdin);
ios::sync_with_stdio(false);
cin>>n>>m>>k;
for(int i=1;i<n;i++)
cin>>d[i];
for(int i=1;i<=m;i++)
cin>>a[i].t>>a[i].x>>a[i].y;
sort(a+1,a+m+1,cmp);
int t=0,pos=a[1].x;
for(int i=1;i<=m;i++)
{
if(a[i].x>pos)
{
for(int j=pos;j<a[i].x;j++)
t+=d[j];
pos=a[i].x;
}
q.push(a[i]);
while(!q.empty() && pos>=q.top().y)
{
ans+=t-q.top().t;
q.pop();
}
if(t<a[i].t)t=a[i].t;
}
while(!q.empty())
{
tour x=q.top();q.pop();
if(x.y>pos)
{
for(int j=pos;j<x.y;j++)
t+=d[j];
pos=x.y;
}
if(pos>=x.y)
ans+=t-x.t;
}
for(int i=1;i<=m;i++)
for(int j=a[i].x;j<a[i].y;j++)
f[j]++;
while(k>0)//第i条路有f[i]人走
{
int mx=0;
for(int i=1;i<n;i++)
mx=max(mx,f[i]);
for(int i=1;i<n;i++)
if(f[i]==mx)
{
if(k<d[i])
ans-=k*f[i];
else
ans-=d[i]*f[i];
k-=d[i];
f[i]=0;
break;
}
}
cout<<ans;
return 0;
}
``````
by oulii @ 2023-10-12 12:30:00