青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

TOPCODER-SRM455

Posted on 2009-12-19 14:07 rikisand 閱讀(577) 評論(0)  編輯 收藏 引用 所屬分類: TopcoderAlgorithm

杯具的比賽~第一題竟然把南和北寫反了- -!第二題沒判斷好復雜度,實際上暴力方法可以的,第三題dp 必然沒寫出來

so----跌成灰色了~~

250pt

Problem Statement

Petya likes spiders. He put a spider in each cell of a rectangular grid. He has studied spiders for many years, so he predicted the behaviour of all of the spiders. At the beginning of each second, every spider will move from its cell to one of the adjacent cells (or off the grid). For each cell, he wrote the direction of its movement to matrix which is represented by a vector <string>, A. The j-th character of i-th element of A will be either 'N', 'S', 'E' or 'W' and it will represent north, south, east and west directions of movement, respectively. If a spider moves outside the grid it falls to the floor. Return the number of free cells after 1 second.

Definition

Class:
SpidersOnTheGrid

Method:
find

Parameters:
vector <string>

Returns:
int

Method signature:
int find(vector <string> A)

(be sure your method is public)

Constraints

-
A will contain between 1 and 50 elements, inclusive.

-
Each element of A will contain between 1 and 50 characters, inclusive.

-
All elements of A will have the same number of characters.

-
Each character will be either 'N', 'E', 'S' or 'W'.

Examples

0)

{"EW","NN"}
Returns: 2

1)

{"EEEEEEEEEEEEEEEEEEEEEEEEEEEEEW"}
Returns: 1

2)

{"EW"}
Returns: 0

3)

{"ESW","ENW"}
Returns: 4

4)

{"E"}
Returns: 1

 

Code Snippet
class SpidersOnTheGrid
{
        public:
        int find(vector <string> A)
        {
            int dr[]={1,0,-1,0};
            int dc[]={0,1,0,-1};
                vector<string > B = A;
                map<char,int> mp;
                mp['S']=0;mp['E']=1;mp['N']=2;mp['W']=3;
                int r = A.size(); int c= A[0].size();
                REP(i,r)REP(j,c){
                    int dir = mp[A[i][j]];
                    if(i+dr[dir]<0||i+dr[dir]>=r||j+dc[dir]<0||j+dc[dir]>=c)continue;
                    B[i+dr[dir]][j+dc[dir]] = 'H';
                }
                int ans = 0;
                REP(i,r)REP(j,c){
                    if(B[i][j]!= 'H')ans++;
                }
                return ans;
        }

 

500pt

這題A的大小只有7個則最多有10^7 種組合來決定下一個元素,也就是說只要枚舉10^7就可以了

Problem Statement

Petya likes sequences. He has an infinite sequence A[] with the following properties:

  • A[0], A[1], ..., A[N-1] are given;
  • A[i]=(A[i-1]+A[i-2]+...+A[i-N])%10 for all i>=N;
Sequence B[] with length M is a substring of A[] if there is such index P that B[0]=A[P], B[1]=A[P+1], ..., B[M-1]=A[P+M-1]. Your task is to find the smallest possible such P. If there is no such index, return -1.
Definition

Class:
EasySequence

Method:
find

Parameters:
vector <int>, vector <int>

Returns:
int

Method signature:
int find(vector <int> A, vector <int> B)

(be sure your method is public)

Constraints

-
A will contain between 1 and 7 elements, inclusive.

-
B will contain between 1 and 50 elements, inclusive.

-
Each element of A will be between 0 and 9, inclusive.

-
Each element of B will be between 0 and 9, inclusive.

Examples

0)

{1,2,3}
{0,7,8,5}
Returns: 5
Starting with 1,2,3 we have:
1+2+3 =  6,  6 % 10 = 6
2+3+6 = 11, 11 % 10 = 1
3+6+1 = 10, 10 % 10 = 0
6+1+0 =  7,  7 % 10 = 7
1+0+7 =  8,  8 % 10 = 8
0+7+8 = 15, 15 % 10 = 5
7+8+5 = 20, 20 % 10 = 0

