BZOJ3398 [Usaco 2009 Feb] Bullcow 목소와 암소
Time Limit: 1 Sec Memory Limit: 128MB Submit: 335 Solved: 235 [Submit][Status][Discuss]
Description
존은 N(1≤N≤100000)마리의 소를 데리고 집회의 전시 행사에 참가하려고 한다. 이 소들은 암소일 수도 있고 암소일 수도 있다. 소들은 일렬로 서야 한다. 그러나 암소는 싸움을 좋아하기 때문에 암소가 소동을 일으키지 않도록 존은 임의의 두 마리 암소 사이에 적어도 K(O≤K마리의 암소가 있어야 한다고 결정했다.
모두 몇 가지 줄을 서는 방법이 있는지 계산해 보세요. 모든 암소는 똑같다고 볼 수 있고, 모든 암소도 똑같습니다. 답은 5000011에 대한 모범입니다.
Input
한 줄에 두 개의 정수 N과 K를 입력합니다.
Output
줄을 서는 방법의 수를 나타내는 정수.
Sample Input
4 2
Sample Output
6
샘플 설명
6가지 방법은 암컷, 암컷, 암컷, 암컷, 암컷, 암컷
DP 누드 문제, 일거수일투족
F[i]=f[i-1]+f[i-k-1]
충격!hzwer가 기괴한 조합 수학으로 쓰다니.
Code
#include
#include
#include
#include
#include
#include
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
#define mem(x,num) memset(x,num,sizeof x)
#define LL long long
using namespace std;
inline LL read()
{
LL f=1,x=0;char ch=getchar();
while(ch'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
const int maxn=1e7+6,mod=5000011;
int n,k,f[maxn];
int main()
{
n=read(),k=read();
f[1]=2;
k++;
rep(i,2,n)f[i]=(f[i-1]+(i>k?f[i-k]:1))%mod;
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[BOJ]11048(python)python 풀이 DP를 이용해 풀이 보통 이런 문제는 dfs나 bfs로 풀이하는 것이여서 고민을 했는데 이 문구 덕분에 DP 를 이용해 풀이할 수 있었다 뒤로 돌아가는 등의 경우를 고려하지 않아도 되기 때문이다 코...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.