블 루 브리지 컵 주사위 접 기 (동적 계획)

도박 성 atm 은 만년 에 주사위 에 미련 을 두 었 다. 바로 주사 위 를 다른 위 에 쌓 는 것 이다. 비 뚤 어 져 서 는 안 되 고 네모 난 기둥 으로 쌓 아야 한다.장기 적 인 관찰 을 통 해 아 톰 은 주사 위 를 안정 시 키 는 비밀 을 발견 했다. 어떤 숫자 가 붙 어 있 으 면 서로 배척 할 수 있다!우리 먼저 주사 위 를 규범화 합 시다. 1 의 맞은편 은 4, 2 의 맞은편 은 5, 3 의 맞은편 은 6 입 니 다.만약 에 m 조 가 서로 배척 하 는 현상 이 있다 고 가정 하면 각 조 의 두 숫자 면 이 붙 어 있 으 면 주사 위 는 안정 적 으로 쌓 이지 못 한다.atm 은 몇 가지 다른 주사위 방식 이 있 는 지 계산 하고 싶 습 니 다.두 가지 주사위 방식 이 같 고 이 두 가지 방식 에서 만 높이 에 대응 하 는 주사위 의 대응 숫자 방향 이 모두 같다.프로젝트 수가 너무 많 을 수 있 으 므 로 10 ^ 9 + 7 의 결 과 를 출력 하 십시오.
아 톰 의 주사위 수 를 얕 보지 마 세 요 ~
'입력 형식' 첫 번 째 줄 의 두 정수 n m n 은 주사위 의 수 를 다음 m 줄 로 표시 하고 줄 마다 두 개의 정수 a b 는 a 와 b 숫자 가 붙 어 있 지 않다 는 것 을 나타 낸다.
'출력 형식' 줄 의 한 수 는 답 모델 10 ^ 9 + 7 의 결 과 를 나타 낸다.
"샘플 입력" 2 1 1 2
"샘플 출력" 544
데이터 범위 30% 에 대한 데이터: n < = 5 대 60% 의 데이터: n < = 100 대 100% 의 데이터: 0 < n < = 10 ^ 9, m < = 36
코드 는 다음 과 같 습 니 다:
#include 
#define Mod 1000000007
int ans[7][7];
long long matrix[7][7];
int parner[7]={0,4,5,6,1,2,3};

void mul()
{
	int i,j,k;
	int c[7][7]={0};
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=6;j++)
		{
			for(k=1;k<=6;k++)
			{
				c[i][j]=(c[i][j] + matrix[i][j]*ans[j][k])%Mod;
			}
		}
	}
	
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=6;j++)
			matrix[i][j]=c[i][j];
	}
	for(i=1;i<=6;i++)
	{
		for(j=1;j<=6;j++)
			printf("%d ",matrix[i][j]);
		putchar('
'); } } int main() { int n,m; int i,j,k,l; int a,b; scanf("%d %d",&n,&m); for(i=0;i<=6;i++) { for(j=0;j<=6;j++) ans[i][j]=1; } for(i=0;i

좋은 웹페이지 즐겨찾기