1,2,3,6,1,0,7,8,5,0
          0,7,8,5      answer = 5

1)

{1,2,8}
{7,4,2,3}
Returns: -1

2)

{1,2,3,4,5}
{4,5}
Returns: 3

3)

{1}
{1,1,1}
Returns: 0
#define REP(i, n) for (int i = 0; i < (n); ++i)  
int C[10000002];
class EasySequence
{
        public:
        int find(vector <int> A, vector <int> B)
        {
            int sum = 0; int n=A.size();
            REP(i,A.size()) sum+= A[i],C[i]=A[i];
            REP(i,10000000){
                C[i+n]=sum%10;
                sum+=(sum%10);
                sum = (sum +10-C[i])%10;
            }
            for(int i=0;i<10000000;i++){
                if(C[i] == B[0]){
                    int k=1;int j=i+1;
                    for(;k<B.size()&&j<10000000&&C[j]==B[k];k++,j++);
                    if(k==B.size())return i;
                }
            }
            return -1;
        }

1000pt

Problem Statement

Petya likes donuts. He tries to find them everywhere. For example if he is given a grid where each cell contains a '0' or '.' he will construct donuts from the cells.

To make the donuts:

  1. Petya first selects a rectangle of cells of width, w, and height, h, where both are at least 3.
  2. Then he removes a rectangular hole of width w-2 and height h-2 centered in the larger rectangle.
  3. For the remaining cells (a closed rectangular ring) to be a valid donut, all of the cells must contain '0' (because donuts are shaped like zeros). Cells in the hole can contain anything since they are not part of the donut.

Here is an example with three overlapping donuts.

..........
.00000000.
.0......0.
.0.000000.
.0.0...00.
.0.0...00.
.0.000000.
.0......0.
.00000000.
..........

The grid in this problem will be pseudo-randomly generated using the following method:
You are given four ints: H (the grid height), W (the grid width), seed and threshold. Let x0=seed and for all i>=0 let xi+1 = (xi * 25173 + 13849) modulo 65536. Process the cells of the matrix in row major order (i.e., first row left to right, second row left to right, etc.). Each time you process a cell, calculate the next xi (starting with x1 for the upper left corner). If it is greater than or equal to threshold, the current cell will contain a '.', otherwise it will contain a '0'.

Return the number of distinct donuts in the figure. Two donuts are considered distinct if they either have different width or height, or if the top left hand corner is in a different location (i.e., overlapping donuts are counted).

Definition

Class:
DonutsOnTheGrid

Method:
calc

Parameters:
int, int, int, int

Returns:
long long

Method signature:
long long calc(int H, int W, int seed, int threshold)

(be sure your method is public)

Notes

-
The random generation of the input is only for keeping the input size small. The author's solution does not depend on any properties of the generator, and would work fast enough for any input of allowed dimensions.

Constraints

-
H will be between 1 and 350, inclusive.

-
W will be between 1 and 350, inclusive.

-
seed will be between 0 and 65535, inclusive.

-
threshold will be between 0 and 65536, inclusive.

Examples

0)

5
5
222
55555
Returns: 4

Here is an example of the grid:

00000
00.0.
.0000
00.00
00000

1)

5
6
121
58000
Returns: 3

Here is the grid and three donuts in it:

00000.   XXX...   XXX...   ..XXX.
0.0000   X.X...   X.X...   ..X.X.
0.000.   X.X...   X.X...   ..XXX.
000.00   XXX...   X.X...   ......
000.00   ......   XXX...   ......

2)

4
5
6
50000
Returns: 1

The grid is:

0.0.0
00000
.00.0
0.000

3)

4
4
1
65536
Returns: 9

Here, the grid is completely filled by 0's. There are 9 possible placements of a donut:

