#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef long long i64;typedef unsigned long long u64;
enum{NN=100,MM=1000,KK=10000,LIM=5000};
typedef struct{int u,v,w;}Edge;typedef struct{int t,x,y;}Fest;
static Edge ed[MM];static Fest fe[KK];static i64 a[LIM+1][NN][NN],best[KK];static u64 hs[LIM+1];static i64 rf[LIM+1];
static int cmp(const void*A,const void*B){return((const Fest*)A)->t-((const Fest*)B)->t;}
static u64 hashmat(i64*m,int n,i64 r){u64 h=0x9e3779b97f4a7c15ULL;for(int s=0;s<n;++s)for(int v=0;v<n;++v){i64 q=m[s*NN+v];u64 z=q<-((i64)1<<50)?0xfedcba9876543210ULL:(u64)(q-r);h^=z+0x9e3779b97f4a7c15ULL+(h<<6)+(h>>2);}return h;}
int main(void){int n,m,T,k;if(scanf("%d%d%d%d",&n,&m,&T,&k)!=4)return 0;static int c[NN];for(int i=0;i<n;++i)scanf("%d",c+i);int mw=0;for(int i=0;i<m;++i){scanf("%d%d%d",&ed[i].u,&ed[i].v,&ed[i].w);--ed[i].u;--ed[i].v;if(ed[i].w>mw)mw=ed[i].w;}for(int i=0;i<k;++i){scanf("%d%d%d",&fe[i].t,&fe[i].x,&fe[i].y);--fe[i].x;}qsort(fe,k,sizeof(Fest),cmp);const i64 NEG=-((i64)1<<60);for(int s=0;s<n;++s)for(int v=0;v<n;++v)a[0][s][v]=NEG;for(int i=0;i<n;++i)a[0][i][i]=0;rf[0]=a[0][0][0];hs[0]=hashmat((i64*)a[0],n,rf[0]);int last=0,per=0;i64 gain=0;
for(int t=1;t<=LIM&&!per;++t){i64*cur=(i64*)a[t];for(int s=0;s<n;++s)for(int v=0;v<n;++v)cur[s*NN+v]=NEG;for(int e=0;e<m;++e)if(ed[e].w<=t){i64*pr=(i64*)a[t-ed[e].w];int u=ed[e].u,v=ed[e].v,cv=c[v];for(int s=0;s<n;++s){i64 z=pr[s*NN+u]+cv;if(z>cur[s*NN+v])cur[s*NN+v]=z;}}i64 r=cur[0];if(r<NEG/2){for(int s=0;s<n&&r<NEG/2;++s)for(int v=0;v<n;++v)if(cur[s*NN+v]>NEG/2){r=cur[s*NN+v];break;}}rf[t]=r;hs[t]=hashmat(cur,n,r);last=t;if(t>=2*mw)for(int p=1;p<=t-mw&&!per;++p){if(hs[t]!=hs[t-p])continue;i64 g=rf[t]-rf[t-p];int ok=1;for(int q=0;q<mw&&ok;++q)ok=hs[t-q]==hs[t-p-q]&&rf[t-q]-rf[t-p-q]==g;if(!ok)continue;for(int q=0;q<mw&&ok;++q){i64*x=(i64*)a[t-q],*y=(i64*)a[t-p-q];for(int s=0;s<n&&ok;++s)for(int v=0;v<n;++v){int i=s*NN+v;if((x[i]<NEG/2)!=(y[i]<NEG/2)||(x[i]>NEG/2&&x[i]-y[i]!=g)){ok=0;break;}}}if(ok)per=p,gain=g;}}
#ifdef LOCAL
fprintf(stderr,"period last=%d p=%d gain=%lld mw=%d\n",last,per,gain,mw);
#ifdef TRACE
for(int t=0;t<=5;++t){fprintf(stderr,"M%d",t);for(int i=0;i<n;++i)for(int j=0;j<n;++j)if(a[t][i][j]>NEG/2)fprintf(stderr," %d>%d:%lld",i,j,a[t][i][j]);fputc('\n',stderr);}
#endif
#endif
#define GET(dt,u,v) ((dt)<=last?a[(dt)][(u)][(v)]:(per?(a[last-per+1+((dt)-(last-per+1))%per][(u)][(v)]+(i64)(((dt)-(last-per+1+((dt)-(last-per+1))%per))/per)*gain):NEG))
for(int j=0;j<k;++j){i64 z=(i64)c[0]+GET(fe[j].t,0,fe[j].x);for(int i=0;i<j;++i){i64 q=best[i]+GET(fe[j].t-fe[i].t,fe[i].x,fe[j].x);if(q>z)z=q;}best[j]=z+fe[j].y;}i64 ans=(i64)c[0]+GET(T,0,0);for(int i=0;i<k;++i){i64 q=best[i]+GET(T-fe[i].t,fe[i].x,0);if(q>ans)ans=q;}printf("%lld\n",ans>NEG/2?ans:-1);return 0;
#undef GET
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Subtask #1 Testcase #1 | 440.334 ms | 26 MB + 176 KB | Accepted | Score: 100 | 显示更多 |
| Subtask #1 Testcase #2 | 738.154 ms | 80 MB + 52 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #3 | 610.196 ms | 58 MB + 540 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #4 | 472.543 ms | 29 MB + 856 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #5 | 470.964 ms | 32 MB + 596 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #6 | 1.401 s | 218 MB + 480 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #7 | 1.358 s | 207 MB + 884 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #8 | 526.314 ms | 40 MB + 144 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #9 | 438.018 ms | 25 MB + 416 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #10 | 451.894 ms | 29 MB + 388 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #11 | 754.913 ms | 72 MB + 268 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #12 | 439.445 ms | 26 MB + 16 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #13 | 420.226 ms | 22 MB + 364 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #14 | 1.594 s | 165 MB + 604 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #15 | 443.579 ms | 26 MB + 880 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #16 | 522.956 ms | 39 MB + 700 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #17 | 437.309 ms | 25 MB + 728 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #18 | 2 s | 335 MB + 152 KB | Time Limit Exceeded | Score: -100 | 显示更多 |
| Subtask #1 Testcase #19 | 437.74 ms | 25 MB + 728 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #20 | 466.142 ms | 30 MB + 1004 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #21 | 450.102 ms | 27 MB + 404 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #22 | 445.981 ms | 27 MB + 92 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #23 | 496.453 ms | 34 MB + 656 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #24 | 485.702 ms | 35 MB + 24 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #25 | 466.53 ms | 29 MB + 776 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #26 | 487.17 ms | 33 MB + 588 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #27 | 573.553 ms | 53 MB + 192 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #28 | 492.33 ms | 33 MB + 432 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #29 | 586.668 ms | 54 MB + 572 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #30 | 487.483 ms | 32 MB + 752 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #31 | 462.466 ms | 29 MB + 620 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #32 | 441.358 ms | 26 MB + 488 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #33 | 443 ms | 26 MB + 564 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #34 | 1.784 s | 189 MB + 96 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #35 | 529.781 ms | 42 MB + 360 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #36 | 514.296 ms | 37 MB + 560 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #37 | 436.346 ms | 25 MB + 496 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #38 | 460.249 ms | 30 MB + 300 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #39 | 456.715 ms | 30 MB + 380 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #40 | 555.337 ms | 38 MB + 940 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #41 | 493.243 ms | 34 MB + 268 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #42 | 473.47 ms | 30 MB + 924 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #43 | 450.036 ms | 26 MB + 564 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #44 | 519.039 ms | 38 MB + 1020 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #45 | 448.457 ms | 27 MB + 92 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #46 | 471.13 ms | 30 MB + 692 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #47 | 427.765 ms | 23 MB + 980 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #48 | 487.677 ms | 34 MB + 972 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #49 | 674.902 ms | 52 MB + 668 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #50 | 640.15 ms | 65 MB + 12 KB | Accepted | Score: 0 | 显示更多 |