給定 \(n\) 個數,要求從其中選出若干個數使得其和是 \(n\) 的倍數。容易證明一定能找到。
如果有乙個數是 \(n\) 的倍數則直接輸出,否則,考慮求出字首和序列並 \(\bmod\ n\),設為 \(s\),則 \(s[0],s[1],...,s[n]\) 中一定有兩個相同的(鴿巢原理),設為 \(s[l],s[r]\),則 \([l+1,r]\) 區間一定滿足題意。
#include using namespace std;
#define int long long
const int n = 1000505;
int n,a[n],s[n];
signed main()
else
}for(int i=a1+1;i<=a2;i++)
}system("pause");
}
LOJ 皇宮看守
題目鏈結 點加權的最小覆蓋 題目說的很清楚,用最少的點覆蓋所有的點。題目給出的是個樹,所以可以用動態規劃來解決。給出如下定義 f i,0 表示i點不放,i可以被父親節點觀察到 f i,1 表示i點不放,i可以被兒子節點觀察到 f i,2 表示i點放,在i處設定警衛 轉移如下 1 由f i,0 定義可...
loj冪方分解
問題描述 任何乙個正整數都可以用2的冪次方表示。例如 137 27 23 20 同時約定方次用括號來表示,即ab 可表示為a b 由此可知,137可表示為 2 7 2 3 2 0 進一步 7 22 2 20 21用2表示 3 2 20 所以最後137可表示為 2 2 2 2 2 0 2 2 2 0 ...
SOL 星際迷航 LOJ
分 類 大 討 論 給定一棵 n 個點的樹,將其複製 m 次得到 m 1 棵樹,依次編號為 0 sim m 記編號為 i 的樹的節點 j 為 i,j 令所有 m 1 棵樹上的邊都是雙向邊,另外對於每個 i in 1,m 指定 a i,b i 連一條有向邊 i 1,a i to i,b i 這樣得到乙...