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

TOPCODER-SRM455

Posted on 2009-12-19 14:07 rikisand 閱讀(568) 評論(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>
            欧美 日韩 国产一区二区在线视频 | 亚洲永久免费| 一区二区三区高清在线| 国产日韩精品久久| 91久久久久久久久久久久久| 欧美日韩一卡| 久久视频在线看| 欧美日韩精品在线观看| 久久久精品久久久久| 你懂的一区二区| 欧美在线综合视频| 欧美激情区在线播放| 久久精品日韩一区二区三区| 欧美激情综合五月色丁香小说| 欧美一区二区三区日韩| 欧美人与禽猛交乱配| 久久久青草婷婷精品综合日韩| 欧美精品免费在线观看| 玖玖玖免费嫩草在线影院一区| 国产精品福利av| 亚洲国产日韩美| 激情欧美一区二区| 亚洲一区在线免费观看| 亚洲精品免费在线观看| 久久精品国产v日韩v亚洲 | 免费成人激情视频| 欧美在线播放一区| 欧美日韩一区二区欧美激情| 免费在线观看日韩欧美| 国产日产精品一区二区三区四区的观看方式 | 亚洲天堂av高清| 91久久极品少妇xxxxⅹ软件| 性欧美xxxx大乳国产app| 中文在线一区| 欧美激情第9页| 欧美成人综合网站| 伊人成人开心激情综合网| 性一交一乱一区二区洋洋av| 亚洲欧美精品伊人久久| 欧美日韩一区二区在线| 亚洲欧洲久久| 亚洲美女视频网| 欧美成人a∨高清免费观看| 久久性色av| 黄色成人在线网站| 久久久999国产| 榴莲视频成人在线观看| 激情欧美一区二区| 久久综合色播五月| 蜜桃精品久久久久久久免费影院| 国产婷婷一区二区| 亚洲免费一级电影| 欧美一区二区三区视频免费| 国产日韩亚洲欧美| 欧美尤物一区| 久久精品一区二区三区四区| 亚洲国产精品久久久久秋霞不卡| 亚洲电影第三页| 久久艳片www.17c.com| 欧美不卡一卡二卡免费版| 亚洲激情网址| 欧美日韩第一区| 一区二区欧美日韩视频| 亚洲欧美日韩另类精品一区二区三区| 国产精品国产成人国产三级| 亚洲免费在线视频| 久久亚洲春色中文字幕久久久| 国产无遮挡一区二区三区毛片日本| 午夜精品福利在线观看| 美日韩精品视频| 亚洲人成在线观看一区二区| 欧美久久综合| 亚洲综合日韩在线| 久久综合影音| 日韩视频精品在线| 国产精品午夜国产小视频| 欧美在线影院| 91久久久久久| 欧美一区二区三区另类| 在线成人亚洲| 欧美日韩在线播放一区| 欧美一区精品| 亚洲国产成人porn| 亚洲欧美日韩人成在线播放| 国内精品久久久久影院 日本资源| 久久久久欧美精品| 亚洲精品久久久久| 欧美一区2区三区4区公司二百| 亚洲高清三级视频| 欧美午夜无遮挡| 久久精品91久久久久久再现| 亚洲激情在线视频| 欧美资源在线观看| 亚洲欧洲日夜超级视频| 国产精品福利网站| 久久人人爽人人爽爽久久| 亚洲精品久久嫩草网站秘色| 午夜精品在线看| 亚洲破处大片| 国产欧美日韩视频一区二区三区| 美女视频一区免费观看| 中国亚洲黄色| 欧美激情1区2区| 欧美一级一区| 日韩视频在线播放| 国产亚洲精品bt天堂精选| 欧美激情一区二区三区四区| 欧美一级午夜免费电影| 久久久99爱| 亚洲欧美成人一区二区三区| 在线精品国产成人综合| 国产精品久久久久毛片大屁完整版 | 欧美精品乱码久久久久久按摩| 亚洲在线网站| 亚洲激情av| 牛夜精品久久久久久久99黑人| 亚洲一区日本| 日韩一二三区视频| 亚洲东热激情| 狠狠色丁香久久综合频道| 欧美色综合天天久久综合精品| 久久米奇亚洲| 久久九九精品| 免费观看成人www动漫视频| 久久亚洲综合色| 亚洲私人影吧| 亚洲国产精品福利| 在线综合亚洲| 91久久在线观看| 狠狠88综合久久久久综合网| 国产精品成人午夜| 免费欧美高清视频| 久久久久综合网| 久久九九国产精品怡红院| 亚洲欧美精品一区| 亚洲午夜精品久久| 99精品视频免费观看视频| 亚洲精品一区二区三区av| 欧美激情精品久久久久久| 开心色5月久久精品| 欧美中日韩免费视频| 午夜精品视频一区| 亚洲欧美日韩精品久久奇米色影视 | 亚洲欧美韩国| 亚洲一区制服诱惑| 亚洲一区二区三区影院| 一本一本久久a久久精品牛牛影视| 亚洲国产欧美日韩另类综合| 亚洲国产三级在线| 91久久香蕉国产日韩欧美9色| 亚洲第一狼人社区| 亚洲第一综合天堂另类专| 欧美国产一区二区| 亚洲国产日韩欧美一区二区三区| 亚洲激情视频网| 99成人精品| 亚洲线精品一区二区三区八戒| 亚洲丝袜av一区| 久久精品中文字幕一区| 久久一区中文字幕| 欧美激情精品久久久久久黑人 | 久久久xxx| 亚洲私拍自拍| 欧美一区2区三区4区公司二百| 久久国产精品久久国产精品| 久久久爽爽爽美女图片| 欧美成人亚洲成人| 99精品欧美一区二区三区综合在线| 一本久久精品一区二区| 亚洲欧美国产视频| 久久久噜噜噜久久中文字幕色伊伊| 欧美1区免费| 国产精品高潮呻吟| 国产综合久久久久影院| 亚洲黄色有码视频| 亚洲午夜伦理| 久久免费精品视频| 亚洲欧洲午夜| 亚洲欧美久久久| 老司机成人网| 欧美私人网站| 在线日韩日本国产亚洲| 亚洲香蕉成视频在线观看| 久久精品日产第一区二区三区| 欧美高清一区二区| 亚洲一区二区三区成人在线视频精品| 欧美一区观看| 欧美日韩一卡| 在线电影国产精品| 亚洲欧美国产日韩天堂区| 欧美sm视频| 亚洲一区二区毛片| 欧美国产一区二区三区激情无套| 国产精品女主播| 久久人人97超碰精品888| 国产精品久久久久久久久久ktv| 亚洲高清久久| 久久久www成人免费毛片麻豆| 夜夜躁日日躁狠狠久久88av| 久久久久久香蕉网|