QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#733877#8049. Equal Sumsucup-team4479ML 2ms13944kbC++231.4kb2024-11-10 21:46:552024-11-10 21:46:56

Judging History

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

  • [2024-11-10 21:46:56]
  • 评测
  • 测评结果:ML
  • 用时:2ms
  • 内存:13944kb
  • [2024-11-10 21:46:55]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
constexpr int N=505,M=500;
constexpr int MOD=1000000007;
int n,m;
int la[N],ra[N],lb[N],rb[N]; 
int poolf[N][N][M+M],*f[N][N];
int poolsum[N][N][M+M],*sum[N][N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>la[i]>>ra[i];
    for(int i=1;i<=m;i++)
        cin>>lb[i]>>rb[i];
    for(int i=0;i<=n;i++)
        for(int j=0;j<=m;j++)
            f[i][j]=&poolf[i][j][M],sum[i][j]=&poolsum[i][j][M];
    f[0][0][0]=1;
    for(int i=0;i<=n;i++)
        for(int j=0;j<=m;j++)
        {
            for(int k=-M;k<=M;k++)
            {
                if(j>=1)
                {
                    int l=max(k+lb[j],1),r=min(k+rb[j],M);
                    if(l<=r) f[i][j][k]=((long long)f[i][j][k]+sum[i][j-1][r]-sum[i][j-1][l-1]+MOD)%MOD;
                }
                if(i>=1)
                {
                    int l=max(k-ra[i],-M),r=min(k-la[i],0);
                    if(l<=r) f[i][j][k]=((long long)f[i][j][k]+sum[i-1][j][r]-(l>-M?sum[i-1][j][l-1]:0)+MOD)%MOD;
                }
                sum[i][j][k]=f[i][j][k];
                if(k>-M) sum[i][j][k]=(sum[i][j][k]+sum[i][j][k-1])%MOD;
            }
        }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<f[i][j][0]<<" ";
        cout<<"\n";
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 13944kb

input:

2 3
1 2
2 3
1 4
2 2
1 3

output:

2 0 0 
3 4 4 

result:

ok 6 numbers

Test #2:

score: -100
Memory Limit Exceeded

input:

500 500
19 458
1 480
7 485
50 461
12 476
15 461
48 466
40 453
46 467
9 458
27 478
26 472
46 459
29 490
6 500
17 487
48 484
28 472
28 459
25 480
4 491
29 481
36 460
2 491
44 499
22 473
20 458
4 483
27 471
2 496
11 461
43 450
2 478
37 466
15 459
42 482
7 451
19 455
2 453
47 475
48 450
1 474
46 471
9 4...

output:

411 999811757 951250344 210733945 56002390 773754427 61528831 712555025 779569348 959562510 299513325 448691921 140935903 534886359 160576737 150048454 169301973 923046964 675175977 422661690 266059498 740714569 852647222 211566806 758250124 984912452 363642248 248442087 556532644 142524496 91034949...

result: