求调,谢谢(壶关)
  • 板块灌水区
  • 楼主nini0913
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/10/7 11:35
  • 上次更新2024/10/7 12:43:37
查看原帖
求调,谢谢(壶关)
1062571
nini0913楼主2024/10/7 11:35

题目描述

AC鸭和AK鸭比赛跳台阶。

台阶共有 n 级,其中每级都有对应的宽度 wi 和 高度 hi 。AC鸭每次能跳的最大宽度为 W,高度为 H。当相邻几级台阶的宽度总和和高度总和不大于AC鸭跳跃距离限制时,AC鸭就可以一次跳上多级台阶。

AC鸭想知道,它共有多少种跳法跳上第 n 级台阶。

输入

第一行输入三个整数 n,W,H 表示台阶级数,AC鸭能够跳跃的最大宽度与高度。

接下来 n 行,每行输入一个台阶的宽度和高度 wi ,hi .

输出

输出AC鸭跳上第 n 级台阶的总方案数。如果它跳不上去,输出 0 由于答案可能会很大,输出答案对 998244353 取模后的结果。

样例

输入数据 1

5 5 5
1 2
2 1
2 2
2 2
1 1

输出数据 1

12

我的程序

#include<iostream>
using namespace std;
const long long mod=998244353;
long long a[500010]={0,1,2,4},W,H,n,w[500010],h[500010];
int main(){
    cin>>n>>W>>H;
    for(long long i=1;i<=n;i++){
        cin>>w[i]>>h[i];
    }
    if(n<=3){
        cout<<a[n]<<endl;
        return 0;
    }
    for(long long i=4;i<=n;i++){    
        long long x1=0,x2=0;
        for(long long j=1;j<=i;j++)
            x1+=w[i],x2+=h[i];
        long long X=min(x1/i,x2/i);
        for(long long j=1;j<=X;j++){
            if(i>=j){
                a[i]=(a[i]+a[i-j]%mod);
            }
        }
    }
    cout<<a[n]<<endl;
    return 0;
}

数据规模

1<=n,H,W,hi,wi<=10^9

求大佬看看我这么想为啥是错的,谢谢!

测试点没有0的情况,我就省略啦

2024/10/7 11:35
加载中...