Posted on 2009-11-19 00:16
王之昊 閱讀(160)
評論(0) 編輯 收藏 引用
這場很悲劇的是tc的服務器掛了.有人說這應該是tc頭一回吧
結果是這場比賽沒做成.今天把題目再看了一遍,這場的主題是比賽的計分.
250分比賽的規則是勝者得2分,負者得0分,平局各得1分.有n(n<=5)個隊,每兩個隊之間要打兩場比賽.之后會有一個積分榜.那么求有多少種積分榜榜首為m.注意只關心那個序列,不關心誰排第一,誰排第二.
由于只有5個隊,所以枚舉每兩個隊的比分情況(有三種2:0 , 1:1, 0:2)大牛們清一色的dfs.果然dfs寫的直觀簡潔
500分比賽的規則是勝者得w分,負者不得分,平局各得d分.每兩隊之間可以比賽任意場次.然后給你一個n個隊比賽的最終積分榜。讓你判斷這個積分榜是否合法。如果合法。求出最少比賽場次。
這道題是div2的第一題的加強版(那題中w=2,d=1)。咋看一下沒啥想法。只知道單看每個隊的分數fi必須滿足 w * x + d * y = fi 然后很自然的會先把最少的w減掉(因為w可以任意構造,在其他隊加0不影響),如果這步都辦不到,顯然不合法。那么剩下的分數就都能整除d 了。我們先考慮剩下的 d 都是實打實的平局。怎么判它是否合法 ? 排個序,如果第一大的比剩下所有的總和還要大,顯然不行。否則就能夠構造出一種可行方法。
這里簡單證明一下, 換一種說法。有n個隊任意比賽,給出每個隊最終比賽場次。問數據是否真實。
假設 n個隊 的比賽場次 a1 >= a2 >= a3... >= an sum = a1 + a2+..+an
a1 <= sum - a1 ; sum必為偶數
我們要證明滿足上面的條件的數據都可能是真的。現在來反證
假設我們找到一個sum值最小的反例。sum >= 1
0 如果只有一個隊,違背了上面假設的 a1 <= sum - a1,所以不會出現這種情況
1 如果只有兩個隊 a1 >= a2 && a1 <= a2 所以 a1 == a2 所以兩個隊也不會出現反例
2 如果有三個隊以上, 考慮前三個 a1, a2, a3
X如果 a2 > a3. 那么 a1-1, a2-1, a3, ... an將會是一個更小的反例. 矛盾
Y如果 a1 > a2 = a3, 那么 a1-1, {a2-1, a3, ... ,an}將會是一個更小的反例, 矛盾{..}需要重新排序
Z如果 a1 = a2 = a3, 那么 a1 ,{a2-1, a3-1, .... an}將會是一個更小的反例, 矛盾,可以證明原sum >= 2*a + 2
證的很羅嗦,希望早日看到 tc 的 報告出來
然后接下去就是枚舉到底有多少平局。從剛剛得到的一個最基本的局面開始枚舉。我們可以知道幾場平局==幾場勝局的分,每次減掉一個最單元的這個分開始枚舉,取一個最優的即可
1000分一如繼往的不會