XXX.  XXX.  .XXX  .XXX  ....  ....  XXXX  ....  XXXX
X.X.  X.X.  .X.X  .X.X  XXX.  .XXX  X..X  XXXX  X..X
XXX.  X.X.  .XXX  .X.X  X.X.  .X.X  XXXX  X..X  X..X
....  XXX.  ....  .XXX  XXX.  .XXX  ....  XXXX  XXXX
#define REP(i, n) for (int (i) = 0; i < (n); ++(i)) 
int mp[450][450]; 
int ver[400][450];
class DonutsOnTheGrid
{
        public:
        long long calc(int R, int C, int seed, int threshold)
        {
            int xi = seed ; 
            memset(mp,0,sizeof(mp)); 
            memset(ver,0,sizeof(ver));
            REP(i,R)REP(j,C){
                xi = (xi * 25173 + 13849) % 65536 ;
                mp[i][j] = (xi >= threshold ? 1:0) ;
            }  
            for(int i=R-1;i>=0;i--)
                for(int j=C-1;j>=0;j--){
                    ver[i][j] = ver[i+1][j] + mp[i][j];//記錄列中的累加和
                }
            int64 ans=0;
            for(int i=0;i<R;i++)
                for(int j = i+2;j<R;j++){//求兩行之間的矩形數目
                    int cnt=0;int prev=0;
                    for(int k=0; k<C;k++){//按列從左向右找
                        if(ver[i][k]==ver[i+1][k]&&ver[j][k]==ver[j+1][k]){//如果判斷出此位置不是0則置cnt=0
                            if(ver[i][k]==ver[j+1][k]){//col all 0
                                if(cnt>0){  
                                if(prev==k-1)ans+=(cnt-1);//與之前的豎列組成矩形~
                                else ans+=cnt; 
                                }
                                cnt++;prev=k;
                            } 
                        }
                        else
                            cnt=0;
                    }
                }
                return ans;
        }
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲高清视频在线观看| 99热这里只有精品8| 欧美在线看片a免费观看| 国产精品久久一级| 欧美一区二区三区日韩| 午夜精品久久久久久久久| 激情成人综合网| 欧美成人一区二区| 欧美激情国产精品| 亚洲一二三区精品| 欧美亚洲网站| 亚洲高清久久久| 亚洲靠逼com| 国产精品九色蝌蚪自拍| 久久久综合网站| 欧美高清视频www夜色资源网| 一区二区欧美亚洲| 亚洲影院免费| 亚洲国产裸拍裸体视频在线观看乱了中文 | 夜夜嗨av一区二区三区网站四季av| 亚洲精品国精品久久99热一| 国产精品久久久久天堂| 久久中文欧美| 欧美日本久久| 久久免费国产| 欧美日韩一区二区在线视频| 久久超碰97人人做人人爱| 老司机午夜免费精品视频| 一区二区三区免费观看| 久久久国产成人精品| 一区二区三区高清视频在线观看| 午夜欧美大尺度福利影院在线看| 在线免费观看日本欧美| 99伊人成综合| 亚洲精品美女| 久久99伊人| 亚洲欧美在线aaa| 免费一级欧美片在线观看| 欧美一区二区三区在线观看| 欧美国产视频在线| 久久一区精品| 国产免费亚洲高清| 亚洲最新中文字幕| 亚洲欧洲中文日韩久久av乱码| 欧美亚洲视频一区二区| 亚洲一区日韩| 欧美精选在线| 91久久精品美女| 亚洲国产精品免费| 久久国产主播精品| 欧美一区二区私人影院日本| 欧美三级视频| 亚洲精品社区| 亚洲精品视频在线| 麻豆亚洲精品| 能在线观看的日韩av| 国产综合第一页| 欧美一区二区三区免费大片| 午夜国产精品视频免费体验区| 欧美日韩在线观看视频| 亚洲福利小视频| 亚洲黑丝在线| 蜜桃精品久久久久久久免费影院| 蜜桃伊人久久| 亚洲第一精品夜夜躁人人爽 | 亚洲精品裸体| 99精品热视频| 欧美另类一区| 夜夜精品视频| 亚洲欧美一区二区激情| 国产精品国产自产拍高清av王其| 夜夜嗨av一区二区三区| 亚洲无限乱码一二三四麻| 欧美色精品在线视频| 一区二区日韩伦理片| 午夜国产不卡在线观看视频| 国产欧美日韩综合一区在线观看| 亚洲欧美日韩国产综合| 久久久久国产精品一区二区| 激情久久久久久久久久久久久久久久| 久久精品理论片| 欧美激情第三页| 99国产精品久久久久久久成人热| 欧美三级视频在线| 午夜精品久久久久久久99水蜜桃 | 亚洲国产精品一区二区第四页av| 亚洲激情网站| 欧美午夜不卡| 午夜一区二区三视频在线观看| 久久久夜精品| 日韩视频久久| 国产精自产拍久久久久久| 久久视频这里只有精品| 亚洲国产毛片完整版| 亚洲专区欧美专区| 玉米视频成人免费看| 欧美日本亚洲韩国国产| 亚洲综合三区| 亚洲国产精品一区在线观看不卡 | 禁断一区二区三区在线 | 亚洲视频www| 美日韩精品免费观看视频| 亚洲美女性视频| 国产日韩一区| 欧美激情网友自拍| 亚洲欧美日韩国产一区二区三区 | 亚洲人成在线观看一区二区| 欧美一级一区| 亚洲精品美女在线| 国产视频观看一区| 欧美激情亚洲国产| 久久精品一二三| 一本一本a久久| 欧美护士18xxxxhd| 久久婷婷影院| 欧美有码在线视频| 99天天综合性| 亚洲福利电影| 国产一区二三区| 国产精品国产三级国产普通话99| 美女诱惑一区| 久久成年人视频| 亚洲视频在线观看网站| 亚洲电影av在线| 美女精品一区| 久久裸体视频| 欧美在线观看日本一区| 在线综合亚洲| av成人激情| 日韩一区二区免费高清| 亚洲国产成人91精品| 国精品一区二区三区| 国产精品最新自拍| 国产精品sm| 国产精品海角社区在线观看| 欧美理论电影在线播放| 欧美a级一区二区| 免费在线成人av| 久久久爽爽爽美女图片| 欧美在线视频一区| 久久精品国产91精品亚洲| 午夜在线精品偷拍| 性欧美精品高清| 欧美一区二区在线免费播放| 亚洲一区国产一区| 亚洲欧美日韩一区二区| 亚洲综合视频网| 亚洲女女做受ⅹxx高潮| 亚洲午夜久久久久久久久电影院 | 欧美亚日韩国产aⅴ精品中极品| 欧美久久久久久久| 欧美日韩一区综合| 欧美午夜不卡影院在线观看完整版免费 | 欧美福利视频在线观看| 欧美激情亚洲激情| 最新成人av网站| 日韩视频免费观看| 亚洲一级黄色片| 欧美亚洲一区二区在线| 久久激情综合| 欧美激情免费观看| 欧美日韩综合久久| 国产欧美日韩综合精品二区| 韩国一区二区在线观看| 在线成人激情黄色| 99国产精品| 欧美一区二区网站| 欧美成人一区二区在线 | 午夜日韩在线| 久久伊人亚洲| 最新国产成人av网站网址麻豆| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲小说欧美另类婷婷| 久久国产婷婷国产香蕉| 欧美黄色精品| 国产伪娘ts一区| 亚洲精品系列| 久久精品99无色码中文字幕| 欧美激情2020午夜免费观看| 日韩一区二区免费看| 久久国产福利国产秒拍| 欧美日韩a区| 在线播放豆国产99亚洲| 亚洲一级免费视频| 蜜桃av一区二区三区| 在线视频你懂得一区| 久久视频国产精品免费视频在线| 欧美日韩调教| 亚洲第一在线| 校园春色综合网| 亚洲啪啪91| 久久国产直播| 国产精品性做久久久久久| 亚洲黄色高清| 久久人人看视频| 亚洲欧美激情视频| 欧美日韩免费精品| 亚洲国产欧美一区二区三区久久 | 午夜精品美女自拍福到在线| 欧美国产一区在线|