妞妞的問題

2021-09-26 14:29:49 字數 1959 閱讀 9644

1.【題目描述】

妞妞公主新得到一塊白色棋盤。這塊棋盤共有n行m列,任意相鄰的兩個格仔都是不同的顏色(黑或白),座標位(1,1)的格仔是白色的。

這一天牛牛來看妞妞公主時,牛牛公主正望著棋盤發呆。牛牛看妞妞公主悶悶不樂的樣子,便對妞妞公主說:「只要你告訴我n和m,我能馬上算出黑色方塊的白色方塊的數量。」

「這太簡單了。」妞妞公主想了一會,「我會在這n行m列中選擇乙個左下角座標位(x0,y0)。右上角座標為(x1,y1)的矩形,把這個矩形裡的共(x1-x0+1)*(y1-y0+1)個方塊全部塗白。你還能馬上算出黑色方塊和白色方塊的數量嗎?」

「這太簡單了。」牛牛自信一笑,「你還可以在執行塗白操作後再選擇乙個左下角座標為(x2,y2),右上角座標為(x3,y3)的矩形,把這個矩形裡的方塊全部塗黑。我依然能馬上算出黑色方塊和白色方塊的數量。」

妞妞公主終於驚訝地睜大了眼睛,於是丟擲了她的t次提問。

聰明的牛牛當然會做了,但是他想把這個問題交給你,請幫牛牛算出每次提問棋盤的黑白方塊數目吧。

輸入描述:

第一行乙個整數t,表示妞妞公主一共提問了t次。

接下來3t行,

第(1+3i)行兩個整數n,m。表示第i次提問時棋盤的大小;

第(2+3i)行四個整數x0,x1,y0,y1。表示第i次提問時塗白操作選取的兩個座標。

第(3+3i)行四個整數x2,y2,x3,y3。表示第i次提問時塗黑操作選取的兩個座標。

1<=t<=10000,1<=x<=n<=1000000000,1<=y<=m<=1000000000,x0<=x1,y0<=y1,x2<=x3,y2<=y。

輸出描述:

共t行,每行兩個整數分別表示白色方塊的數量和黑色方塊的數量。

輸入樣例:

31 3

1 1 1 3

1 1 1 3

3 31 1 2 3

2 1 3 3

3 42 1 2 4

1 2 3 3

輸出樣例:

0 33 6

4 82.【**】(具體分析見**注釋)

/*

妞妞的問題

31 3

1 1 1 3

1 1 1 3

3 31 1 2 3

2 1 3 3

3 42 1 2 4

1 2 3 3

*/#includeusing namespace std;

long long x[8], y[8]; //每次選擇的座標

int main()

if ((x[0] + y[0]) & 1) //選擇的第乙個區域,如果左下角是乙個黑色方格

else

white += d; //白色方塊增加d

black -= d; //黑色方塊減少d

if ((x[2] + y[2]) & 1) //選擇的第二個區域,如果左下角是乙個黑色方格

else

white -= d; //白色方塊減少d

black += d; //黑色方塊增加d

/*計算重疊部分*/

a = max(x[0], x[2]);

b = max(y[0], y[2]);

c = min(x[1], x[3]);

d = min(y[1], y[3]);

if (c < a || d < b) //無重複區域

else

else

white -= e; //白色方塊減少d(減去重複範圍內白色方塊增加的數目)

black += e; //黑色方塊增加d

} printf("%lld %lld\n", white, black);

} return 0;

}

3.【執行結果】

妞妞打車之最多的硬幣

妞妞參加完google girl hackathon之後,打車回到了牛家莊。妞妞需要支付給計程車司機車費s元。妞妞身上一共有n個硬幣,第i個硬幣價值為p i 元。妞妞想選擇盡量多的硬幣,使其總價值足以支付s元車費 即大於等於s 但是如果從妞妞支付的這些硬幣中移除乙個或者多個硬幣,剩下的硬幣總價值還是...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

問題的問題

有些問題是人出的,或者人造成的 而有些問題是 上帝 出的。我們可以說成是人題和天題。人題一般都是可以解決的,而天題,人根本就找不到答案。人題的解決不會給我們帶來快樂,而天題帶給我們的只是苦惱和困惑。人從出生到死亡,一直都處於迷失和困惑中,因為大部分的東西他都不知道是怎麼回事。是的,他可以不知道,同樣...