提出 #35638627


ソースコード 拡げる

#include<iostream>
#include<atcoder/modint>
using namespace std;
using mint=atcoder::modint1000000007;
int N,A,B;
mint dp[5002][2][2][5002];
mint tp1[5002][2],tp2[5002][2][5002];
main()
{
	cin>>N>>A>>B;
	if(A<B)swap(A,B);
	//if 0 ga A ko rennzoku -> ok
	//else
	//  if 1 ga B ko rennzoku
	//    if 1 ga B ko ijou rennzoku wo 0 ni site 0 ga A ko rennzoku -> ok
	//    else -> ng
	//  else -> ng
	dp[0][0][0][0]=1;
	for(int i=0;i<=N;i++)
	{
		tp1[i+1][0]+=tp1[i][0];
		tp1[i+1][1]+=tp1[i][1];
		dp[i][0][1][0]+=tp1[i][0];
		dp[i][1][1][0]+=tp1[i][1];
		for(int k=0;k<2;k++)
		{
			for(int j=0;j<=i;j++)
			{
				tp2[i+1][k][j+1]+=tp2[i][k][j];
				dp[i][k][1][j]+=tp2[i][k][j];
				//A->A
				dp[i+1][k][0][j+1]+=dp[i][k][0][j];
				dp[i+1][k][0][j+1]+=dp[i][k][1][j];
				//A->B
				/*tp1
				dp[i+1][k|j>=A][1][0]+=dp[i][k][0][j];
				...
				dp[i+B-1][k|j>=A][1][0]+=dp[i][k][0][j];
				*/
				tp1[i+1][k|j>=A]+=dp[i][k][0][j];
				if(i+B<=N)tp1[i+B][k|j>=A]-=dp[i][k][0][j];
				/*tp2
				dp[i+B][k][1][j+B]+=dp[i][k][0][j];
				...
				dp[i+(N-i)][k][1][j+(N-i)]+=dp[i][k][0][j];
				*/
				if(i+B<=N)
				{
					tp2[i+B][k][j+B]+=dp[i][k][0][j];
					tp2[i+(N-i)+1][k][j+(N-i)+1]-=dp[i][k][0][j];
				}
			}
		}
	}
	mint ans=0;
	for(int k=0;k<2;k++)for(int j=0;j<=N;j++)
	{
		if(k==1||j>=A)ans+=dp[N][k][0][j]+dp[N][k][1][j];
	}
	cout<<ans.val()<<endl;
}

提出情報

提出日時
問題 C - Range Set
ユーザ kotatsugame
言語 C++ (GCC 9.2.1)
得点 800
コード長 1359 Byte
結果 AC
実行時間 500 ms
メモリ 590068 KiB

コンパイルエラー

./Main.cpp:8:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
    8 | main()
      |      ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:40:17: warning: suggest parentheses around comparison in operand of ‘|’ [-Wparentheses]
   40 |     tp1[i+1][k|j>=A]+=dp[i][k][0][j];
      |                ~^~~
./Main.cpp:41:27: warning: suggest parentheses around comparison in operand of ‘|’ [-Wparentheses]
   41 |     if(i+B<=N)tp1[i+B][k|j>=A]-=dp[i][k][0][j];
      |                          ~^~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 800 / 800
結果
AC × 3
AC × 39
セット名 テストケース
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt
ケース名 結果 実行時間 メモリ
00-sample-01.txt AC 343 ms 589944 KiB
00-sample-02.txt AC 341 ms 589972 KiB
00-sample-03.txt AC 348 ms 589988 KiB
01-01.txt AC 344 ms 590000 KiB
01-02.txt AC 340 ms 589984 KiB
01-03.txt AC 340 ms 589968 KiB
01-04.txt AC 340 ms 590020 KiB
01-05.txt AC 340 ms 589876 KiB
01-06.txt AC 340 ms 589864 KiB
01-07.txt AC 340 ms 590020 KiB
01-08.txt AC 345 ms 589944 KiB
01-09.txt AC 341 ms 590000 KiB
01-10.txt AC 342 ms 589980 KiB
01-11.txt AC 386 ms 589860 KiB
01-12.txt AC 348 ms 590060 KiB
01-13.txt AC 354 ms 589876 KiB
01-14.txt AC 341 ms 590040 KiB
01-15.txt AC 366 ms 589832 KiB
01-16.txt AC 475 ms 590056 KiB
01-17.txt AC 374 ms 590008 KiB
01-18.txt AC 447 ms 589860 KiB
01-19.txt AC 370 ms 589944 KiB
01-20.txt AC 351 ms 590004 KiB
01-21.txt AC 431 ms 589984 KiB
01-22.txt AC 486 ms 589832 KiB
01-23.txt AC 487 ms 590040 KiB
01-24.txt AC 488 ms 589828 KiB
01-25.txt AC 487 ms 589820 KiB
01-26.txt AC 490 ms 589980 KiB
01-27.txt AC 500 ms 589820 KiB
01-28.txt AC 490 ms 589952 KiB
01-29.txt AC 488 ms 590012 KiB
01-30.txt AC 495 ms 590012 KiB
01-31.txt AC 499 ms 590016 KiB
01-32.txt AC 500 ms 590068 KiB
01-33.txt AC 488 ms 589980 KiB
01-34.txt AC 500 ms 589864 KiB
01-35.txt AC 490 ms 589952 KiB
01-36.txt AC 424 ms 589968 KiB