ÀÛ¼ºÀÏ : 15-08-02 11:19
¹®Á¦ Áú¹®
 ±Û¾´ÀÌ : ¹éµµ¿ø(do1006)
Á¶È¸ : 7,316  
   http://usaco.org/index.php?page=feb15results [4777]

USACO 2015 February Contest, Silver

Cow Hopscotch ¹®Á¦ÀÔ´Ï´Ù.

Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented a variant of the game for themselves to play. Being played by clumsy animals weighing nearly a ton, Cow Hopscotch almost always ends in disaster, but this has surprisingly not deterred the cows from attempting to play nearly every afternoon.

The game is played on an R by C grid (2 <= R <= 100, 2 <= C <= 100), where each square is labeled with an integer in the range 1..K (1 <= K <= R*C). Cows start in the top-left square and move to the bottom-right square by a sequence of jumps, where a jump is valid if and only if

1) You are jumping to a square labeled with a different integer than your current square,

2) The square that you are jumping to is at least one row below the current square that you are on, and

3) The square that you are jumping to is at least one column to the right of the current square that you are on.

Please help the cows compute the number of different possible sequences of valid jumps that will take them from the top-left square to the bottom-right square.

INPUT FORMAT: (file hopscotch.in)

The first line contains the integers R, C, and K. The next R lines will each contain C integers, each in the range 1..K.

OUTPUT FORMAT: (file hopscotch.out)

Output the number of different ways one can jump from the top-left square to the bottom-right square, mod 1000000007.

SAMPLE INPUT:

4 4 4
1 1 1 1
1 3 2 1
1 2 4 1
1 1 1 1

SAMPLE OUTPUT:

5

ÇÁ·Î±×·¥À» ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇߴµ¥

#include <stdio.h>
#define MOD 1000000007
int r,c,k;
long long int a[101][101];
long long int d[101][101];
int mod(int x){
    return (x+MOD)%MOD;
}
int main(){
    scanf("%d%d%d",&r,&c,&k);
    int i,j,l,m;
    for(i=0;i<r;i++)
        for(j=0;j<c;j++)
            fscanf(inf,"%lld",&a[i][j]);
    d[0][0] = 1;
    for(i=0;i<r;i++){
        for(j=0;j<c;j++){
            for(l=i+1;l<r;l++){
                for(m=j+1;m<c;m++){
                    if(a[i][j]!=a[l][m]) d[l][m] = mod(d[i][j]+d[l][m]);
                }
            }
        }
    }
    printf("%lld",d[r-1][c-1]);
    return 0;
}

4°³ test case¸¸ Á¤´äÀÌ Ãâ·ÂµÇ°í, ´Ù¸¥ test caseµéÀº Á¤´äÀÌ Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù.
Ç®ÀÌ¿¡¼­µµ À§¿Í À¯»çÇÏ°Ô ÄÚµùÀÌ µÇ¾î Àִµ¥, ¹«¾ùÀÌ ¹®Á¦ÀÎÁö Àß ¸ð¸£°Ú½À´Ï´Ù.

Ç®ÀÌ

The grid is big enough that it is not possible for us to merely try all possible paths.

We simply care about how many ways there are to get to a given square though. Let f(x,y)  be the number of ways there are to get to row x  and column y  . Note that f(x,y)  is simply the sum of all f(i,j)  where i<x  , j<y  , and the numbers in those squares don't match. This gives us an O(R 2 C 2 )  algorithm, which is fast enough for our purposes.


°¨»çÇÕ´Ï´Ù.



ÄĽºÄð 15-08-12 18:43
 
ÀÌ°÷¿¡¼­ ´äº¯µå¸± ³»¿ëÀº ¾Æ´Ñ°Å °°Áö¸¸ °£´ÜÇÏ°Ô »ìÆ캸¸é int mod(int x) ÀÌ ÇÔ¼ö¿¡ ¹®Á¦°¡ Àִ°ÍÀ¸·Î º¸ÀÔ´Ï´Ù.

±¸ÇØ¾ß ÇÏ´Â ´ë»óÀº ¸ðµÎ long long int ÇüÀε¥ ÀÌ ÇÔ¼ö¿¡¼­´Â int·Î ¹Þ¾Æ¼­ int·Î return Çϴ±º¿ä.
°è»êÇÏ´Â °úÁ¤¿¡¼­ Á¤¼öÀÇ ¹üÀ§¸¦ ³Ñ¾î°¥ ¼ö Àֱ⠶§¹®¿¡ Å« µ¥ÀÌÅÍ¿¡¼­´Â Á¤È®ÇÑ °ªÀÌ ³ª¿ÀÁö ¾ÊÀ» ¼ö ÀÖÀ»°Å °°½À´Ï´Ù.
 
 

