cf 1358C Celex Update(看似是組合問題的思維題)

題目鏈接

昨天的cf題,差點因爲這道題翻車了,幸好後面力挽狂瀾XD。

一看這道題,一猜,路徑上的數值之和肯定都是不同的,一寫,自信一交,等待1a,wa on pretest 2,gnls,然後找了15分鐘規律猜了個結論過了。

題解的思路是這樣的:
把他想象成一個(借用cf tutorial裏的圖)這個樣子的一個東西,初始狀態是路徑的和最小的那個狀態,你要做的只是每次把他右上角的那個角給他按下去,就是把路徑的和增加了,這樣就能保證沒有重複,可以看出答案就是 dx * dy + 1。

#include <bits/stdc++.h>

#define i64 long long

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.precision(10);
    cout << fixed;
#ifdef LOCAL_DEFINE
    freopen("input.txt", "r", stdin);
#endif

    cin >> tc;
    while (tc--) {
        cin >> x1 >> y1 >> x2 >> y2;
        i64 dx = x2 - x1;
        i64 dy = y2 - y1;
        i64 ans = dx * dy + 1;
        cout << ans << '\n';
    }

#ifdef LOCAL_DEFINE
    cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章