XidianOJ 1001 又是蘋果

來源:互聯網
上載者:User

標籤:log   遊戲   整數   格式   nbsp   char   協助   數組   content   

最近,亮亮和小W都對蘋果高度興趣!在研究了“最大蘋果矩陣”和“給蘋果樹施肥”的問題後,他們又遇到了一個新的問題:

有一塊長n米、寬m米的地,現在小W把地劃分成邊長1米的小正方形塊,共n*m個塊。每個塊中可能種有一棵蘋果樹,或放有一個iPhone,也可以什麼也沒有。然而,亮亮擁有一種超能力,可以將2個寬1米、長度相同的矩形塊在空間中直接交換。

亮亮經常對著農場施展超能力,為了不把自己搞暈,他每次總是選擇兩整行(長度均為m米)或兩整列(長度均為n米)進行交換。小W對此十分惱火——當他想拿iPhone打遊戲時,卻莫名其妙地撞在了蘋果樹上。小W要求你寫一個程式,協助他確定某一正方形塊中放了什麼東西。

輸入

輸入包含多組資料,請處理到檔案結束。
每組資料,第一行2個整數n、m,表示地的尺寸。
之後n行,每行m個英文字母,大寫的T表示這裡種有蘋果樹,小寫i表示這裡放有iPhone,其他字元表示這裡什麼也沒有。
之後1行,一個整數Q,表示小W詢問的次數。
之後Q行,包含3個整數,可能有以下情況:
    1 i1 j1 表示小W想知道第i1行第j1列的方塊中有什麼東西。
    2 i1 i2 表示亮亮交換了第i1行與第i2行。
    3 j1 j2 表示亮亮交換了第j1列與第j2列。
對於100%的資料,有1<=n*m<=106,1<=Q<=105,1<=i1, i2<=n,1<=j1, j2<=m。

輸出

對於每組資料,輸出以一行“Case #x:”開頭,x表示資料的編號,從1開始。
對於小W的每次格式為“1 i j”的詢問,輸出一行。若方塊中是蘋果樹,輸出"Tree"。若方塊中是iPhone,輸出“Phone”。若方塊中什麼也沒有,輸出“Empty”。

--本文

雖然是區間修改,求1點,不過由於每次只是交換兩行或兩列,並不需要什麼樹狀數組。

考慮一下,每次交換i1和i2行的時候

實際上就是原來的i1行變成了i2行(交換列同理)

所以只需要通過建立映射(大概吧,也不知道怎麼形容)即可

每次交換的時候,改變一下映射值

#include <stdio.h>int main(){    int m,n;        int total = 0;    while (scanf("%d %d",&n,&m) != EOF) {        total ++;         printf("Case #%d:\n",total);        char field[n+1][m+1];        int nown[n+1],nowm[m+1];        int i,j;        for (i=1;i<=m;i++) nowm[i] = i;        for (i=1;i<=n;i++){            char row[1000001];            nown[i] = i;            scanf("%s",row);            for (j=1;j<=m;j++){                field[i][j] = row[j-1];                }        }        int q;        scanf("%d",&q);        for (i=1;i<=q;i++){            int order,i1,i2;            scanf("%d %d %d",&order,&i1,&i2);            if (order == 1){                char now = field[nown[i1]][nowm[i2]];                if (now == ‘T‘){                    printf("Tree\n");                }                else if (now == ‘i‘){                    printf("Phone\n");                }                else printf("Empty\n");            }            if (order == 2){                int temp = nown[i1];                nown[i1] = nown[i2];                nown[i2] = temp;             }            if (order == 3){                int temp = nowm[i1];                nowm[i1] = nowm[i2];                nowm[i2] = temp;            }        }    }    return 0;    }

 

XidianOJ 1001 又是蘋果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.