第四屆藍橋杯決賽 A組 供水設施 dp 拓撲 列舉

2021-07-12 02:34:28 字數 1567 閱讀 4219

n條單向輸水線(有水幫浦動力),將水從南側的水塔引到北側對應的居民點。

我們不妨將居民點和水塔都看做平面上的點,居民點座標為(1,k)~(n,k),水塔為(1,0)~(n,0)。

除了n條縱向輸水線以外,還有m條單向的橫向輸水線,連線(xi,yi)和(xi,(yi)+1)或者(xi,yi)和(xi,(yi)-1)。前者被稱為向右的水路,而後者是向左的。不會有兩條水路重疊,即便它們方向不同。

布局的示意圖如:上圖所示。

顯然,每個水塔的水都可以到達若干個居民點(而不僅僅是對應的那個)。例如上圖中,4號水塔可以到達3、4、5、6四個居民點。

現在pear決定在此基礎上,再修建一條橫向單項輸水線。為了方便考慮,pear認為這條水路應當是自左向右的,也就是連線了乙個點和它右側的點(例如上圖中連線5和6兩個縱線的橫向水路)。

pear的目標是,修建了這條水路之後,能有盡可能多對水塔和居民點之間能到達。換句話說,設修建之後第i個水塔能到達ai個點,你要最大化a1+a2+...+an。

根據定義,這條路必須和x軸平行,但y座標不一定要是整數。注意:雖然輸入中沒有重疊的水路,但是你的方案可以將新修的輸水線路與已有的水路重疊。

【輸入資料】

輸入第一行包含三個正整數n,m,k,含義如題面所述:n是縱向線數,m橫向線數,k是居民點縱座標。

接下來m行,每行三個整數。前兩個正整數xi yi表示水路的起點座標;

1<=xi<=n,0【輸出資料】

輸出一行。是乙個正整數,即:題目中要求的最大化的a1+a2+…+an。

【輸入樣例1】

4 3 2

1 1 1

3 1 0

3 1 1

【輸出樣例1】

11【輸入樣例2】

7 9 4

2 3 0

7 2 0

6 3 1

6 1 0

2 1 1

3 3 1

5 2 0

2 2 1

7 1 0

【輸出樣例2】

21題目難度在於資料規模。 首先不難發現:修建水渠的肯定是 y 座標整點。因此對於 20%的資料,暴力列舉哪一 個位置修建水渠即可。接下來我們需要觀察出,這是乙個平面圖,因而每個點能到達的居 民點一定是連續的一段(因為有南北向水渠所以這一點比較顯然)。接下來,如果把 n 個水塔能到達的居民點區間都求出來,則區間是單調不降的。這同樣取決於平面圖的性質。 由於沒有(雙向)重邊,所以圖肯定是乙個拓撲圖。要想得到每個水塔能到達哪些居 民點,只要把拓撲圖構出來,並按拓撲序進行 dp(得到每個點能到達的最左最右點即可)。 接下來列舉那條新增的邊。這條邊肯定是加在某個「關鍵點」向右的——所謂關鍵點就是 所有居民點、路的端點、水塔。列舉它一共有 o(m+n)種情況。這條路必然把原來的乙個點 向右的距離擴充套件了一段。接下來,假設這個點能由[l,r]這一段居民點到達(這裡易知也 是連續的,可以在反圖上 dp 求出),那麼就相當於這些區間的右端點都和某個數取 max。 因為右端點有序,所以很容易維護。其它之前提到的操作都可以用 stl 解決。 整個演算法複雜度為 o(nlogn)。用 o(n^2)等較劣的演算法直接實現可得 60 分或 40 分。

然而沒有**。

藍橋杯第四屆總決賽

a 村的元宵節燈會上有一迷題 0 1 2 0 3 4 5 3 1 請猜謎 請猜謎 請邊賞燈邊猜 小明想,一定是每個漢字代表乙個數字,不同的漢字代表不同的數字。請你用計算機按小明的思路算一下,然後提交 請猜謎 三個字所代表的整數即可。請嚴格按照格式,通過瀏覽器提交答案。注意 只提交乙個3位的整數,不要...

藍橋杯 第四屆c c B組決賽 高僧鬥法

如果每一種大小的子堆的個數都是偶數,我們就稱nim取子遊戲是平衡的,而對應位相加是偶數的稱為平衡位,否則稱為非平衡位。因此,nim取子遊戲是平衡的,當且僅當 as bs ms 是偶數 a1 b1 m1 是偶數 a0 b0 m0是偶數 注 這個地方沒有太懂,目前理解的是總共有偶數個nimm堆對應的數字...

2013第四屆藍橋杯C C B組

大數學家高斯有個好習慣 無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如 4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人 日子又過去一天,還有多少時光可以用於浪費呢?高斯出生於 1777年...