linux中fork函數詳解(轉)

來源:互聯網
上載者:User

標籤:c   style   class   blog   code   a   

http://cdn.ac.nbutoj.com/Problem/view.xhtml?id=1541

When rain, nocLyt discovered a magical phenomenon that the rainwater always flow to the low-lying place.

我以後都在題解裡放一小段題目,讓人更容易搜到,有沒有很有想法!(咦這樣好像放全部的題目更容易被搜到啊)(不過那樣好像比較亂啊)

[1541] Rainwater時間限制: 3000 ms 記憶體限制: 262144 K 問題描述 When rain, nocLyt discovered a magical phenomenon that the rainwater always flow to the low-lying place. Now, there is a N * N grid matrix (four Unicom) and above the first row was constantly raining. I have to tell you some rules: 1. Each grid is solid (represented as black) initially, the rain cannot flow into the solid grid. 2. You can "Open" a grid, if you "Open" that grid, that grid will becomes hollow (represented as white). 3. Rainwater can flow from top to bottom and from left to right (also right to left), but the precondition is that they are both hollow grid. (grid fill with rainwater represented as blue) You can get more information from below picture. Figure: from left to right are executed 50 times, 100 times, 150 times, 204 times "Open" operation.  We have three operation: 1. O i j: "Open" the grid (i, j). 2. F i j: You should tell me whether the grid(i, j) filled with rainwater. If yes, you should output 1, otherwise output 0. 4. C: You should tell me whether the rainwater has flow to the last row. If yes, you should output 1, otherwise output 0. Note: The grid matrix from top to bottom number 1 to N, from left to right number 1 to N. 輸入 There are multiple test cases, each test case contains two positive integers N (1 <= N <= 5000) and M (1 <= M <= 1000000).Following M lines, each line contain one of the three operation:1. O i j (1 <= i, j <= N)2. F i j (1 <= i, j <= N)3. C輸出 Output the answer. 範例輸入 3 7O 1 1F 2 1O 2 1F 2 1CO 3 1C範例輸出 0101提示 無來源 nocLyt @SDAU
題目

我把題目隱藏成一行,這樣就不亂,而且好像也能被搜到。不過這樣格式有點逗,要看題目還是點連結去看好了。

 

好下面來說這題Rainwater:

看圖比較容易懂意思,就是你的三種操作是開某個孔,查某個孔有沒有進水,查最下面一行有沒有水。水會從最上面一行出現,然後隨便亂流,看最後一個圖可以知道它會往上流。

看完題目,這不就是超水的深搜嗎!

把地圖從1開始,第0行先灌滿水。每次開一塊的時候,如果四個方向沒水,那這一塊肯定沒水。如果有水,那就把這格填上水,並且深搜一波,把能到的地方都水了。這樣每格最多水一次,複雜度超低。然後它詢問某個孔的時候就直接答,詢問最下面這行的話也直接答,搜的時候記得記最下面這行有沒有水,不要在查的時候才查一整行,這個可是要問100W個問題的,地圖只有5000*5000,最下面那一行有5000個格子啊,你敢每次搜一下嗎!

總之就是搜就過啦,深搜王,我咧哇納魯!

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define ll long long 6 const int MAXN=5555; 7 const int gx[4]={0,0,-1,1}; 8 const int gy[4]={-1,1,0,0}; 9 int a[MAXN][MAXN];10 int n,m,flagc;11 12 void dfs(int x,int y)13 {14     int i;15     a[x][y]=2;16     if(x==n) flagc=1;17     for(i=0;i<4;i++)18         if(a[x+gx[i]][y+gy[i]]==1) dfs(x+gx[i],y+gy[i]);19 }20 21 void open(int x,int y)22 {23     int i,j;24     if(a[x][y]!=0) return;25     a[x][y]=1;26     for(i=0;i<4;i++)27         if(a[x+gx[i]][y+gy[i]]==2){a[x][y]=2;break;}28     if(a[x][y]==1) return;29     dfs(x,y);30 }31 32 int main()33 {34     char c;35     int x,y,i;36     while(scanf("%d%d",&n,&m)!=EOF)37     {38         memset(a,0,sizeof(a));39         for(i=1;i<=n;i++)40             a[0][i]=2;41         flagc=0;42         for(i=0;i<m;i++)43         {44             //cout<<i<<"!"<<endl;45             do{scanf("%c",&c);}while(c==‘\n‘ || c==‘ ‘);46             if(c!=‘C‘)47             {48                 scanf("%d%d",&x,&y);49                 if(c==‘O‘) open(x,y);50                 else if (c==‘F‘)51                 {52                     printf("%d\n",a[x][y]==2);53                 }54             }55             else56             {57                 printf("%d\n",flagc);58             }59         }60     }61     return 0;62 }
View Code

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.