提出 #18170654


ソースコード 拡げる

/*
after dusk passed,
there is a starry sky.
*/
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define m_k make_pair
#define mod 1000000007
#define int long long
using namespace std;
const int N=2100;
int n,k,dp[N][N],sum[N];
inline void add(int &a,int b){a=((a+b>mod)?a+b-mod:a+b);}
inline void del(int &a,int b){a=((a-b<0)?a-b+mod:a-b);}
inline void mul(int &a,int b){a=(a*b)%mod;}
inline int m_pow(int a,int b)
{
	int ans=1;
	while (b)
	{
		if (b&1) mul(ans,a);
		b>>=1;
		mul(a,a);
	}
	return ans;
}
inline int read()
{
	int f=1,x=0;char s=getchar();
	while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
	while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
	return x*f;
}
signed main()
{
	n=read();k=read();
	if (n==1)
	{
		printf("1\n");
		return 0;
	}
	if (k==1)
	{
		printf("%lld\n",m_pow(2,n-2));
		return 0;
	}
	dp[0][n+1]=1;
	for (int i=1;i<=n+1;i++) sum[i]=1;
	for (int i=1;i<k;i++)
	{
		for (int j=1;j<=n-i+1;j++)
		{
			dp[i][j]=sum[j+1];
			add(dp[i][j],dp[i-1][j]);
		}
		for (int j=1;j<=n+1;j++) sum[j]=0;
		for (int j=n-i+1;j>=1;j--) sum[j]=(sum[j+1]+dp[i][j])%mod;
	}
	int ans=sum[2];
	if (k!=n) mul(ans,m_pow(2,n-k-1));
	printf("%lld\n",ans);
}

提出情報

提出日時
問題 F - Solitaire
ユーザ SevenDawns
言語 C++ (GCC 9.2.1)
得点 1200
コード長 1219 Byte
結果 AC
実行時間 33 ms
メモリ 26576 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1200 / 1200
結果
AC × 3
AC × 26
セット名 テストケース
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt
ケース名 結果 実行時間 メモリ
00_example_01.txt AC 6 ms 3592 KiB
00_example_02.txt AC 2 ms 3576 KiB
00_example_03.txt AC 25 ms 18588 KiB
01.txt AC 2 ms 3672 KiB
02.txt AC 15 ms 11048 KiB
03.txt AC 2 ms 3712 KiB
04.txt AC 2 ms 4140 KiB
05.txt AC 2 ms 3440 KiB
06.txt AC 2 ms 3456 KiB
07.txt AC 2 ms 3772 KiB
08.txt AC 2 ms 3792 KiB
09.txt AC 28 ms 23720 KiB
10.txt AC 2 ms 3676 KiB
11.txt AC 3 ms 3668 KiB
12.txt AC 31 ms 23968 KiB
13.txt AC 2 ms 4008 KiB
14.txt AC 23 ms 14256 KiB
15.txt AC 6 ms 6588 KiB
16.txt AC 25 ms 14524 KiB
17.txt AC 20 ms 12540 KiB
18.txt AC 29 ms 21100 KiB
19.txt AC 21 ms 19552 KiB
20.txt AC 13 ms 11220 KiB
21.txt AC 2 ms 3392 KiB
22.txt AC 33 ms 26576 KiB
23.txt AC 2 ms 3660 KiB