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

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>
            欧美在线二区| 欧美伊人久久| 亚洲午夜视频在线| 久久综合伊人77777蜜臀| 亚洲精品国产精品国产自| 99re6热只有精品免费观看| 午夜久久久久久| 亚洲福利视频一区| 午夜在线一区| 国产精品久久久久久久久久免费看| 狠狠色狠狠色综合人人| 午夜精品三级视频福利| 午夜精品av| 国产精品免费电影| 久久精品国产999大香线蕉| 一区二区久久久久久| 欧美成人免费在线视频| 亚洲第一福利视频| 裸体一区二区| 欧美久久久久久蜜桃| 91久久精品一区| 亚洲国产一区二区a毛片| 蜜臀91精品一区二区三区| 黄色影院成人| 美女视频网站黄色亚洲| 久久久久久欧美| 亚洲第一成人在线| 亚洲一区欧美一区| 国产亚洲亚洲| 久久婷婷蜜乳一本欲蜜臀| 欧美中文字幕在线视频| av成人免费在线| 一本久久a久久精品亚洲| 精品1区2区3区4区| 亚洲视频狠狠| 国产亚洲成av人在线观看导航| 久久久久久久精| 久久免费视频一区| 亚洲九九爱视频| 亚洲图片欧美午夜| 国产一区二区三区久久 | 亚洲欧洲综合| 午夜精品久久久久久久蜜桃app | 午夜精品999| 欧美黑人国产人伦爽爽爽| 宅男精品视频| 亚洲欧美中文日韩在线| 一本色道久久综合狠狠躁篇怎么玩| 久久狠狠久久综合桃花| 91久久在线播放| 久久精品综合网| 日韩一级黄色av| 男人天堂欧美日韩| 亚洲一本视频| 欧美日韩高清在线播放| 欧美在线电影| 国产精品青草久久| 欧美激情1区2区3区| 欧美三级视频在线观看| 久久精品久久99精品久久| 国产精品第一区| 欧美成人免费在线视频| 国产精品爱久久久久久久| 开元免费观看欧美电视剧网站| 国产精品午夜电影| 亚洲欧美日韩区| 欧美专区福利在线| 欧美日韩精品免费| 99这里只有精品| 亚洲电影免费观看高清完整版| 久久国产色av| 欧美成人精品| 国内精品久久久久影院色| 一本色道久久99精品综合| 亚洲视频免费观看| 欧美电影专区| 日韩午夜免费视频| 亚洲欧洲精品成人久久奇米网| 蜜桃av一区二区| 一本色道久久综合亚洲精品不卡| 亚洲午夜性刺激影院| 国产精品午夜在线观看| 久久精品麻豆| 亚洲第一精品电影| 亚洲一区欧美| 欧美日韩国产123区| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲一区二区高清视频| 久久国产欧美精品| 亚洲欧洲精品一区二区| 欧美私人啪啪vps| 久久国产欧美日韩精品| 亚洲激情av在线| 最新亚洲一区| 国产精品久久一卡二卡| 久久久久国色av免费看影院| 日韩视频二区| 久久久国产午夜精品| 亚洲精品久久久一区二区三区| 久久一区国产| 亚洲天堂激情| 欧美激情精品久久久久久大尺度 | 99www免费人成精品| 国产一区二区毛片| 欧美久久九九| 久久先锋资源| 亚洲欧美国产va在线影院| 亚洲欧洲av一区二区| 在线观看欧美精品| 欧美a级一区| 午夜欧美视频| 日韩亚洲欧美中文三级| 免费影视亚洲| 久久国产福利国产秒拍| 日韩午夜在线电影| 在线观看国产精品淫| 国产精品一区二区久久久| 欧美一区二区高清| 免费在线观看一区二区| 亚洲综合国产| 亚洲免费成人av| 亚洲第一在线| 狠狠狠色丁香婷婷综合激情| 国产精品人人爽人人做我的可爱| 欧美精品一区二区三区很污很色的 | 亚洲欧美日韩视频二区| 国产日韩精品视频一区| 久久久午夜视频| 欧美伊人久久久久久午夜久久久久 | 另类激情亚洲| 亚洲精品欧美| 欧美一区二区视频免费观看| 一本色道久久综合亚洲91| 91久久精品国产91久久性色tv| 国产一区二区视频在线观看| 国产精品一区二区久久| 国产精品亚洲综合久久| 国产精品chinese| 欧美午夜久久| 国产精品卡一卡二卡三| 欧美日韩综合| 国产精品日韩精品| 国产精品视频xxxx| 国产欧美在线| 狠狠色丁香久久婷婷综合丁香| 国产自产女人91一区在线观看| 国产婷婷精品| 一区久久精品| 亚洲精品色图| 亚洲天堂久久| 欧美在线看片| 欧美成人一区二区三区在线观看| 女主播福利一区| 亚洲欧洲另类| 亚洲午夜av在线| 欧美在线一区二区三区| 开心色5月久久精品| 欧美国产视频一区二区| 欧美日韩亚洲国产一区| 久久一区二区三区av| 欧美成人一区二区三区在线观看| 欧美多人爱爱视频网站| 欧美日韩你懂的| 国产麻豆精品theporn| 国外成人在线视频| 亚洲精品欧美激情| 亚洲一区二区三区四区五区午夜 | 亚洲精品美女久久7777777| 亚洲视频网在线直播| 久久丁香综合五月国产三级网站| 麻豆久久精品| 日韩午夜在线| 久久九九热re6这里有精品| 欧美黄色小视频| 国产女主播在线一区二区| 亚洲国产精品va在线看黑人动漫| 国产一区二区精品丝袜| 亚洲欧洲在线免费| 欧美在线综合视频| 亚洲欧洲午夜| 久久大香伊蕉在人线观看热2| 欧美麻豆久久久久久中文| 国产视频一区三区| 在线亚洲一区二区| 免费成人毛片| 香蕉久久夜色精品| 欧美女人交a| 亚洲国产mv| 久久黄色影院| 一本久久综合| 欧美高清不卡| 伊人春色精品| 午夜精品久久久久久| 亚洲精品久久久久久久久久久久久 | 国产精品黄页免费高清在线观看| 亚洲第一黄网| 久久精品国产综合精品| 一区二区三区视频在线看| 欧美69视频| 亚洲国产91|