中學就聽說過抽屜原理,可惜一直沒機會見識,現在這題有鴿籠原理的結論,但其實知不知道鴿籠原理都可以做
先總結一下鴿籠原理:
有n+1件或n+1件以上的物品要放到n個抽屜中,那麼至少有乙個抽屜裡有兩個或兩個以上物品。
如果你知道這個結論:
a1,a2,a3...am是正整數序列,至少存在整數k和r,1<=k
證明比較簡單:
sk表示前k個數之和,
(1)若sk%m==0,前k個數就是m的倍數
(2)如果sn與st模m同餘,那麼從t+1到n這些數之和模m等於0.
即使你不知道這個結論,dp厲害的話,應該能想到用 前n項的和 去思考的思想
有這個結論知必有解。
貼**之前,在總結一下鴿籠原理的結論:
推論1:m只鴿子,n個籠,則至少有乙個鴿籠裡有不少於[(m-1)/n]+1只鴿子。
推論2:若取n*(m-1)+1個球放進n個盒子,則至少有1個盒子有m個球。
推論3:若m1,m2,...mn是n個正整數,而且(m1+m2+...+mn)/n>r-1
則m1,m2,...mn中至少有乙個數不小於r
直接貼**吧:沒啥解釋的,700多ms,當時judge的時候我還害怕tle
#include
#include
using namespace std;
#define n 100002
int sum[n],pos[n];
int main()
for(i=1;i
Bootstrap 3 3 7學習筆記3
強調一段文字有啥選擇呢?1.lead lead media min width 768px 可見.lead類的文字還是挺大的!body預設的大小才14px。知識點 符號在css裡面是啥?答 named as at rule 是一種告知css在特殊情況下對某些格式進行變化的方式。它有很多具體例項 ch...
LeetCode 第337題打家劫舍 III
題目描述 在上次打劫完一條街道之後和一圈房屋後,小偷又發現了乙個新的可行竊的地區。這個地區只有乙個入口,我們稱之為 根 除了 根 之外,每棟房子有且只有乙個 父 房子與之相連。一番偵察之後,聰明的小偷意識到 這個地方的所有房屋的排列類似於一棵二叉樹 如果兩個直接相連的房子在同一天晚上被打劫,房屋將自...
LeetCode337 樹 打家劫舍 III
遞迴求解 本質上就是間隔遍歷 把問題直接簡化成兩個部分 偷父節點。那就是隔行遍歷左右節點,因為不能偷連續的節點。但是注意,隔行遍歷一定要判斷有無空指標!不偷父節點。可以畫幾個示意圖看看,不偷父節點的話就是父節點的左子樹 右子樹的值,依次加下去 最後返回乙個最大的金額 class solution i...