原创 P5304 [GXOI/GZOI2019] 旅行者

Mikuuu 準備投身於ACM的潮流中,失蹤人口迴歸啦! 這個題目的思路還是非常有趣的,因爲我們可以注意到,兩個可能成爲答案興趣點之間的最短路不應該經過了第三個點,如果經過了,顯然和第三個點之間的最短路會更小,則原來的兩個點之間不應該成爲答

原创 CF1917 C Watering an Array

Link 首先我們研究全是0的情況,顯然的,每次操作2最多可以得到1分。 那麼顯然的,不如直接一次操作一一次操作二,這樣是最優的。 然後再研究初始數組,很難用很快的方式得到應該從什麼時候開始第一次操作二。 不過可以注意到,第一次操作2最多可

原创 CF 1904 D. Set To Max

Easy Version Hard Version Hard Version的做法可以從Easy Version 用數據結構優化得到。 首先我們想一下,什麼情況需要進行操作?顯然是\(a_i!=b_i\)的時候,並且當\(a_i>b_i\)

原创 牛客挑戰賽71 B樹上博弈

Link 一道很有意思的min-max博弈 用樹上dp來解決,那麼顯然的,當前節點是誰取的會影響答案,\(dp2_{i,j}\)表示取當前階段,被Alice/Bob取走的結果, 並且這個題是取子樹上任意的節點,那麼還需要保存子樹上的信息,故

原创 項鍊遊戲

[無link] 對於該策略證明: 1 如果只比較一次,顯然 2 如果比較了k次,證明兩個串前k個元素是相同的,第k+1個元素不同,那麼我選擇1-k-1中任何一個位置開始比較,答案都不會更優,因爲如果新串第K+1個元素更大,那麼顯然K+1個元

原创 牛客小白月賽80C/D又放學辣

C 這麼小的數據範圍,想必胡搞就可以了。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int

原创 對於擴展歐幾里得算法的小總結

對於不定方程\(ax+by=c\)有正數解的充分必要條件是\(c|gcd(a,b)\),證明請看裴蜀定理 那麼顯然的,我們只要能解出方程\(ax+by=gcd(a,b)\)然後把解\(\times \frac{c}{gcd(a,b)}\)即

原创 牛客練習賽117 C&D

Link C 分類討論貪心 顯然的,正面考慮怎麼拼團會很麻煩,所以我們從另一個視角考慮,求出可能的最大團數,然後看一看怎麼踢人能夠使落單的最少。 當K爲偶數的時候,顯然最大團數就是\((n+m*2)/k\),而當K爲奇數的時候,顯然男生抱團

原创 雜碎的小知識

sscanf(字符串地址,””,存儲位置),可以從字符串中格式化讀入。 strstr,可以在字符串中找字符串,返回地址(被找的,要找的) strcat,字符串中加內容(被加的,加的) fgets()會把字符串末尾的\n存進去,gets不會

原创 格雷碼生成小總結

生成格雷碼有三種方法, 一:首先是從全0格雷碼開始,依次執行 1.將最低位反轉 2.將最右邊的1左邊的第一位反轉 二:遞歸鏡像構造 1:1位格雷碼是 0,1 2:$(n+1)$位格雷碼中的前 $2^n$個碼字等於$n$位格雷碼的碼字,按順

原创 CF1886D Monocarp and the Set

Link 此題目可以從兩個方向考慮,正着和倒着,倒着考慮比較容易,首先把所有的數放到一塊,如果是'<'或者'>',就是去掉最左邊或者最右邊的數,這樣顯然只有一種可能,答案不變。 如果是'?',那麼顯然可以去掉中間的任意一個,所以答案就是\(

原创 平衡進制問題/對稱的2k+1進制問題

定義平衡\(2k+1\)進制數碼爲\(-k,-(k-1),,,0,,,k-1,k\),請求出一個十進制數的\(2k+1\)進製表示。 對於該問題,解決的思路是首先算出普通的\(2k+1\)進制下的表示,然後分別對每一位進行考慮. 1:這一位

原创 ABC323

Link A 很簡單 B sort+struct+cmp函數 C 排個序舉行 D 顯然的,我們可以從最小的開始進行合併,合併的越多越好。但是可以注意到\(S_i\)的跨度相當的大,這怎麼辦呢? 我們可以使用STl中的map來解決,每一次取出

原创 P2602 [ZJOI2010] 數字計數&HDU 2089 (數位dp)

luogu HDU 最近在複習數位dp 數位dp,就是在一些計數問題的時候按照一位一位的順序依次計算,通常可以採用記憶化搜索的方式 這兩道題就是很典型的數位dp 數位dp通常要記錄是不是頂着上限,有沒有前導零,到了哪一位以及一些特殊的條件要

原创 P3147 [USACO16OPEN] 262144 P

Link 這個題有一個很特殊的點,就是最大值不會超過28,可以想一下最多可以合併多少次。 那麼常規的區間dp是不能使用的,就要採用特殊的形式, 因爲很難的確定應該怎麼轉移,那麼就換一種思路,轉移的對象變成另外一個端點。 \(dp_{i,j}