感觉题面有误

P1107 [BJWC2008] 雷涛的小猫

```cpp #include<iostream> #include<cstring> #include<cstdio> #define int long long using namespace std; const int N=2210; int tre[N][N]; int n,h,del; inline int f_in(){ int f=0;char t=1,c=getchar(); while(c<'0' || c>'9'){if (c=='-') t=-1;c=getchar();} while('0'<=c && c<='9'){f=f*10+c-'0';c=getchar();} return f*t; } signed main(){ n=f_in(),h=f_in(),del=f_in(); for(int i=1;i<=n;i++){ int a=f_in(); for(int j=1;j<=a;j++){ int b=f_in(); if (b<=h && b>=0)//这个特判不加会WA,说明肯定有T(i,j)超过了H tre[i][b]++; } } int maxn[N+del+234];//为了防溢出,多开了一点 memset(maxn,0,sizeof(maxn)); int ans=0; for(int i=h;i>=1;i--){ for(int j=1;j<=n;j++){ if (i+del>h) maxn[i+del]=0; tre[j][i]+=max(tre[j][i+1],maxn[i+del]); maxn[i]=max(maxn[i],tre[j][i]); } } printf("%d",maxn[1]); } ```
by jiangyanheng @ 2020-11-27 07:54:09


请无视上面的 b>=0,主要问题应该在上界
by jiangyanheng @ 2020-11-27 09:09:04


根据以下程序,#1 会输出 ``ORZ JIANGYE``,而 #2 的输出正常 ```cpp #include<iostream> #include<cstring> #include<cstdio> #define int long long using namespace std; int n,h,del,a,b; signed main(){ cin >> n >> h >> del; for(int i=1;i<=n;i++){ cin >> a; for(int j=1;j<=a;j++){ cin >> b; if(b > h) { cout << "ORZ JIANGYE"; return 0; } } } cout << "QWQ\n"; return 0; } ``` ### ORZ JIANGYE!
by lxy__ @ 2020-11-27 09:18:45


@[jiangyanheng](/user/68884)
by lxy__ @ 2020-11-27 09:20:09


|