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

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>
            亚洲精品一区二| 久久久久女教师免费一区| 中文精品99久久国产香蕉| 欧美激情麻豆| 欧美a一区二区| 一区二区精品国产| 亚洲深夜福利视频| 国内一区二区在线视频观看| 欧美成人情趣视频| 欧美日韩国产限制| 久久久久99| 欧美性大战久久久久久久| 亚洲免费影视| 欧美国产精品v| 欧美一区二区三区四区在线观看| 久久精品综合一区| 亚洲欧美区自拍先锋| 久久久久在线观看| 亚洲女人天堂成人av在线| 久久久久久久久久久久久女国产乱| 99视频一区| 六月婷婷久久| 久久精品国产一区二区三区| 欧美日韩视频在线第一区| 欧美不卡视频| 国产字幕视频一区二区| 亚洲欧美日韩精品久久久| 亚洲一区二区三区中文字幕| 亚洲欧美不卡| 欧美精品一区二区三区视频 | 欧美日韩一区二区三区视频 | 一区二区三区四区五区在线| 91久久中文| 欧美精品日韩一本| 亚洲激情视频在线| 黄色日韩网站视频| 久久精品一区二区三区中文字幕| 久久国产视频网| 黄色小说综合网站| 欧美国产日韩精品| 一片黄亚洲嫩模| 久久精品久久99精品久久| 激情综合色丁香一区二区| 快播亚洲色图| 亚洲视频1区| 美女被久久久| 亚洲精品日韩综合观看成人91| 欧美日本高清一区| 欧美一级播放| 99精品视频免费观看| 欧美在线视频在线播放完整版免费观看| 国产视频一区在线观看一区免费| 久久精品国产久精国产思思| 亚洲电影免费观看高清完整版在线观看 | 理论片一区二区在线| 99这里只有精品| 国产在线日韩| 国产精品久久国产三级国电话系列| 欧美亚洲一区二区三区| 亚洲免费观看| 两个人的视频www国产精品| 亚洲欧美日韩国产综合| 亚洲国产精品成人精品| 中文在线一区| 欧美精品自拍偷拍动漫精品| 亚洲欧美在线磁力| 亚洲少妇中出一区| 亚洲另类一区二区| 亚洲日韩欧美视频一区| 免费成人你懂的| 美女啪啪无遮挡免费久久网站| 欧美中文字幕在线| 香蕉成人伊视频在线观看| 亚洲婷婷在线| 午夜精品久久久久久| 性做久久久久久免费观看欧美| 亚洲一级一区| 欧美专区在线观看一区| 久久婷婷国产综合精品青草| 久久精品九九| 欧美国产日韩精品免费观看| 亚洲国产精品视频一区| 亚洲福利视频二区| 亚洲久久一区| 欧美一区二区啪啪| 久久综合影音| 国产精品电影网站| 狠狠久久亚洲欧美专区| 亚洲无线观看| 巨胸喷奶水www久久久免费动漫| 亚洲激情图片小说视频| 亚洲欧美中日韩| 欧美ed2k| 一区精品在线播放| 亚洲综合大片69999| 欧美成人中文| 亚洲欧美日韩国产成人精品影院| 欧美中日韩免费视频| 夜夜狂射影院欧美极品| 亚洲一区中文字幕在线观看| 久久综合给合久久狠狠色| 欧美黄色影院| 亚洲免费在线观看| 欧美高清不卡| 午夜国产精品视频| 久久综合久久综合久久| 国产精品成人v| 99在线精品视频在线观看| 久久久久国产精品麻豆ai换脸| 亚洲国产黄色片| 久久九九精品| **性色生活片久久毛片| 久久久精品网| 欧美亚洲综合网| 国产欧美精品日韩精品| 午夜精品久久久久久久男人的天堂| 欧美丰满少妇xxxbbb| 久久久国产成人精品| 国内精品模特av私拍在线观看| 欧美亚洲一区在线| 亚洲一区一卡| 国产日产精品一区二区三区四区的观看方式 | 一本不卡影院| 欧美精品一区二区在线播放| 亚洲精品久久久久久久久久久| 欧美激情第8页| 欧美日韩亚洲一区二| 亚洲五月六月| 午夜欧美理论片| 亚洲国产精品传媒在线观看 | 久久免费一区| 亚洲缚视频在线观看| 亚洲蜜桃精久久久久久久| 国产精品免费小视频| 久久精品在线观看| 美女久久网站| 久久国产精品久久w女人spa| 午夜一区在线| 久久久噜噜噜久噜久久| 久久美女性网| 午夜精品久久久久久久| 美女啪啪无遮挡免费久久网站| 国产日韩欧美中文在线播放| 99国产精品久久| 欧美电影打屁股sp| 国产精品久久久久久影院8一贰佰| 欧美国产激情| 影音先锋久久资源网| 亚洲小说欧美另类婷婷| 日韩午夜在线电影| 久久久久国产一区二区三区四区| 亚洲日本欧美天堂| 久久亚洲综合网| 久久久久久久综合狠狠综合| 欧美日韩人人澡狠狠躁视频| 亚洲成人自拍视频| 亚洲黄色影院| 欧美肥婆在线| 日韩视频免费在线| 亚洲欧美国产毛片在线| 欧美三区视频| 亚洲欧美日韩综合| 欧美一区二区三区的| 国产欧美日韩精品丝袜高跟鞋| 亚洲一区二区三区中文字幕在线| 亚洲欧美日韩另类| 韩国一区电影| 久久一二三区| 亚洲人被黑人高潮完整版| 亚洲综合久久久久| 国产一区二区三区久久悠悠色av| 久久久av毛片精品| 亚洲精品国产精品国产自| 亚洲亚洲精品三区日韩精品在线视频 | 欧美久久成人| 久久久久久久一区| 亚洲少妇在线| 欧美r片在线| 亚洲欧美视频一区| 91久久久久久久久| 国产午夜精品全部视频在线播放| 玖玖玖国产精品| 亚洲综合色在线| 亚洲高清一二三区| 久久精品一区二区| 欧美精彩视频一区二区三区| 亚洲尤物精选| 亚洲另类在线一区| 亚洲第一福利在线观看| 久久国产乱子精品免费女| 在线视频精品一区| 日韩亚洲欧美一区二区三区| 亚洲第一在线视频| 国产亚洲制服色| 国产女精品视频网站免费| 欧美日韩在线播放三区| 欧美精品久久久久久久久久| 久久亚洲精品网站| 老司机成人在线视频| 老司机免费视频一区二区三区|