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

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>
            久久亚洲影音av资源网| 亚洲伊人久久综合| 久久久久久欧美| 你懂的一区二区| 久久精品一级爱片| 久久九九热re6这里有精品| 亚洲天堂av在线免费| 99成人免费视频| 亚洲精品久久7777| 亚洲激情第一区| 一本到高清视频免费精品| 亚洲日本无吗高清不卡| 亚洲三级影片| 国产精品99久久久久久宅男| 日韩午夜免费| 9久re热视频在线精品| 久久精品国产视频| 欧美成人免费在线| 欧美日韩国产在线观看| 欧美视频在线一区二区三区| 国产精品扒开腿做爽爽爽视频| 欧美日本不卡| 欧美高清视频一区二区| 国产精品久久久久一区| 国产精品一区二区久久久久| 国产一区香蕉久久| 亚洲永久在线观看| 久久中文字幕导航| 欧美日韩另类在线| 国产亚洲欧美另类中文| 欧美一区二区视频免费观看| 久久精品视频导航| 亚洲精品一二| 久久女同精品一区二区| 国产精品多人| 亚洲精品美女91| 久久久久久电影| 精品成人久久| 欧美精品网站| 激情综合久久| 亚洲欧美日本在线| 亚洲国产精品一区二区第四页av| 一本色道久久加勒比88综合| 免费国产一区二区| 精品成人在线| 久久精品视频在线播放| 99国产精品私拍| 欧美激情一二区| 亚洲第一视频| 免费在线观看精品| 久久国产手机看片| 国产视频精品xxxx| 欧美一区二区精美| 亚洲深夜福利视频| 国产精品久久久久久妇女6080| 99精品久久免费看蜜臀剧情介绍| 欧美成人影音| 久久婷婷综合激情| 在线播放豆国产99亚洲| 久久久久久久网站| 久久久99国产精品免费| 国内成人自拍视频| 久久视频精品在线| 久久久久国产精品www| 尤妮丝一区二区裸体视频| 久久综合一区二区三区| 久久久久网址| 91久久精品国产91久久| 欧美激情久久久久| 欧美激情片在线观看| 日韩午夜三级在线| 亚洲最快最全在线视频| 国产精品午夜av在线| 欧美一区二区在线播放| 欧美一区二区三区免费看| 狠狠色狠狠色综合日日小说| 欧美xxx在线观看| 狼人天天伊人久久| 日韩视频在线播放| 一本色道久久综合狠狠躁篇的优点| 欧美三级在线视频| 欧美有码在线观看视频| 久久国产黑丝| 99re热这里只有精品免费视频| 99在线精品观看| 国产有码一区二区| 91久久久久久国产精品| 国产精品高潮呻吟| 老色鬼精品视频在线观看播放| 免费在线观看成人av| 亚洲伊人网站| 久久久久国产一区二区| 日韩亚洲精品电影| 午夜精彩视频在线观看不卡| 1024亚洲| 亚洲一区二区精品| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲破处大片| 六月天综合网| 性视频1819p久久| 亚洲第一精品福利| 亚洲精品在线看| 欧美高清影院| 欧美一区二区成人| 亚洲精品在线三区| 欧美成人免费大片| 久久精品视频在线看| 在线亚洲+欧美+日本专区| 国语自产精品视频在线看一大j8| 欧美国产精品v| 久久亚洲一区| 亚洲资源av| 亚洲乱码一区二区| 欧美激情免费在线| 久久久久久999| 久久久九九九九| 欧美一区二区在线免费观看| 亚洲视频大全| 亚洲欧美日韩国产另类专区| 一区二区日韩| 亚洲午夜精品一区二区三区他趣| 韩日欧美一区二区| 国内一区二区在线视频观看| 国产视频在线一区二区| 国产在线观看91精品一区| 国产欧美一区二区三区视频 | 欧美三日本三级少妇三2023| 欧美电影在线观看完整版| 久久久久久网址| 久久国内精品视频| 免费中文日韩| 国产精品久久久久久超碰| 国产欧美日韩高清| 精品动漫3d一区二区三区免费版| 在线成人性视频| 日韩亚洲视频在线| 欧美激情综合色综合啪啪| 欧美久久久久久久久久| 国产精品你懂的| 国产一区二区三区在线播放免费观看| 黄色成人免费观看| 午夜精品久久久久久久久久久| 久久香蕉国产线看观看av| 亚洲精品网站在线播放gif| 欧美中文字幕在线| 欧美丝袜第一区| 亚洲精品综合精品自拍| 久久免费精品日本久久中文字幕| 亚洲人体偷拍| 久久久噜噜噜久久人人看| 欧美午夜无遮挡| 亚洲精品在线免费观看视频| 久久一日本道色综合久久| 亚洲女人天堂成人av在线| 欧美精品入口| 日韩天天综合| aa级大片欧美三级| 欧美色精品天天在线观看视频| 在线免费不卡视频| 老牛影视一区二区三区| 亚洲欧美综合另类中字| 国产精品视频免费观看| 久久riav二区三区| 亚洲一区二区三区在线看| 国产麻豆精品久久一二三| 亚洲一二三区精品| 亚洲欧美成人一区二区在线电影 | 久久综合伊人77777| 久久成人18免费网站| 国产亚洲综合精品| 久久人人爽人人| 欧美色视频在线| 久久久久久自在自线| 欧美jizz19hd性欧美| 亚洲一区二区视频在线| 久久成人久久爱| 日韩视频久久| 久久久久国产精品人| 亚洲无限av看| 欧美成人免费全部| 国产精品视频成人| 久久久久亚洲综合| 欧美精品首页| 欧美成年人视频网站欧美| 国产日韩欧美综合在线| 亚洲人成网站在线播| 在线成人激情| 久久久久久电影| 久久成人在线| 国产精品乱码妇女bbbb| 亚洲欧洲综合| 亚洲激情婷婷| 蜜臀99久久精品久久久久久软件 | 久久久久88色偷偷免费| 午夜精品久久久久久| 国产精品美女久久| 亚洲永久精品国产| 久久国产精品久久久| 国产日韩在线看片| 久久久久久电影|