Total 662
¹øÈ£ Á¦   ¸ñ ±Û¾´ÀÌ ³¯Â¥ Á¶È¸
382 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ÇÔ¼ö 1 Çü¼ºÆò°¡ 5¹ø (1) °øÅÂÇö 11-30 4058
381 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 2 Çü¼ºÆò°¡ 10 (2) °øÅÂÇö 11-29 3917
380 Àú±â c¾ð¾î°­ÀÇ (1) ±èÀÎÇõ 11-26 3496
379 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 2 Çü¼ºÆò°¡ 6 (1) °øÅÂÇö 11-21 3949
378 µ¿¿µ»óÀÌ ±úÁö°í Á¤»ó ¼Óµµ·Î Àç»ýÀÌ ¾ÈµË´Ï´Ù. (1) ¿À¼¼¹Ì 11-21 3408
377 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 2 ÀÚ°¡Áø´Ü 6 (1) °øÅÂÇö 11-19 5135
376 ÁÖ±â ÁÖµµ C¾ð¾î ÄíÆù °áÁ¦ (1) ÇѼºÁø 11-15 3873
375 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 1 Çü¼ºÆò°¡ 10¹ø (1) °øÅÂÇö 11-12 3759
374 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 1 Çü¼ºÆò°¡ 9¹ø (3) °øÅÂÇö 11-12 3687
373 2009³â ½Ãµµ¿¹¼± ÃʵîºÎ 9¹ø¹®Á¦ Áú¹®µå¸³´Ï´Ù. (2) Á¤ÀºÁÖ 11-02 3829
372 ÇÔ¼ö1-ÀÚ°¡Áø´Ü 1 (3) °­¼­ÁØ 10-25 3427
371 ¼ö°­·á ÀÔ±Ý Çß½À´Ï´Ù. (1) Á¤ÀºÁÖ 10-21 3327
370 2014³âµµ Áö¿ª¿¹¼± ±âÃâ°­ÀÇ (1) ±ÇÇõÂù 10-12 3436
369 Á¤º¸¿Ã¸²ÇǾƵå Àü±¹,º»¼±,¿¹¼± ¹®Á¦Ç®ÀÌ Àΰ­¿¡ ´ëÇؼ­ Áú¹®µå¡¦ (1) ÀÌÁØÈñ 09-14 5401
368 ÀÚ±âÁÖµµ c¾ð¾î ÇÁ·Î±×·¡¹Ö ¹è¿­ 1 ÀÚ°¡Áø´Ü 8¹ø (1) °øÅÂÇö 09-10 4088
367 ÀÚ±âÁÖµµ c ÇÁ·Î±×·¡¹Ö eºÏ ±¸ÀÔ (1) ÀÌÁ¾»ó 09-02 3703
366 ÀÚ±âÁÖµµ c¾ð¾î Ãâ·Â Çü¼ºÆò°¡ 4¹ø¹®Á¦¿¡¼­ ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÏ¡¦ (1) ±è¸íÁø 08-20 4284
365 2008³â º»¼±±âÃâ ¹®Á¦ °­ÀǸ¦ º¸°í½ÍÀºµ¥.. (1) ¹Ú±â¸² 08-14 3683
364 ¹®Á¦ Áú¹® (1) ¹éµµ¿ø 08-02 7317
363 µ¿¿µ»ó ½ÇÇà¿À·ù (1) Áø¿ì¼· 07-25 3832
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    

ȸ»ç¼Ò°³ | °³ÀÎÁ¤º¸Ã³¸®¹æħ | ÀÌ¿ë¾à°ü | ã¾Æ¿À½Ã´Â ±æ | À̸ÞÀÏÁÖ¼Ò ¹«´Ü¼öÁý°ÅºÎ | »ç¾÷ÀÚÁ¤º¸È®ÀÎ
°æ±âµµ ¾È¾ç½Ã µ¿¾È±¸ È£°èµ¿ 1065-10 Çù¼º°ñµåÇÁ¶óÀÚ 601È£ ÇÑÄÄ¿¡µàÄÉÀ̼Ç(ÁÖ) TEL : 031-388-8840 FAX : 031-388-0996
´ëÇ¥ÀÚ : ±èµ¿±Ô »ç¾÷ÀÚ¹øÈ£ : 130-86-02870 Åë½ÅÆǸž÷½Å°í¹øÈ£ : Á¦ 2010-°æ±â¾È¾ç-888È£
COPYTIGHT(C) ÇÑÄÄ¿¡µàÄÉÀ̼Ç(ÁÖ), ALL RIGHT RESERVED.
´ãÀº°­Á : 0